X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/b8f5a495f21b8d3572ed6184121d845b9ed1ec4c..7196368d6a27f4c3313e60c82ed06c959d60e90b:/test/controllers/changesets_controller_test.rb diff --git a/test/controllers/changesets_controller_test.rb b/test/controllers/changesets_controller_test.rb index 1fd9de2e8..0f9c4b8ce 100644 --- a/test/controllers/changesets_controller_test.rb +++ b/test/controllers/changesets_controller_test.rb @@ -32,22 +32,6 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest { :path => "/history/feed", :method => :get }, { :controller => "changesets", :action => "feed", :format => :atom } ) - assert_routing( - { :path => "/changeset/1/subscribe", :method => :get }, - { :controller => "changesets", :action => "subscribe", :id => "1" } - ) - assert_routing( - { :path => "/changeset/1/subscribe", :method => :post }, - { :controller => "changesets", :action => "subscribe", :id => "1" } - ) - assert_routing( - { :path => "/changeset/1/unsubscribe", :method => :get }, - { :controller => "changesets", :action => "unsubscribe", :id => "1" } - ) - assert_routing( - { :path => "/changeset/1/unsubscribe", :method => :post }, - { :controller => "changesets", :action => "unsubscribe", :id => "1" } - ) end ## @@ -92,6 +76,18 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest check_index_result(changesets.last(20)) end + ## + # This should report an error + def test_index_invalid_xhr + %w[-1 0 fred].each do |id| + get history_path(:format => "html", :list => "1", :before => id) + assert_redirected_to :controller => :errors, :action => :bad_request + + get history_path(:format => "html", :list => "1", :after => id) + assert_redirected_to :controller => :errors, :action => :bad_request + end + end + ## # This should display the last 20 changesets closed in a specific area def test_index_bbox @@ -181,8 +177,8 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest # Checks the display of the friends changesets listing def test_index_friends private_user = create(:user, :data_public => true) - friendship = create(:friendship, :befriender => private_user) - changeset = create(:changeset, :user => friendship.befriendee, :num_changes => 1) + follow = create(:follow, :follower => private_user) + changeset = create(:changeset, :user => follow.following, :num_changes => 1) _changeset2 = create(:changeset, :user => create(:user), :num_changes => 1) get friend_changesets_path @@ -228,21 +224,38 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # Check that we can't request later pages of the changesets index - def test_index_max_id - changeset = create(:changeset, :num_changes => 1) - _changeset2 = create(:changeset, :num_changes => 1) + def test_index_before_id + changeset1 = create(:changeset, :num_changes => 1) + changeset2 = create(:changeset, :num_changes => 1) - get history_path(:format => "html", :max_id => changeset.id), :xhr => true + get history_path(:format => "html", :before => changeset2.id), :xhr => true assert_response :success assert_template "history" assert_template :layout => "xhr" assert_select "h2", :text => "Changesets", :count => 1 - get history_path(:format => "html", :list => "1", :max_id => changeset.id), :xhr => true + get history_path(:format => "html", :list => "1", :before => changeset2.id), :xhr => true assert_response :success assert_template "index" - check_index_result([changeset]) + check_index_result [changeset1] + end + + def test_index_after_id + changeset1 = create(:changeset, :num_changes => 1) + changeset2 = create(:changeset, :num_changes => 1) + + get history_path(:format => "html", :after => changeset1.id), :xhr => true + assert_response :success + assert_template "history" + assert_template :layout => "xhr" + assert_select "h2", :text => "Changesets", :count => 1 + + get history_path(:format => "html", :list => "1", :after => changeset1.id), :xhr => true + assert_response :success + assert_template "index" + + check_index_result [changeset2] end ## @@ -266,7 +279,7 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest sidebar_browse_check :changeset_path, changeset.id, "changesets/show" assert_dom "h2", :text => "Changeset: #{changeset.id}" assert_dom "p", :text => "tested-changeset-comment" - assert_dom "li#c#{changeset_comment.id}" do + assert_dom "article#c#{changeset_comment.id}" do assert_dom "> small", :text => /^Comment from #{commenting_user.display_name}/ assert_dom "a[href='#{user_path(commenting_user)}']" end @@ -321,13 +334,26 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest def test_show_adjacent_changesets user = create(:user) - changesets = create_list(:changeset, 3, :user => user) + changesets = create_list(:changeset, 3, :user => user, :num_changes => 1) sidebar_browse_check :changeset_path, changesets[1].id, "changesets/show" assert_dom "a[href='#{changeset_path changesets[0]}']", :count => 1 assert_dom "a[href='#{changeset_path changesets[2]}']", :count => 1 end + def test_show_adjacent_nonempty_changesets + user = create(:user) + changeset1 = create(:changeset, :user => user, :num_changes => 1) + create(:changeset, :user => user, :num_changes => 0) + changeset3 = create(:changeset, :user => user, :num_changes => 1) + create(:changeset, :user => user, :num_changes => 0) + changeset5 = create(:changeset, :user => user, :num_changes => 1) + + sidebar_browse_check :changeset_path, changeset3.id, "changesets/show" + assert_dom "a[href='#{changeset_path changeset1}']", :count => 1 + assert_dom "a[href='#{changeset_path changeset5}']", :count => 1 + end + ## # This should display the last 20 non-empty changesets def test_feed @@ -405,122 +431,14 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # Check that we can't request later pages of the changesets feed - def test_feed_max_id - get history_feed_path(:format => "atom", :max_id => 100) + def test_feed_before + get history_feed_path(:format => "atom", :before => 100) assert_redirected_to :action => :feed end - def test_subscribe_page - user = create(:user) - other_user = create(:user) - changeset = create(:changeset, :user => user) - path = subscribe_changeset_path(changeset) - - get path - assert_redirected_to login_path(:referer => path) - - session_for(other_user) - get path - assert_response :success - assert_dom ".content-body" do - assert_dom "a[href='#{changeset_path(changeset)}']", :text => "Changeset #{changeset.id}" - assert_dom "a[href='#{user_path(user)}']", :text => user.display_name - end - end - - def test_subscribe_success - user = create(:user) - other_user = create(:user) - changeset = create(:changeset, :user => user) - - session_for(other_user) - assert_difference "changeset.subscribers.count", 1 do - post subscribe_changeset_path(changeset) - end - assert_redirected_to changeset_path(changeset) - assert changeset.reload.subscribed?(other_user) - end - - def test_subscribe_fail - user = create(:user) - other_user = create(:user) - - changeset = create(:changeset, :user => user) - - # not signed in - assert_no_difference "changeset.subscribers.count" do - post subscribe_changeset_path(changeset) - end - assert_response :forbidden - - session_for(other_user) - - # bad diary id - post subscribe_changeset_path(999111) - assert_response :not_found - - # trying to subscribe when already subscribed - post subscribe_changeset_path(changeset) - assert_no_difference "changeset.subscribers.count" do - post subscribe_changeset_path(changeset) - end - end - - def test_unsubscribe_page - user = create(:user) - other_user = create(:user) - changeset = create(:changeset, :user => user) - path = unsubscribe_changeset_path(changeset) - - get path - assert_redirected_to login_path(:referer => path) - - session_for(other_user) - get path - assert_response :success - assert_dom ".content-body" do - assert_dom "a[href='#{changeset_path(changeset)}']", :text => "Changeset #{changeset.id}" - assert_dom "a[href='#{user_path(user)}']", :text => user.display_name - end - end - - def test_unsubscribe_success - user = create(:user) - other_user = create(:user) - - changeset = create(:changeset, :user => user) - changeset.subscribers.push(other_user) - - session_for(other_user) - assert_difference "changeset.subscribers.count", -1 do - post unsubscribe_changeset_path(changeset) - end - assert_redirected_to changeset_path(changeset) - assert_not changeset.reload.subscribed?(other_user) - end - - def test_unsubscribe_fail - user = create(:user) - other_user = create(:user) - - changeset = create(:changeset, :user => user) - - # not signed in - assert_no_difference "changeset.subscribers.count" do - post unsubscribe_changeset_path(changeset) - end - assert_response :forbidden - - session_for(other_user) - - # bad diary id - post unsubscribe_changeset_path(999111) - assert_response :not_found - - # trying to unsubscribe when not subscribed - assert_no_difference "changeset.subscribers.count" do - post unsubscribe_changeset_path(changeset) - end + def test_feed_after + get history_feed_path(:format => "atom", :after => 100) + assert_redirected_to :action => :feed end private