From aa9c0b9f6bdbc4218319f9e2fd9691fa9514066b Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 9 Jul 2025 14:23:50 +0530 Subject: [PATCH] test: scenario model --- .../models/captain/scenario_spec.rb | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 spec/enterprise/models/captain/scenario_spec.rb diff --git a/spec/enterprise/models/captain/scenario_spec.rb b/spec/enterprise/models/captain/scenario_spec.rb new file mode 100644 index 000000000..f944373e2 --- /dev/null +++ b/spec/enterprise/models/captain/scenario_spec.rb @@ -0,0 +1,63 @@ +require 'rails_helper' + +RSpec.describe Captain::Scenario, type: :model do + describe 'associations' do + it { is_expected.to belong_to(:assistant).class_name('Captain::Assistant') } + it { is_expected.to belong_to(:account) } + end + + describe 'validations' do + it { is_expected.to validate_presence_of(:title) } + it { is_expected.to validate_presence_of(:description) } + it { is_expected.to validate_presence_of(:instruction) } + it { is_expected.to validate_presence_of(:assistant_id) } + it { is_expected.to validate_presence_of(:account_id) } + end + + describe 'scopes' do + let(:account) { create(:account) } + let(:assistant) { create(:captain_assistant, account: account) } + + describe '.enabled' do + it 'returns only enabled scenarios' do + enabled_scenario = create(:captain_scenario, assistant: assistant, account: account, enabled: true) + disabled_scenario = create(:captain_scenario, assistant: assistant, account: account, enabled: false) + + expect(described_class.enabled).to include(enabled_scenario) + expect(described_class.enabled).not_to include(disabled_scenario) + end + end + end + + describe 'callbacks' do + let(:account) { create(:account) } + let(:assistant) { create(:captain_assistant, account: account) } + + describe 'before_save :populate_tools' do + it 'calls populate_tools before saving' do + scenario = build(:captain_scenario, assistant: assistant, account: account) + expect(scenario).to receive(:populate_tools) + scenario.save + end + end + end + + describe 'factory' do + it 'creates a valid scenario with associations' do + account = create(:account) + assistant = create(:captain_assistant, account: account) + scenario = build(:captain_scenario, assistant: assistant, account: account) + expect(scenario).to be_valid + end + + it 'creates a scenario with all required attributes' do + scenario = create(:captain_scenario) + expect(scenario.title).to be_present + expect(scenario.description).to be_present + expect(scenario.instruction).to be_present + expect(scenario.enabled).to be true + expect(scenario.assistant).to be_present + expect(scenario.account).to be_present + end + end +end \ No newline at end of file