mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	chore: Validation for purchased pricing_plan_quantity (#8809)
- Add validations based on purchased pricing_plan_quantity - Modify the Dashboard to support the new error message
This commit is contained in:
		| @@ -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); | ||||
|       } | ||||
|     }, | ||||
|   }, | ||||
|   | ||||
| @@ -161,3 +161,4 @@ class User < ApplicationRecord | ||||
| end | ||||
|  | ||||
| User.include_mod_with('Audit::User') | ||||
| User.include_mod_with('Concerns::User') | ||||
|   | ||||
							
								
								
									
										13
									
								
								enterprise/app/models/enterprise/concerns/user.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								enterprise/app/models/enterprise/concerns/user.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
| @@ -5,6 +5,44 @@ require 'rails_helper' | ||||
| 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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sojan Jose
					Sojan Jose