From 4b2e927e619b9eba6830bb4566dbd6c15f0d1356 Mon Sep 17 00:00:00 2001 From: Matteo Latini Date: Fri, 22 Jun 2012 13:11:59 +0200 Subject: [PATCH 01/10] adds coherent RecordNotFound behaviour --- app/models/spree/blog.rb | 6 ++- config/routes.rb | 4 +- .../posts_controller_helper.rb | 6 ++- .../spree/blogs/blog_integration_test.rb | 43 +++++++++++++++++++ test/support/helpers.rb | 6 +++ 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 test/integration/spree/blogs/blog_integration_test.rb diff --git a/app/models/spree/blog.rb b/app/models/spree/blog.rb index bca700a..1c4bbef 100644 --- a/app/models/spree/blog.rb +++ b/app/models/spree/blog.rb @@ -18,7 +18,11 @@ def self.find_by_permalink!(path) end def self.find_by_permalink(path) - find_by_permalink!(path) rescue ActiveRecord::RecordNotFound + if path.length < 3 + raise ActiveRecord::RecordNotFound # pemalink length is at least 3 + else + find_by_permalink!(path) rescue ActiveRecord::RecordNotFound + end end def self.to_options diff --git a/config/routes.rb b/config/routes.rb index b3028c3..f63479b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,7 +4,7 @@ namespace :admin do - resources :blogs, :constraints => { :id => /[a-z0-9\-\_\/]{3,}/ } + resources :blogs, :constraints => { :id => /[a-z0-9\-\_\/]{0,}/ } resources :posts do resources :images, :controller => "post_images" do @@ -20,7 +20,7 @@ end - constraints :blog_id => /([a-z0-9\-\_\/]{3,})/ do + constraints :blog_id => /([a-z0-9\-\_\/]{0,})/ do constraints( :year => /\d{4}/, diff --git a/lib/spree_essential_blog/posts_controller_helper.rb b/lib/spree_essential_blog/posts_controller_helper.rb index 78a108b..c76612b 100644 --- a/lib/spree_essential_blog/posts_controller_helper.rb +++ b/lib/spree_essential_blog/posts_controller_helper.rb @@ -24,7 +24,11 @@ def get_tags end def get_blog - @blog = Spree::Blog.find_by_permalink!(params[:blog_id]) + begin + @blog = Spree::Blog.find_by_permalink!(params[:blog_id]) + rescue ActiveRecord::RecordNotFound => e + render_404(e) + end end end diff --git a/test/integration/spree/blogs/blog_integration_test.rb b/test/integration/spree/blogs/blog_integration_test.rb new file mode 100644 index 0000000..8c6e067 --- /dev/null +++ b/test/integration/spree/blogs/blog_integration_test.rb @@ -0,0 +1,43 @@ +#! /usr/bin/env ruby +# encoding: UTF-8 + +require 'test_helper' + + +class Spree::Blogs::BlogIntegrationTest < SpreeEssentials::IntegrationCase + + def setup + Spree::Blog.destroy_all + end + + context "with some blogs" do + + setup do + 3.times{ |i| Factory.create(:spree_blog, :name => "My blog #{i}") } + end + + should "render 404 if blog is not found" do + with_driver(:rack_test) do + visit spree.blog_posts_path("does_not_exist") + assert page.status_code == 404, "Expected response to be 404" + end + end + + should "render 404 if blog name is shorter than 3 characters" do + Factory.create(:spree_blog, :name => "abc") + + with_driver(:rack_test) do + visit spree.blog_posts_path("a") + assert page.status_code == 404, "Expected response to be 404" + + visit spree.blog_posts_path("ab") + assert page.status_code == 404, "Expected response to be 404" + + visit spree.blog_posts_path("abc") + assert page.status_code == 200, "Expected response to be 200" + end + end + + end + +end diff --git a/test/support/helpers.rb b/test/support/helpers.rb index 905cfbe..9fe56b2 100644 --- a/test/support/helpers.rb +++ b/test/support/helpers.rb @@ -11,3 +11,9 @@ def setup_action_controller_behaviour(controller_class) @routes = Spree::Core::Engine.routes @controller = controller_class.new end + +def with_driver(driver) + Capybara.current_driver = driver + yield + Capybara.use_default_driver +end From e4dee3aa0ef1cb02d8087556aada5f8fe5066366 Mon Sep 17 00:00:00 2001 From: Matteo Latini Date: Fri, 22 Jun 2012 15:01:05 +0200 Subject: [PATCH 02/10] fixes typo --- app/views/spree/blogs/admin/posts/show.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/blogs/admin/posts/show.html.erb b/app/views/spree/blogs/admin/posts/show.html.erb index dd9f8f2..1631b1e 100644 --- a/app/views/spree/blogs/admin/posts/show.html.erb +++ b/app/views/spree/blogs/admin/posts/show.html.erb @@ -12,6 +12,6 @@

- <%= link_to_edit @user %>   + <%= link_to_edit @post %>   <%= link_to t('back'), collection_url %>

From 1c9e0c7a6eb254eb92ca67b5830f4db9b7d0dfb6 Mon Sep 17 00:00:00 2001 From: Matteo Latini Date: Fri, 22 Jun 2012 15:42:41 +0200 Subject: [PATCH 03/10] adds autodate i18n --- app/views/spree/blogs/admin/posts/_form.html.erb | 9 +++++++-- config/locales/en.yml | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/views/spree/blogs/admin/posts/_form.html.erb b/app/views/spree/blogs/admin/posts/_form.html.erb index 6580111..3b593fc 100644 --- a/app/views/spree/blogs/admin/posts/_form.html.erb +++ b/app/views/spree/blogs/admin/posts/_form.html.erb @@ -12,7 +12,7 @@ <%= form.field_container :posted_at do %> <%= form.label :posted_at, t("activerecord.attributes.post.posted_at") %>
- <%= form.text_field :posted_at, :class => 'text', :value => ((l @post.posted_at, :format => :long) unless @post.posted_at.nil?) %>
+ <%= form.text_field :posted_at, :class => 'text', :value => (@post.posted_at unless @post.posted_at.nil?) %>
<%= error_message_on :post, :posted_at %> <% end %> @@ -36,7 +36,12 @@