require File.dirname(__FILE__) + '/../test_helper' require 'redactions_controller' class RedactionsControllerTest < ActionController::TestCase api_fixtures ## # test all routes which lead to this controller def test_routes assert_routing( { :path => "/redactions", :method => :get }, { :controller => "redactions", :action => "index" } ) assert_routing( { :path => "/redactions/new", :method => :get }, { :controller => "redactions", :action => "new" } ) assert_routing( { :path => "/redactions", :method => :post }, { :controller => "redactions", :action => "create" } ) assert_routing( { :path => "/redactions/1", :method => :get }, { :controller => "redactions", :action => "show", :id => "1" } ) assert_routing( { :path => "/redactions/1/edit", :method => :get }, { :controller => "redactions", :action => "edit", :id => "1" } ) assert_routing( { :path => "/redactions/1", :method => :put }, { :controller => "redactions", :action => "update", :id => "1" } ) assert_routing( { :path => "/redactions/1", :method => :delete }, { :controller => "redactions", :action => "destroy", :id => "1" } ) end def test_moderators_can_create session[:user] = users(:moderator_user).id cookies["_osm_username"] = users(:moderator_user).display_name post :create, :redaction => { :title => "Foo", :description => "Description here." } assert_response :redirect assert_redirected_to(redaction_path(Redaction.find_by_title("Foo"))) end def test_non_moderators_cant_create session[:user] = users(:public_user).id cookies["_osm_username"] = users(:public_user).display_name post :create, :redaction => { :title => "Foo", :description => "Description here." } assert_response :forbidden end def test_moderators_can_delete_empty session[:user] = users(:moderator_user).id cookies["_osm_username"] = users(:moderator_user).display_name # remove all elements from the redaction redaction = redactions(:example) redaction.old_nodes.each { |n| n.redaction = nil; n.save! } redaction.old_ways.each { |w| w.redaction = nil; w.save! } redaction.old_relations.each { |r| r.redaction = nil; r.save! } delete :destroy, :id => redaction.id assert_response :redirect assert_redirected_to(redactions_path) end def test_moderators_cant_delete_nonempty session[:user] = users(:moderator_user).id cookies["_osm_username"] = users(:moderator_user).display_name # leave elements in the redaction redaction = redactions(:example) delete :destroy, :id => redaction.id assert_response :redirect assert_redirected_to(redaction_path(redaction)) assert_match /^Redaction is not empty/, flash[:error] end def test_non_moderators_cant_delete session[:user] = users(:public_user).id cookies["_osm_username"] = users(:public_user).display_name delete :destroy, :id => redactions(:example).id assert_response :forbidden end def test_moderators_can_edit session[:user] = users(:moderator_user).id cookies["_osm_username"] = users(:moderator_user).display_name get :edit, :id => redactions(:example).id assert_response :success end def test_non_moderators_cant_edit session[:user] = users(:public_user).id cookies["_osm_username"] = users(:public_user).display_name get :edit, :id => redactions(:example).id assert_response :redirect assert_redirected_to(redactions_path) end def test_moderators_can_update session[:user] = users(:moderator_user).id cookies["_osm_username"] = users(:moderator_user).display_name redaction = redactions(:example) put :update, :id => redaction.id, :redaction => { :title => "Foo", :description => "Description here." } assert_response :redirect assert_redirected_to(redaction_path(redaction)) end def test_non_moderators_cant_update session[:user] = users(:public_user).id cookies["_osm_username"] = users(:public_user).display_name redaction = redactions(:example) put :update, :id => redaction.id, :redaction => { :title => "Foo", :description => "Description here." } assert_response :forbidden end end