Chore: API Improvements (#3469)

This commit is contained in:
Sojan Jose 2021-11-27 00:48:46 +05:30 committed by GitHub
parent 55843c5bad
commit add004a56e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 55 additions and 13 deletions

View file

@ -57,7 +57,7 @@ Metrics/BlockLength:
- db/schema.rb - db/schema.rb
Metrics/ModuleLength: Metrics/ModuleLength:
Exclude: Exclude:
- lib/woot_message_seeder.rb - lib/seeders/message_seeder.rb
Rails/ApplicationController: Rails/ApplicationController:
Exclude: Exclude:
- 'app/controllers/api/v1/widget/messages_controller.rb' - 'app/controllers/api/v1/widget/messages_controller.rb'

View file

@ -33,7 +33,7 @@ class Api::V1::Accounts::CannedResponsesController < Api::V1::Accounts::BaseCont
def canned_responses def canned_responses
if params[:search] if params[:search]
Current.account.canned_responses.where('short_code ILIKE ?', "#{params[:search]}%") Current.account.canned_responses.where('short_code ILIKE :search OR content ILIKE :search', search: "%#{params[:search]}%")
else else
Current.account.canned_responses Current.account.canned_responses
end end

View file

@ -0,0 +1,7 @@
class AgentBotPresenter < SimpleDelegator
def access_token
return if account_id.blank?
Current.account.id == account_id ? super&.token : nil
end
end

View file

@ -1 +1 @@
json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: @agent_bot json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(@agent_bot)

View file

@ -1,3 +1,3 @@
json.array! @agent_bots do |agent_bot| json.array! @agent_bots do |agent_bot|
json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: agent_bot json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(agent_bot)
end end

View file

@ -1 +1 @@
json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: @agent_bot json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(@agent_bot)

View file

@ -1 +1 @@
json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: @agent_bot json.partial! 'api/v1/models/agent_bot.json.jbuilder', resource: AgentBotPresenter.new(@agent_bot)

View file

@ -3,3 +3,4 @@ json.name resource.name
json.description resource.description json.description resource.description
json.outgoing_url resource.outgoing_url json.outgoing_url resource.outgoing_url
json.account_id resource.account_id json.account_id resource.account_id
json.access_token resource.access_token if resource.access_token.present?

View file

@ -3,3 +3,4 @@ json.name resource.name
json.description resource.description json.description resource.description
json.outgoing_url resource.name json.outgoing_url resource.name
json.account_id resource.account_id json.account_id resource.account_id
json.access_token resource.access_token.token

View file

@ -60,20 +60,20 @@ unless Rails.env.production?
) )
# sample email collect # sample email collect
WootMessageSeeder.create_sample_email_collect_message conversation Seeders::MessageSeeder.create_sample_email_collect_message conversation
Message.create!(content: 'Hello', account: account, inbox: inbox, conversation: conversation, message_type: :incoming) Message.create!(content: 'Hello', account: account, inbox: inbox, conversation: conversation, message_type: :incoming)
# sample card # sample card
WootMessageSeeder.create_sample_cards_message conversation Seeders::MessageSeeder.create_sample_cards_message conversation
# input select # input select
WootMessageSeeder.create_sample_input_select_message conversation Seeders::MessageSeeder.create_sample_input_select_message conversation
# form # form
WootMessageSeeder.create_sample_form_message conversation Seeders::MessageSeeder.create_sample_form_message conversation
# articles # articles
WootMessageSeeder.create_sample_articles_message conversation Seeders::MessageSeeder.create_sample_articles_message conversation
# csat # csat
WootMessageSeeder.create_sample_csat_collect_message conversation Seeders::MessageSeeder.create_sample_csat_collect_message conversation
CannedResponse.create!(account: account, short_code: 'start', content: 'Hello welcome to chatwoot.') CannedResponse.create!(account: account, short_code: 'start', content: 'Hello welcome to chatwoot.')
end end

View file

@ -0,0 +1,27 @@
## 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
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
end

View file

@ -1,4 +1,4 @@
module WootMessageSeeder module Seeders::MessageSeeder
def self.create_sample_email_collect_message(conversation) def self.create_sample_email_collect_message(conversation)
Message.create!( Message.create!(
account: conversation.account, account: conversation.account,

View file

@ -25,6 +25,8 @@ RSpec.describe 'Agent Bot API', type: :request do
expect(response).to have_http_status(:success) expect(response).to have_http_status(:success)
expect(response.body).to include(agent_bot.name) expect(response.body).to include(agent_bot.name)
expect(response.body).to include(global_bot.name) expect(response.body).to include(global_bot.name)
expect(response.body).to include(agent_bot.access_token.token)
expect(response.body).not_to include(global_bot.access_token.token)
end end
end end
end end
@ -46,6 +48,7 @@ RSpec.describe 'Agent Bot API', type: :request do
expect(response).to have_http_status(:success) expect(response).to have_http_status(:success)
expect(response.body).to include(agent_bot.name) expect(response.body).to include(agent_bot.name)
expect(response.body).to include(agent_bot.access_token.token)
end end
it 'will show a global agent bot' do it 'will show a global agent bot' do
@ -56,6 +59,7 @@ RSpec.describe 'Agent Bot API', type: :request do
expect(response).to have_http_status(:success) expect(response).to have_http_status(:success)
expect(response.body).to include(global_bot.name) expect(response.body).to include(global_bot.name)
expect(response.body).not_to include(global_bot.access_token.token)
end end
end end
end end
@ -113,6 +117,7 @@ RSpec.describe 'Agent Bot API', type: :request do
expect(response).to have_http_status(:success) expect(response).to have_http_status(:success)
expect(agent_bot.reload.name).to eq('test_updated') expect(agent_bot.reload.name).to eq('test_updated')
expect(response.body).to include(agent_bot.access_token.token)
end end
it 'would not update the agent bot when agent' do it 'would not update the agent bot when agent' do
@ -134,6 +139,7 @@ RSpec.describe 'Agent Bot API', type: :request do
expect(response).to have_http_status(:not_found) expect(response).to have_http_status(:not_found)
expect(agent_bot.reload.name).not_to eq('test_updated') expect(agent_bot.reload.name).not_to eq('test_updated')
expect(response.body).not_to include(global_bot.access_token.token)
end end
end end
end end