Refactor Conversation model (#134)
* Add Conversation factory with dependent factories * Include FactoryBot methods in rspec config * Add unit tests for public methods of Conversation model * Move Current model into a separate file in lib folder * Disable Metrics/BlockLength rule for db/migrate and spec folders * Get rid of global $dispatcher variable * Create Message#unread_since scope * Refactor callback methods in Conversation model * Create Conversations::EventDataPresenter * Add translation keys for activity messages * Add pry-rails gem * Refactor Conversation#notify_status_change * Add mock_redis for test env
This commit is contained in:
committed by
Sojan Jose
parent
43e54a7bfb
commit
4768aca484
7
spec/factories/accounts.rb
Normal file
7
spec/factories/accounts.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :account do
|
||||
sequence(:name) { |n| "Account #{n}" }
|
||||
end
|
||||
end
|
||||
9
spec/factories/channel_widget.rb
Normal file
9
spec/factories/channel_widget.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :channel_widget, class: 'Channel::Widget' do
|
||||
sequence(:website_name) { |n| "Example Website #{n}" }
|
||||
sequence(:website_url) { |n| "https://example-#{n}.com" }
|
||||
account
|
||||
end
|
||||
end
|
||||
16
spec/factories/contacts.rb
Normal file
16
spec/factories/contacts.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :contact do
|
||||
sequence(:name) { |n| "Widget #{n}" }
|
||||
sequence(:email) { |n| "widget-#{n}@example.com" }
|
||||
phone_number { "+123456789011" }
|
||||
source_id { rand(100) }
|
||||
chat_channel { "chat_channel" }
|
||||
account
|
||||
inbox
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
24
spec/factories/conversations.rb
Normal file
24
spec/factories/conversations.rb
Normal file
@@ -0,0 +1,24 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :conversation do
|
||||
status { 'open' }
|
||||
display_id { SecureRandom.uuid }
|
||||
user_last_seen_at { Time.current }
|
||||
agent_last_seen_at { Time.current }
|
||||
locked { false }
|
||||
|
||||
factory :complete_conversation do
|
||||
after(:build) do |conversation|
|
||||
conversation.account ||= create(:account)
|
||||
conversation.inbox ||= create(
|
||||
:inbox,
|
||||
account: conversation.account,
|
||||
channel: create(:channel_widget, account: conversation.account)
|
||||
)
|
||||
conversation.sender ||= create(:contact, account: conversation.account)
|
||||
conversation.assignee ||= create(:user)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
9
spec/factories/inboxes.rb
Normal file
9
spec/factories/inboxes.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :inbox do
|
||||
account
|
||||
association :channel, factory: :channel_widget
|
||||
name { "Inbox" }
|
||||
end
|
||||
end
|
||||
14
spec/factories/messages.rb
Normal file
14
spec/factories/messages.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :message do
|
||||
content { 'Message' }
|
||||
status { 'sent' }
|
||||
message_type { 'incoming' }
|
||||
fb_id { SecureRandom.uuid }
|
||||
account
|
||||
inbox
|
||||
conversation
|
||||
user
|
||||
end
|
||||
end
|
||||
14
spec/factories/users.rb
Normal file
14
spec/factories/users.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
FactoryBot.define do
|
||||
factory :user do
|
||||
provider { 'email' }
|
||||
uid { SecureRandom.uuid }
|
||||
name { 'John Smith' }
|
||||
nickname { 'jsmith' }
|
||||
email { 'john.smith@example.com' }
|
||||
role { 'agent' }
|
||||
password { "password" }
|
||||
account
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user