require 'spec_helper' describe Scenario do let(:new_instance) { users(:bob).scenarios.build(:name => "some scenario") } it_behaves_like HasGuid describe "validations" do before do new_instance.should be_valid end it "validates the presence of name" do new_instance.name = '' new_instance.should_not be_valid end it "validates the presence of user" do new_instance.user = nil new_instance.should_not be_valid end it "validates tag_fg_color is hex color" do new_instance.tag_fg_color = '#N07H3X' new_instance.should_not be_valid new_instance.tag_fg_color = '#BADA55' new_instance.should be_valid end it "allows nil tag_fg_color" do new_instance.tag_fg_color = nil new_instance.should be_valid end it "validates tag_bg_color is hex color" do new_instance.tag_bg_color = '#N07H3X' new_instance.should_not be_valid new_instance.tag_bg_color = '#BADA55' new_instance.should be_valid end it "allows nil tag_bg_color" do new_instance.tag_bg_color = nil new_instance.should be_valid end it "only allows Agents owned by user" do new_instance.agent_ids = [agents(:bob_website_agent).id] new_instance.should be_valid new_instance.agent_ids = [agents(:jane_website_agent).id] new_instance.should_not be_valid end end describe "counters" do it "maintains a counter cache on user" do lambda { new_instance.save! }.should change { users(:bob).reload.scenario_count }.by(1) lambda { new_instance.destroy }.should change { users(:bob).reload.scenario_count }.by(-1) end end end