aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/refinery/blog/post.rb6
-rw-r--r--spec/models/refinery/blog/post_spec.rb24
2 files changed, 30 insertions, 0 deletions
diff --git a/app/models/refinery/blog/post.rb b/app/models/refinery/blog/post.rb
index 005ec29..f80a939 100644
--- a/app/models/refinery/blog/post.rb
+++ b/app/models/refinery/blog/post.rb
@@ -32,6 +32,12 @@ module Refinery
is_seo_meta
end
+ # If custom_url or title changes tell friendly_id to regenerate slug when
+ # saving record
+ def should_generate_new_friendly_id?
+ custom_url_changed? || title_changed?
+ end
+
# Delegate SEO Attributes to globalize translation
seo_fields = ::SeoMeta.attributes.keys.map{|a| [a, :"#{a}="]}.flatten
delegate(*(seo_fields << {:to => :translation}))
diff --git a/spec/models/refinery/blog/post_spec.rb b/spec/models/refinery/blog/post_spec.rb
index 8b156cb..99946b8 100644
--- a/spec/models/refinery/blog/post_spec.rb
+++ b/spec/models/refinery/blog/post_spec.rb
@@ -234,6 +234,30 @@ module Refinery
end
end
+ describe "#should_generate_new_friendly_id?" do
+ context "when custom_url changes" do
+ it "regenerates slug upon save" do
+ post = FactoryGirl.create(:blog_post, :custom_url => "Test Url")
+
+ post.custom_url = "Test Url 2"
+ post.save!
+
+ expect(post.slug).to eq("test-url-2")
+ end
+ end
+
+ context "when title changes" do
+ it "regenerates slug upon save" do
+ post = FactoryGirl.create(:blog_post, :title => "Test Title")
+
+ post.title = "Test Title 2"
+ post.save!
+
+ expect(post.slug).to eq("test-title-2")
+ end
+ end
+ end
+
end
end
end