Skip to content

Commit

Permalink
chore: Move Enterprise pricing validation to on create (#8856)
Browse files Browse the repository at this point in the history
* chore: Move Pricing validation to on create

The previous validation was getting triggered on all transactions,
this would prevent login to existing users and session data need to be updated.
Opting for a less intrusive approach.

* chore: minore change
  • Loading branch information
sojan-official committed Feb 5, 2024
1 parent 39e27d2 commit 1b75372
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 7 deletions.
2 changes: 1 addition & 1 deletion enterprise/app/models/enterprise/concerns/user.rb
Expand Up @@ -2,7 +2,7 @@ module Enterprise::Concerns::User
extend ActiveSupport::Concern

included do
before_validation :ensure_installation_pricing_plan_quantity
before_validation :ensure_installation_pricing_plan_quantity, on: :create
end

def ensure_installation_pricing_plan_quantity
Expand Down
25 changes: 19 additions & 6 deletions spec/enterprise/models/user_spec.rb
Expand Up @@ -3,9 +3,10 @@
require 'rails_helper'

RSpec.describe User do
let(:user) { create(:user) }
let!(:user) { create(:user) }

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

context 'when pricing plan is not premium' do
Expand All @@ -26,24 +27,36 @@
end

context 'when the user limit is reached' do
it 'adds an error to the user' do
it 'adds an error when trying to create a 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')
new_user.valid?
expect(new_user.errors[:base]).to include('User limit reached. Please purchase more licenses from super admin')
end

it 'will not add error when trying to update a existing user' do
allow(ChatwootHub).to receive(:pricing_plan_quantity).and_return(1)
existing_user.update(name: 'new name')
# since there is user and existing user, we are already over limits
existing_user.valid?
expect(existing_user.errors[:base]).to be_empty
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?
allow(ChatwootHub).to receive(:pricing_plan_quantity).and_return(3)
new_user.valid?
expect(user.errors[:base]).to be_empty
end
end
end
end

describe 'audit log' do
before do
create(:user)
end

context 'when user is created' do
it 'has no associated audit log created' do
expect(Audited::Audit.where(auditable_type: 'User', action: 'create').count).to eq 0
Expand Down

0 comments on commit 1b75372

Please sign in to comment.