Use updatable slug factory trait to sluggable concern
Slugs should only be updated on certain conditions, we need a trait that meets that conditions and the name of the trait passed as a mandatory & named argument on the sluggable concern
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user