From: Shaun McDonald Date: Wed, 12 Nov 2008 18:48:58 +0000 (+0000) Subject: Covering the case of an entry not being found. More diary entry tests. X-Git-Tag: live~7622^2~156 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/797cbaab1ef4b842f3b57bb46c29dea61b4c7e3a Covering the case of an entry not being found. More diary entry tests. --- diff --git a/app/controllers/diary_entry_controller.rb b/app/controllers/diary_entry_controller.rb index 60f5211fd..bd08bcd97 100644 --- a/app/controllers/diary_entry_controller.rb +++ b/app/controllers/diary_entry_controller.rb @@ -38,6 +38,8 @@ class DiaryEntryController < ApplicationController redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id] end end + rescue ActiveRecord::RecordNotFound + render :action => "no_such_entry", :status => :not_found end def comment diff --git a/app/views/diary_entry/no_such_entry.rhtml b/app/views/diary_entry/no_such_entry.rhtml new file mode 100644 index 000000000..1ebcf269c --- /dev/null +++ b/app/views/diary_entry/no_such_entry.rhtml @@ -0,0 +1,2 @@ +

No entry with the id: <%= h(params[:id]) %>

+

Sorry, there is no diary entry or comment with the id <%=h params[:id] -%>, or no id was given. Please check your spelling, or maybe the link you clicked is wrong.

diff --git a/config/potlatch/presets.txt b/config/potlatch/presets.txt index 464204edb..1917b5a6c 100644 --- a/config/potlatch/presets.txt +++ b/config/potlatch/presets.txt @@ -36,6 +36,7 @@ light railway: railway=light_rail preserved railway: railway=preserved disused railway tracks: railway=disused course of old railway: railway=abandoned +railway platform: railway=platform way/natural lake: natural=water,landuse= diff --git a/test/functional/diary_entry_controller_test.rb b/test/functional/diary_entry_controller_test.rb index 1dc9026bb..cb7877336 100644 --- a/test/functional/diary_entry_controller_test.rb +++ b/test/functional/diary_entry_controller_test.rb @@ -10,9 +10,9 @@ class DiaryEntryControllerTest < ActionController::TestCase @request.env["RAW_POST_DATA"] = c.to_s end - def test_showing_create_diary_entry + def test_showing_new_diary_entry get :new - assert_response 302 + assert_response :redirect assert_redirected_to :controller => :user, :action => "login", :referer => "/diary_entry/new" # Now pretend to login by using the session hash, with the # id of the person we want to login as through session(:user)=user.id @@ -22,12 +22,20 @@ class DiaryEntryControllerTest < ActionController::TestCase #print @response.to_yaml assert_select "html:root", :count => 1 do - assert_select "body" do - assert_select "div#content" do - assert_select "h1", "New diary entry" - assert_select "form[action='/diary_entry/new']" do - assert_select "input[id=diary_entry_title][name='diary_entry[title]']" - assert_select "textarea#diary_entry_body[name='diary_entry[body]']" + assert_select "head", :count => 1 do + assert_select "title", :text => /New diary entry/, :count => 1 + end + assert_select "body", :count => 1 do + assert_select "div#content", :count => 1 do + assert_select "h1", "New diary entry", :count => 1 + # We don't care about the layout, we just care about the form fields + # that are available + assert_select "form[action='/diary_entry/new']", :count => 1 do + assert_select "input[id=diary_entry_title][name='diary_entry[title]']", :count => 1 + assert_select "textarea#diary_entry_body[name='diary_entry[body]']", :count => 1 + assert_select "input#latitude[name='diary_entry[latitude]'][type=text]", :count => 1 + assert_select "input#longitude[name='diary_entry[longitude]'][type=text]", :count => 1 + assert_select "input[name=commit][type=submit][value=Save]", :count => 1 end end end @@ -36,8 +44,43 @@ class DiaryEntryControllerTest < ActionController::TestCase end def test_editing_diary_entry + # Make sure that you are redirected to the login page when you are + # not logged in, without and with the id of the entry you want to edit get :edit - assert :not_authorized + assert_response :redirect + assert_redirected_to :controller => :user, :action => "login", :referer => "/diary_entry/edit" + + get :edit, :id => diary_entries(:normal_user_entry_1).id + assert_response :redirect + assert_redirected_to :controller => :user, :action => "login", :referer => "/diary_entry/edit" + + # Verify that you get a not found error, when you don't pass an id + get(:edit, nil, {'user' => users(:normal_user).id}) + assert_response :not_found + assert_select "html:root", :count => 1 do + assert_select "body", :count => 1 do + assert_select "div#content", :count => 1 do + assert_select "h2", :text => "No entry with the id:", :count => 1 + end + end + end + + # Now pass the id, and check that you can edit it + get(:edit, {:id => diary_entries(:normal_user_entry_1).id}, {'user' => users(:normal_user).id}) + assert_response :success + assert_select "html:root", :count => 1 do + assert_select "head", :count => 1 do + assert_select "title", :text => /Edit diary entry/, :count => 1 + end + assert_select "body", :count => 1 do + assert_select "div#content", :count => 1 do + assert_select "h1", :text => /Edit diary entry/, :count => 1 + assert_select "form[action='/diary_entry/#{diary_entries(:normal_user_entry_1).id}/edit'][method=post]", :count => 1 + end + end + end + + #print @response.body end def test_editing_creating_diary_comment