5c161e0fef
Clean up the Inbox settings page component as the logic was growing complex. - Moved subpages like collaborators and configuration to new components - Moved Assignment settings to the collaborators tab - Introduced a new inbox seeder to quickly preview setting pages of all inbox types when in development
89 lines
3.2 KiB
Ruby
89 lines
3.2 KiB
Ruby
## Class to generate sample data for a chatwoot test Account.
|
|
############################################################
|
|
### Usage #####
|
|
#
|
|
# # Seed an account with all data types in this class
|
|
# Seeders::AccountSeeder.new(account: account).seed!
|
|
#
|
|
# # When you want to seed only a specific type of data
|
|
# Seeders::AccountSeeder.new(account: account).seed_canned_responses
|
|
# # Seed specific number of objects
|
|
# Seeders::AccountSeeder.new(account: account).seed_canned_responses(count: 10)
|
|
#
|
|
############################################################
|
|
|
|
class Seeders::AccountSeeder
|
|
pattr_initialize [:account!]
|
|
|
|
def seed!
|
|
seed_canned_responses
|
|
seed_inboxes
|
|
end
|
|
|
|
def seed_canned_responses(count: 50)
|
|
count.times do
|
|
account.canned_responses.create(content: Faker::Quote.fortune_cookie, short_code: Faker::Alphanumeric.alpha(number: 10))
|
|
end
|
|
end
|
|
|
|
def seed_inboxes
|
|
seed_website_inbox
|
|
seed_facebook_inbox
|
|
seed_twitter_inbox
|
|
seed_whatsapp_inbox
|
|
seed_sms_inbox
|
|
seed_email_inbox
|
|
seed_api_inbox
|
|
seed_telegram_inbox
|
|
seed_line_inbox
|
|
end
|
|
|
|
def seed_website_inbox
|
|
channel = Channel::WebWidget.create!(account: account, website_url: 'https://acme.inc')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Website')
|
|
end
|
|
|
|
def seed_facebook_inbox
|
|
channel = Channel::FacebookPage.create!(account: account, user_access_token: 'test', page_access_token: 'test', page_id: 'test')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Facebook')
|
|
end
|
|
|
|
def seed_twitter_inbox
|
|
channel = Channel::TwitterProfile.create!(account: account, twitter_access_token: 'test', twitter_access_token_secret: 'test', profile_id: '123')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Twitter')
|
|
end
|
|
|
|
def seed_whatsapp_inbox
|
|
channel = Channel::Whatsapp.create!(account: account, phone_number: '+123456789')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Whatsapp')
|
|
end
|
|
|
|
def seed_sms_inbox
|
|
channel = Channel::Sms.create!(account: account, phone_number: '+123456789')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme SMS')
|
|
end
|
|
|
|
def seed_email_inbox
|
|
channel = Channel::Email.create!(account: account, email: 'test@acme.inc', forward_to_email: 'test_fwd@acme.inc')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Email')
|
|
end
|
|
|
|
def seed_api_inbox
|
|
channel = Channel::Api.create!(account: account)
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme API')
|
|
end
|
|
|
|
def seed_telegram_inbox
|
|
# rubocop:disable Rails/SkipsModelValidations
|
|
Channel::Telegram.insert({ account_id: account.id, bot_name: 'Acme', bot_token: 'test', created_at: Time.now.utc, updated_at: Time.now.utc },
|
|
returning: %w[id])
|
|
channel = Channel::Telegram.find_by(bot_token: 'test')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Telegram')
|
|
# rubocop:enable Rails/SkipsModelValidations
|
|
end
|
|
|
|
def seed_line_inbox
|
|
channel = Channel::Line.create!(account: account, line_channel_id: 'test', line_channel_secret: 'test', line_channel_token: 'test')
|
|
Inbox.create!(channel: channel, account: account, name: 'Acme Line')
|
|
end
|
|
end
|