Skip to content

Commit

Permalink
chore: Validation for purchased pricing_plan_quantity (#8809)
Browse files Browse the repository at this point in the history
- Add validations based on purchased pricing_plan_quantity
- Modify the Dashboard to support the new error message
  • Loading branch information
sojan-official committed Jan 30, 2024
1 parent eeb0113 commit 0805f36
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 4 deletions.
Expand Up @@ -130,15 +130,23 @@ export default {
this.showAlert(this.$t('AGENT_MGMT.ADD.API.SUCCESS_MESSAGE'));
this.onClose();
} catch (error) {
const { response: { data: { error: errorResponse = '' } = {} } = {} } =
error;
const {
response: {
data: {
error: errorResponse = '',
attributes: attributes = [],
message: attrError = '',
} = {},
} = {},
} = error;
let errorMessage = '';
if (error.response.status === 422) {
if (error.response.status === 422 && !attributes.includes('base')) {
errorMessage = this.$t('AGENT_MGMT.ADD.API.EXIST_MESSAGE');
} else {
errorMessage = this.$t('AGENT_MGMT.ADD.API.ERROR_MESSAGE');
}
this.showAlert(errorResponse || errorMessage);
this.showAlert(errorResponse || attrError || errorMessage);
}
},
},
Expand Down
1 change: 1 addition & 0 deletions app/models/user.rb
Expand Up @@ -161,3 +161,4 @@ def remove_macros
end

User.include_mod_with('Audit::User')
User.include_mod_with('Concerns::User')
13 changes: 13 additions & 0 deletions enterprise/app/models/enterprise/concerns/user.rb
@@ -0,0 +1,13 @@
module Enterprise::Concerns::User
extend ActiveSupport::Concern

included do
before_validation :ensure_installation_pricing_plan_quantity
end

def ensure_installation_pricing_plan_quantity
return unless ChatwootHub.pricing_plan == 'premium'

errors.add(:base, 'User limit reached. Please purchase more licenses from super admin') if User.count >= ChatwootHub.pricing_plan_quantity
end
end
38 changes: 38 additions & 0 deletions spec/enterprise/models/user_spec.rb
Expand Up @@ -5,6 +5,44 @@
RSpec.describe User do
let(:user) { create(:user) }

describe 'before validation for pricing plans' do
let(:new_user) { build(:user) }

context 'when pricing plan is not premium' do
before do
allow(ChatwootHub).to receive(:pricing_plan).and_return('community')
allow(ChatwootHub).to receive(:pricing_plan_quantity).and_return(0)
end

it 'does not add an error to the user' do
new_user.valid?
expect(new_user.errors[:base]).to be_empty
end
end

context 'when pricing plan is premium' do
before do
allow(ChatwootHub).to receive(:pricing_plan).and_return('premium')
end

context 'when the user limit is reached' do
it 'adds an error to the user' do
allow(ChatwootHub).to receive(:pricing_plan_quantity).and_return(1)
user.valid?
expect(user.errors[:base]).to include('User limit reached. Please purchase more licenses from super admin')
end
end

context 'when the user limit is not reached' do
it 'does not add an error to the user' do
allow(ChatwootHub).to receive(:pricing_plan_quantity).and_return(2)
user.valid?
expect(user.errors[:base]).to be_empty
end
end
end
end

describe 'audit log' do
context 'when user is created' do
it 'has no associated audit log created' do
Expand Down

0 comments on commit 0805f36

Please sign in to comment.