+
+ ##
+ # This should display the last 20 changesets closed.
+ def test_list_xhr
+ xhr :get, :list, {:format => "html"}
+ assert_response :success
+ assert_template "history"
+ assert_template :layout => "xhr"
+ assert_select "h2", :text => "Changesets", :count => 1
+
+ get :list, {:format => "html", :list => '1', :bbox => '-180,-90,90,180'}
+ assert_response :success
+ assert_template "list"
+
+ changesets = Changeset.
+ where("num_changes > 0 and min_lon is not null").
+ order(:created_at => :desc).
+ limit(20)
+ assert changesets.size <= 20
+
+ # Now check that all 20 (or however many were returned) changesets are in the html
+ assert_select "li", :count => changesets.size
+ changesets.each do |changeset|
+ # FIXME this test needs rewriting - test for table contents
+ end
+ end
+
+ ##
+ # Checks the display of the user changesets listing
+ def test_list_user
+ user = users(:public_user)
+ get :list, {:format => "html", :display_name => user.display_name}
+ assert_response :success
+ assert_template "history"
+ ## FIXME need to add more checks to see which if edits are actually shown if your data is public
+ end
+
+ ##
+ # Check the not found of the list user changesets
+ def test_list_user_not_found
+ get :list, {:format => "html", :display_name => "Some random user"}
+ assert_response :not_found
+ assert_template 'user/no_such_user'
+ end
+
+ ##
+ # This should display the last 20 changesets closed.
+ def test_feed
+ changesets = Changeset.where("num_changes > 0").order(:created_at => :desc).limit(20)
+ assert changesets.size <= 20
+ get :feed, {:format => "atom"}
+ assert_response :success
+ assert_template "list"
+ # Now check that all 20 (or however many were returned) changesets are in the html
+ assert_select "feed", :count => 1
+ assert_select "entry", :count => changesets.size
+ changesets.each do |changeset|
+ # FIXME this test needs rewriting - test for feed contents
+ end
+ end
+
+ ##
+ # Checks the display of the user changesets feed
+ def test_feed_user
+ user = users(:public_user)
+ get :feed, {:format => "atom", :display_name => user.display_name}
+ assert_response :success
+ assert_template "list"
+ assert_equal "application/atom+xml", response.content_type
+ ## FIXME need to add more checks to see which if edits are actually shown if your data is public
+ end
+
+ ##
+ # Check the not found of the user changesets feed
+ def test_feed_user_not_found
+ get :feed, {:format => "atom", :display_name => "Some random user"}
+ assert_response :not_found
+ end
+
+ ##
+ # check that the changeset download for a changeset with a redacted
+ # element in it doesn't contain that element.
+ def test_diff_download_redacted
+ changeset_id = changesets(:public_user_first_change).id
+
+ get :download, :id => changeset_id
+ assert_response :success
+
+ assert_select "osmChange", 1
+ # this changeset contains node 17 in versions 1 & 2, but 1 should
+ # be hidden.
+ assert_select "osmChange node[id=17]", 1
+ assert_select "osmChange node[id=17][version=1]", 0
+ end
+