From: Tom Hughes
<%= changeset_details(@changeset) %>
- <%= render :partial => "tag_details", :object => @changeset.tags.except("comment") %> + <%= render :partial => "browse/tag_details", :object => @changeset.tags.except("comment") %><%= link_to(comment, - { :controller => "browse", :action => "changeset", :id => changeset.id }, - { :title => t("changesets.changeset.view_changeset_details") }) %>+
<%= link_to comment, changeset_path(changeset), :title => t("changesets.changeset.view_changeset_details") %><% else %> <%= t "changesets.changeset.no_edits" %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index fcf9f90a8..429786fcc 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -308,12 +308,6 @@ en: destroy: success: "Account Deleted." browse: - created: "Created" - closed: "Closed" - created_ago_html: "Created %{time_ago}" - closed_ago_html: "Closed %{time_ago}" - created_ago_by_html: "Created %{time_ago} by %{user}" - closed_ago_by_html: "Closed %{time_ago} by %{user}" deleted_ago_by_html: "Deleted %{time_ago} by %{user}" edited_ago_by_html: "Edited %{time_ago} by %{user}" version: "Version" @@ -337,22 +331,6 @@ en: location: "Location:" common_details: coordinates_html: "%{latitude}, %{longitude}" - changeset: - title: "Changeset: %{id}" - belongs_to: "Author" - node: "Nodes (%{count})" - node_paginated: "Nodes (%{x}-%{y} of %{count})" - way: "Ways (%{count})" - way_paginated: "Ways (%{x}-%{y} of %{count})" - relation: "Relations (%{count})" - relation_paginated: "Relations (%{x}-%{y} of %{count})" - hidden_comment_by_html: "Hidden comment from %{user} %{time_ago}" - comment_by_html: "Comment from %{user} %{time_ago}" - changesetxml: "Changeset XML" - osmchangexml: "osmChange XML" - join_discussion: "Log in to join the discussion" - discussion: Discussion - still_open: "Changeset still open - discussion will open once the changeset is closed." node: title_html: "Node: %{name}" history_title_html: "Node History: %{name}" @@ -468,6 +446,9 @@ en: feed: title: "Changeset %{id}" title_comment: "Changeset %{id} - %{comment}" + created: "Created" + closed: "Closed" + belongs_to: "Author" subscribe: heading: Subscribe to the following changeset discussion? button: Subscribe to discussion @@ -481,6 +462,28 @@ en: title: "No such changeset" heading: "No entry with the id: %{id}" body: "Sorry, there is no changeset with the id %{id}. Please check your spelling, or maybe the link you clicked is wrong." + show: + title: "Changeset: %{id}" + created: "Created: %{when}" + closed: "Closed: %{when}" + created_ago_html: "Created %{time_ago}" + closed_ago_html: "Closed %{time_ago}" + created_ago_by_html: "Created %{time_ago} by %{user}" + closed_ago_by_html: "Closed %{time_ago} by %{user}" + discussion: Discussion + join_discussion: "Log in to join the discussion" + still_open: "Changeset still open - discussion will open once the changeset is closed." + comment_by_html: "Comment from %{user} %{time_ago}" + hidden_comment_by_html: "Hidden comment from %{user} %{time_ago}" + changesetxml: "Changeset XML" + osmchangexml: "osmChange XML" + paging_nav: + nodes: "Nodes (%{count})" + nodes_paginated: "Nodes (%{x}-%{y} of %{count})" + ways: "Ways (%{count})" + ways_paginated: "Ways (%{x}-%{y} of %{count})" + relations: "Relations (%{count})" + relations_paginated: "Relations (%{x}-%{y} of %{count})" timeout: sorry: "Sorry, the list of changesets you requested took too long to retrieve." changeset_comments: diff --git a/config/routes.rb b/config/routes.rb index af5730d21..98184e0e1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -118,7 +118,7 @@ OpenStreetMap::Application.routes.draw do get "/relation/:id" => "browse#relation", :id => /\d+/, :as => :relation get "/relation/:id/history" => "browse#relation_history", :id => /\d+/, :as => :relation_history resources :old_relations, :path => "/relation/:id/history", :id => /\d+/, :version => /\d+/, :param => :version, :only => :show - get "/changeset/:id" => "browse#changeset", :as => :changeset, :id => /\d+/ + resources :changesets, :path => "changeset", :id => /\d+/, :only => :show get "/changeset/:id/comments/feed" => "changeset_comments#index", :as => :changeset_comments_feed, :id => /\d*/, :defaults => { :format => "rss" } resources :notes, :path => "note", :only => [:show, :new] diff --git a/test/controllers/browse_controller_test.rb b/test/controllers/browse_controller_test.rb index 312caca51..fcdd7c752 100644 --- a/test/controllers/browse_controller_test.rb +++ b/test/controllers/browse_controller_test.rb @@ -28,10 +28,6 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest { :path => "/relation/1/history", :method => :get }, { :controller => "browse", :action => "relation_history", :id => "1" } ) - assert_routing( - { :path => "/changeset/1", :method => :get }, - { :controller => "browse", :action => "changeset", :id => "1" } - ) assert_routing( { :path => "/query", :method => :get }, { :controller => "browse", :action => "query" } @@ -40,7 +36,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_relation relation = create(:relation) - browse_check :relation_path, relation.id, "browse/feature" + sidebar_browse_check :relation_path, relation.id, "browse/feature" assert_select "h4", /^Version/ do assert_select "a[href='#{old_relation_path relation, 1}']", :text => "1", :count => 1 end @@ -51,7 +47,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_multiple_version_relation_links relation = create(:relation, :with_history, :version => 2) - browse_check :relation_path, relation.id, "browse/feature" + sidebar_browse_check :relation_path, relation.id, "browse/feature" assert_select ".secondary-actions a[href='#{relation_history_path relation}']", :count => 1 assert_select ".secondary-actions a[href='#{old_relation_path relation, 1}']", :count => 1 assert_select ".secondary-actions a[href='#{old_relation_path relation, 2}']", :count => 1 @@ -59,7 +55,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_relation_history relation = create(:relation, :with_history) - browse_check :relation_history_path, relation.id, "browse/history" + sidebar_browse_check :relation_history_path, relation.id, "browse/history" assert_select "h4", /^Version/ do assert_select "a[href='#{old_relation_path relation, 1}']", :text => "1", :count => 1 end @@ -67,7 +63,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_way way = create(:way) - browse_check :way_path, way.id, "browse/feature" + sidebar_browse_check :way_path, way.id, "browse/feature" assert_select "h4", /^Version/ do assert_select "a[href='#{old_way_path way, 1}']", :text => "1", :count => 1 end @@ -78,7 +74,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_multiple_version_way_links way = create(:way, :with_history, :version => 2) - browse_check :way_path, way.id, "browse/feature" + sidebar_browse_check :way_path, way.id, "browse/feature" assert_select ".secondary-actions a[href='#{way_history_path way}']", :count => 1 assert_select ".secondary-actions a[href='#{old_way_path way, 1}']", :count => 1 assert_select ".secondary-actions a[href='#{old_way_path way, 2}']", :count => 1 @@ -86,7 +82,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_way_history way = create(:way, :with_history) - browse_check :way_history_path, way.id, "browse/history" + sidebar_browse_check :way_history_path, way.id, "browse/history" assert_select "h4", /^Version/ do assert_select "a[href='#{old_way_path way, 1}']", :text => "1", :count => 1 end @@ -94,7 +90,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_node node = create(:node) - browse_check :node_path, node.id, "browse/feature" + sidebar_browse_check :node_path, node.id, "browse/feature" assert_select "h4", /^Version/ do assert_select "a[href='#{old_node_path node, 1}']", :text => "1", :count => 1 end @@ -105,7 +101,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_multiple_version_node_links node = create(:node, :with_history, :version => 2) - browse_check :node_path, node.id, "browse/feature" + sidebar_browse_check :node_path, node.id, "browse/feature" assert_select ".secondary-actions a[href='#{node_history_path node}']", :count => 1 assert_select ".secondary-actions a[href='#{old_node_path node, 1}']", :count => 1 assert_select ".secondary-actions a[href='#{old_node_path node, 2}']", :count => 1 @@ -113,7 +109,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_deleted_node node = create(:node, :visible => false) - browse_check :node_path, node.id, "browse/feature" + sidebar_browse_check :node_path, node.id, "browse/feature" assert_select "h4", /^Version/ do assert_select "a[href='#{old_node_path node, 1}']", :text => "1", :count => 1 end @@ -122,35 +118,12 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest def test_read_node_history node = create(:node, :with_history) - browse_check :node_history_path, node.id, "browse/history" + sidebar_browse_check :node_history_path, node.id, "browse/history" assert_select "h4", /^Version/ do assert_select "a[href='#{old_node_path node, 1}']", :text => "1", :count => 1 end end - def test_read_changeset - user = create(:user) - changeset = create(:changeset, :user => user) - create(:changeset, :user => user) - browse_check :changeset_path, changeset.id, "browse/changeset" - end - - def test_read_private_changeset - user = create(:user) - changeset = create(:changeset, :user => create(:user, :data_public => false)) - create(:changeset, :user => user) - browse_check :changeset_path, changeset.id, "browse/changeset" - end - - def test_read_changeset_element_links - changeset = create(:changeset) - node = create(:node, :with_history, :changeset => changeset) - - browse_check :changeset_path, changeset.id, "browse/changeset" - assert_dom "a[href='#{node_path node}']", :count => 1 - assert_dom "a[href='#{old_node_path node, 1}']", :count => 1 - end - ## # Methods to check redaction. # @@ -364,42 +337,4 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest assert_select ".secondary-actions a", :text => "View History", :count => 1 assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 0 end - - private - - # This is a convenience method for most of the above checks - # First we check that when we don't have an id, it will correctly return a 404 - # then we check that we get the correct 404 when a non-existant id is passed - # then we check that it will get a successful response, when we do pass an id - def browse_check(path, id, template) - path_method = method(path) - - assert_raise ActionController::UrlGenerationError do - get path_method.call - end - - assert_raise ActionController::UrlGenerationError do - get path_method.call(:id => -10) # we won't have an id that's negative - end - - get path_method.call(:id => 0) - assert_response :not_found - assert_template "browse/not_found" - assert_template :layout => "map" - - get path_method.call(:id => 0), :xhr => true - assert_response :not_found - assert_template "browse/not_found" - assert_template :layout => "xhr" - - get path_method.call(:id => id) - assert_response :success - assert_template template - assert_template :layout => "map" - - get path_method.call(:id => id), :xhr => true - assert_response :success - assert_template template - assert_template :layout => "xhr" - end end diff --git a/test/controllers/changesets_controller_test.rb b/test/controllers/changesets_controller_test.rb index a0747a0cd..ce16b1406 100644 --- a/test/controllers/changesets_controller_test.rb +++ b/test/controllers/changesets_controller_test.rb @@ -4,6 +4,10 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # test all routes which lead to this controller def test_routes + assert_routing( + { :path => "/changeset/1", :method => :get }, + { :controller => "changesets", :action => "show", :id => "1" } + ) assert_routing( { :path => "/user/name/history", :method => :get }, { :controller => "changesets", :action => "index", :display_name => "name" } @@ -121,8 +125,9 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest # Checks the display of the user changesets listing def test_index_user user = create(:user) - create(:changeset, :user => user) - create(:changeset, :closed, :user => user) + create(:changeset, :user => user, :num_changes => 1) + create(:changeset, :closed, :user => user, :num_changes => 1) + user.reload get history_path(:format => "html", :display_name => user.display_name) assert_response :success @@ -252,6 +257,67 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest assert_response :success end + def test_show + changeset = create(:changeset) + create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "tested-changeset-comment") + commenting_user = create(:user) + changeset_comment = create(:changeset_comment, :changeset => changeset, :author => commenting_user, :body => "Unwanted comment") + + 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 "> small", :text => /^Comment from #{commenting_user.display_name}/ + end + end + + def test_show_closed_changeset + changeset = create(:changeset, :closed) + + sidebar_browse_check :changeset_path, changeset.id, "changesets/show" + end + + def test_show_private_changeset + user = create(:user) + changeset = create(:changeset, :user => create(:user, :data_public => false)) + create(:changeset, :user => user) + + sidebar_browse_check :changeset_path, changeset.id, "changesets/show" + end + + def test_show_element_links + changeset = create(:changeset) + node = create(:node, :with_history, :changeset => changeset) + way = create(:way, :with_history, :changeset => changeset) + relation = create(:relation, :with_history, :changeset => changeset) + + sidebar_browse_check :changeset_path, changeset.id, "changesets/show" + assert_dom "a[href='#{node_path node}']", :count => 1 + assert_dom "a[href='#{old_node_path node, 1}']", :count => 1 + assert_dom "a[href='#{way_path way}']", :count => 1 + assert_dom "a[href='#{old_way_path way, 1}']", :count => 1 + assert_dom "a[href='#{relation_path relation}']", :count => 1 + assert_dom "a[href='#{old_relation_path relation, 1}']", :count => 1 + end + + def test_show_paginated_element_links + page_size = 20 + changeset = create(:changeset) + nodes = create_list(:node, page_size + 1, :with_history, :changeset => changeset) + ways = create_list(:way, page_size + 1, :with_history, :changeset => changeset) + relations = create_list(:relation, page_size + 1, :with_history, :changeset => changeset) + + sidebar_browse_check :changeset_path, changeset.id, "changesets/show" + page_size.times do |i| + assert_dom "a[href='#{node_path nodes[i]}']", :count => 1 + assert_dom "a[href='#{old_node_path nodes[i], 1}']", :count => 1 + assert_dom "a[href='#{way_path ways[i]}']", :count => 1 + assert_dom "a[href='#{old_way_path ways[i], 1}']", :count => 1 + assert_dom "a[href='#{relation_path relations[i]}']", :count => 1 + assert_dom "a[href='#{old_relation_path relations[i], 1}']", :count => 1 + end + end + ## # This should display the last 20 non-empty changesets def test_feed diff --git a/test/controllers/site_controller_test.rb b/test/controllers/site_controller_test.rb index cc155155f..eff9ce093 100644 --- a/test/controllers/site_controller_test.rb +++ b/test/controllers/site_controller_test.rb @@ -147,7 +147,7 @@ class SiteControllerTest < ActionDispatch::IntegrationTest get permalink_path(:code => "wBz3--", :changeset => 4) assert_response :redirect - assert_redirected_to :controller => :browse, :action => :changeset, :id => 4, :anchor => "map=3/4.8779296875/3.955078125" + assert_redirected_to changeset_path(:id => 4, :anchor => "map=3/4.8779296875/3.955078125") end # Test the key page diff --git a/test/test_helper.rb b/test/test_helper.rb index 60edf6e0c..1d04f57da 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -383,5 +383,41 @@ module ActiveSupport ensure unfreeze_time end + + # This is a convenience method for checks of resources rendered in a map view sidebar + # First we check that when we don't have an id, it will correctly return a 404 + # then we check that we get the correct 404 when a non-existant id is passed + # then we check that it will get a successful response, when we do pass an id + def sidebar_browse_check(path, id, template) + path_method = method(path) + + assert_raise ActionController::UrlGenerationError do + get path_method.call + end + + assert_raise ActionController::UrlGenerationError do + get path_method.call(:id => -10) # we won't have an id that's negative + end + + get path_method.call(:id => 0) + assert_response :not_found + assert_template "browse/not_found" + assert_template :layout => "map" + + get path_method.call(:id => 0), :xhr => true + assert_response :not_found + assert_template "browse/not_found" + assert_template :layout => "xhr" + + get path_method.call(:id => id) + assert_response :success + assert_template template + assert_template :layout => "map" + + get path_method.call(:id => id), :xhr => true + assert_response :success + assert_template template + assert_template :layout => "xhr" + end end end