chore: Add a check for defined labels in SDK API (#1259)
This commit is contained in:
parent
cdd428f503
commit
0deb1af852
2 changed files with 24 additions and 3 deletions
|
@ -1,6 +1,6 @@
|
||||||
class Api::V1::Widget::LabelsController < Api::V1::Widget::BaseController
|
class Api::V1::Widget::LabelsController < Api::V1::Widget::BaseController
|
||||||
def create
|
def create
|
||||||
if conversation.present?
|
if conversation.present? && label_defined_in_account?
|
||||||
conversation.label_list.add(permitted_params[:label])
|
conversation.label_list.add(permitted_params[:label])
|
||||||
conversation.save!
|
conversation.save!
|
||||||
end
|
end
|
||||||
|
@ -19,6 +19,11 @@ class Api::V1::Widget::LabelsController < Api::V1::Widget::BaseController
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def label_defined_in_account?
|
||||||
|
label = @account.labels.find_by(title: permitted_params[:label])
|
||||||
|
label.present?
|
||||||
|
end
|
||||||
|
|
||||||
def permitted_params
|
def permitted_params
|
||||||
params.permit(:id, :label, :website_token)
|
params.permit(:id, :label, :website_token)
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,8 +12,24 @@ RSpec.describe '/api/v1/widget/labels', type: :request do
|
||||||
describe 'POST /api/v1/widget/labels' do
|
describe 'POST /api/v1/widget/labels' do
|
||||||
let(:params) { { website_token: web_widget.website_token, label: 'customer-support' } }
|
let(:params) { { website_token: web_widget.website_token, label: 'customer-support' } }
|
||||||
|
|
||||||
context 'with correct website token' do
|
context 'with correct website token and undefined label' do
|
||||||
it 'returns the list of labels' do
|
it 'does not add the label' do
|
||||||
|
post '/api/v1/widget/labels',
|
||||||
|
params: params,
|
||||||
|
headers: { 'X-Auth-Token' => token },
|
||||||
|
as: :json
|
||||||
|
|
||||||
|
expect(response).to have_http_status(:success)
|
||||||
|
expect(conversation.reload.label_list.count).to eq 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with correct website token and a defined label' do
|
||||||
|
before do
|
||||||
|
account.labels.create(title: 'customer-support')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'add the label to the conversation' do
|
||||||
post '/api/v1/widget/labels',
|
post '/api/v1/widget/labels',
|
||||||
params: params,
|
params: params,
|
||||||
headers: { 'X-Auth-Token' => token },
|
headers: { 'X-Auth-Token' => token },
|
||||||
|
|
Loading…
Reference in a new issue