From 42cdce57954ac97ade41c601b9af587ef2117830 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 21 Jan 2025 14:08:25 +0530 Subject: [PATCH] test: update specs for document usage and reorginze them --- spec/enterprise/models/account_spec.rb | 87 +++++++++++++++----------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/spec/enterprise/models/account_spec.rb b/spec/enterprise/models/account_spec.rb index 46e924b12..daa26f25d 100644 --- a/spec/enterprise/models/account_spec.rb +++ b/spec/enterprise/models/account_spec.rb @@ -43,9 +43,58 @@ RSpec.describe Account, type: :model do create(:installation_config, name: 'CAPTAIN_CLOUD_PLAN_LIMITS', value: captain_limits.to_json) end - describe 'captain limits' do + context 'captain limits are configured' do before do - create(:captain_document, assistant: assistant, account: account, status: :available) + create_list(:captain_document, 3, account: account, assistant: assistant, status: :available) + end + + context 'document_usage' do + it 'updates document count accurately' do + account.update_document_usage + expect(account.limits['captain_documents']).to eq(3) + end + + it 'handles zero documents' do + account.captain_documents.destroy_all + account.update_document_usage + expect(account.limits['captain_documents']).to eq(0) + end + + it 'reflects document limits' do + document_limits = account.usage_limits[:captain][:documents] + + expect(document_limits[:consumed]).to eq 3 + expect(document_limits[:current_available]).to eq captain_limits[:startups][:documents] - 3 + end + end + + context 'response usage' do + it 'incrementing responses updates usage_limits' do + account.increment_response_usage + + responses_limits = account.usage_limits[:captain][:generated_responses] + + expect(account.limits['captain_responses']).to eq 1 + expect(responses_limits[:consumed]).to eq 1 + expect(responses_limits[:current_available]).to eq captain_limits[:startups][:responses] - 1 + end + + it 'reseting responses limits updates usage_limits' do + account.limits['captain_responses'] = 30 + account.save! + + responses_limits = account.usage_limits[:captain][:generated_responses] + + expect(responses_limits[:consumed]).to eq 30 + expect(responses_limits[:current_available]).to eq captain_limits[:startups][:responses] - 30 + + account.reset_response_usage + responses_limits = account.usage_limits[:captain][:generated_responses] + + expect(account.limits['captain_responses']).to eq 0 + expect(responses_limits[:consumed]).to eq 0 + expect(responses_limits[:current_available]).to eq captain_limits[:startups][:responses] + end end it 'returns monthly limit accurately' do @@ -56,40 +105,6 @@ RSpec.describe Account, type: :model do end end - it 'incrementing responses updates usage_limits' do - account.increment_response_usage - - responses_limits = account.usage_limits[:captain][:generated_responses] - - expect(account.limits['captain_responses']).to eq 1 - expect(responses_limits[:consumed]).to eq 1 - expect(responses_limits[:current_available]).to eq captain_limits[:startups][:responses] - 1 - end - - it 'reseting responses limits updates usage_limits' do - account.limits['captain_responses'] = 30 - account.save! - - responses_limits = account.usage_limits[:captain][:generated_responses] - - expect(responses_limits[:consumed]).to eq 30 - expect(responses_limits[:current_available]).to eq captain_limits[:startups][:responses] - 30 - - account.reset_response_usage - responses_limits = account.usage_limits[:captain][:generated_responses] - - expect(account.limits['captain_responses']).to eq 0 - expect(responses_limits[:consumed]).to eq 0 - expect(responses_limits[:current_available]).to eq captain_limits[:startups][:responses] - end - - it 'reflects document limits' do - document_limits = account.usage_limits[:captain][:documents] - - expect(document_limits[:consumed]).to eq 1 - expect(document_limits[:current_available]).to eq captain_limits[:startups][:documents] - 1 - end - it 'current_available is never out of bounds' do account.limits['captain_responses'] = 3000 account.save!