mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 03:27:52 +00:00
fix: Show campaigns only if the feature is enabled (#11420)
If the feature is disabled (manually or due to plan changes), the customer cannot disable the existing campaigns. This PR would fix that. Fixes https://linear.app/chatwoot/issue/CW-3691/fix-disable-campaigns-on-plan-downgrade
This commit is contained in:
@@ -2,10 +2,15 @@ class Api::V1::Widget::CampaignsController < Api::V1::Widget::BaseController
|
|||||||
skip_before_action :set_contact
|
skip_before_action :set_contact
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@campaigns = @web_widget
|
account = @web_widget.inbox.account
|
||||||
|
@campaigns = if account.feature_enabled?('campaigns')
|
||||||
|
@web_widget
|
||||||
.inbox
|
.inbox
|
||||||
.campaigns
|
.campaigns
|
||||||
.where(enabled: true, account_id: @web_widget.inbox.account_id)
|
.where(enabled: true, account_id: account.id)
|
||||||
.includes(:sender)
|
.includes(:sender)
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -9,7 +9,11 @@ RSpec.describe '/api/v1/widget/campaigns', type: :request do
|
|||||||
describe 'GET /api/v1/widget/campaigns' do
|
describe 'GET /api/v1/widget/campaigns' do
|
||||||
let(:params) { { website_token: web_widget.website_token } }
|
let(:params) { { website_token: web_widget.website_token } }
|
||||||
|
|
||||||
context 'with correct website token' do
|
context 'when campaigns feature is enabled' do
|
||||||
|
before do
|
||||||
|
account.enable_features!('campaigns')
|
||||||
|
end
|
||||||
|
|
||||||
it 'returns the list of enabled campaigns' do
|
it 'returns the list of enabled campaigns' do
|
||||||
get '/api/v1/widget/campaigns', params: params
|
get '/api/v1/widget/campaigns', params: params
|
||||||
|
|
||||||
@@ -21,8 +25,22 @@ RSpec.describe '/api/v1/widget/campaigns', type: :request do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when campaigns feature is disabled' do
|
||||||
|
before do
|
||||||
|
account.disable_features!('campaigns')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns empty array' do
|
||||||
|
get '/api/v1/widget/campaigns', params: params
|
||||||
|
|
||||||
|
expect(response).to have_http_status(:success)
|
||||||
|
json_response = response.parsed_body
|
||||||
|
expect(json_response).to eq []
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'with invalid website token' do
|
context 'with invalid website token' do
|
||||||
it 'returns the list of agents' do
|
it 'returns not found status' do
|
||||||
get '/api/v1/widget/campaigns', params: { website_token: '' }
|
get '/api/v1/widget/campaigns', params: { website_token: '' }
|
||||||
expect(response).to have_http_status(:not_found)
|
expect(response).to have_http_status(:not_found)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user