diff --git a/spec/models/budget/group_spec.rb b/spec/models/budget/group_spec.rb index 099700c4e..27392e81f 100644 --- a/spec/models/budget/group_spec.rb +++ b/spec/models/budget/group_spec.rb @@ -4,7 +4,7 @@ describe Budget::Group do let(:budget) { create(:budget) } - it_behaves_like "sluggable" + it_behaves_like "sluggable", updatable_slug_trait: :drafting_budget describe "name" do before do diff --git a/spec/models/budget/heading_spec.rb b/spec/models/budget/heading_spec.rb index 655a77b4f..b2a09cb55 100644 --- a/spec/models/budget/heading_spec.rb +++ b/spec/models/budget/heading_spec.rb @@ -5,7 +5,7 @@ describe Budget::Heading do let(:budget) { create(:budget) } let(:group) { create(:budget_group, budget: budget) } - it_behaves_like "sluggable" + it_behaves_like "sluggable", updatable_slug_trait: :drafting_budget describe "name" do before do diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index c41182bdd..80f0a0c94 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -4,7 +4,7 @@ describe Budget do let(:budget) { create(:budget) } - it_behaves_like "sluggable" + it_behaves_like "sluggable", updatable_slug_trait: :drafting describe "name" do before do diff --git a/spec/models/concerns/sluggable.rb b/spec/models/concerns/sluggable.rb index c319d55d8..1b5038d71 100644 --- a/spec/models/concerns/sluggable.rb +++ b/spec/models/concerns/sluggable.rb @@ -1,6 +1,6 @@ require 'spec_helper' -shared_examples_for 'sluggable' do +shared_examples_for 'sluggable' do |updatable_slug_trait:| describe 'generate_slug' do let(:factory_name) { described_class.name.parameterize('_').to_sym } @@ -11,5 +11,20 @@ shared_examples_for 'sluggable' do expect(sluggable.slug).to eq("marlo-branido-carlo") end end + + context "slug updating condition is true" do + it "slug is updated" do + updatable = create(factory_name, updatable_slug_trait, name: 'Old Name') + expect{updatable.update_attributes(name: 'New Name')} + .to change{ updatable.slug }.from('old-name').to('new-name') + end + end + + context "slug updating condition is false" do + it "slug isn't updated" do + expect{sluggable.update_attributes(name: 'New Name')} + .not_to (change{ sluggable.slug }) + end + end end end