X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/4d47cff5e1d359fa27c5c46d2706faae39a3eacc..db52805f97b9134a66fe1b1240d81e1e6f60736a:/test/controllers/api/changesets_controller_test.rb
diff --git a/test/controllers/api/changesets_controller_test.rb b/test/controllers/api/changesets_controller_test.rb
index 567f77fd3..af5cabbaa 100644
--- a/test/controllers/api/changesets_controller_test.rb
+++ b/test/controllers/api/changesets_controller_test.rb
@@ -21,14 +21,26 @@ module Api
{ :path => "/api/0.6/changeset/1", :method => :get },
{ :controller => "api/changesets", :action => "show", :id => "1" }
)
+ assert_routing(
+ { :path => "/api/0.6/changeset/1.json", :method => :get },
+ { :controller => "api/changesets", :action => "show", :id => "1", :format => "json" }
+ )
assert_routing(
{ :path => "/api/0.6/changeset/1/subscribe", :method => :post },
{ :controller => "api/changesets", :action => "subscribe", :id => "1" }
)
+ assert_routing(
+ { :path => "/api/0.6/changeset/1/subscribe.json", :method => :post },
+ { :controller => "api/changesets", :action => "subscribe", :id => "1", :format => "json" }
+ )
assert_routing(
{ :path => "/api/0.6/changeset/1/unsubscribe", :method => :post },
{ :controller => "api/changesets", :action => "unsubscribe", :id => "1" }
)
+ assert_routing(
+ { :path => "/api/0.6/changeset/1/unsubscribe.json", :method => :post },
+ { :controller => "api/changesets", :action => "unsubscribe", :id => "1", :format => "json" }
+ )
assert_routing(
{ :path => "/api/0.6/changeset/1", :method => :put },
{ :controller => "api/changesets", :action => "update", :id => "1" }
@@ -41,6 +53,10 @@ module Api
{ :path => "/api/0.6/changesets", :method => :get },
{ :controller => "api/changesets", :action => "query" }
)
+ assert_routing(
+ { :path => "/api/0.6/changesets.json", :method => :get },
+ { :controller => "api/changesets", :action => "query", :format => "json" }
+ )
end
# -----------------------
@@ -63,7 +79,7 @@ module Api
""
put changeset_create_path, :params => xml, :headers => auth_header
- assert_response :success, "Creation of changeset did not return sucess status"
+ assert_response :success, "Creation of changeset did not return success status"
newid = @response.body.to_i
# check end time, should be an hour ahead of creation time
@@ -168,6 +184,99 @@ module Api
assert_select "osm>changeset>discussion>comment", 3
end
+ def test_show_json
+ changeset = create(:changeset)
+
+ get changeset_show_path(changeset), :params => { :format => "json" }
+ assert_response :success, "cannot get first changeset"
+
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+
+ assert_equal Settings.api_version, js["version"]
+ assert_equal "OpenStreetMap server", js["generator"]
+ assert_equal changeset.id, js["changeset"]["id"]
+ assert js["changeset"]["open"]
+ assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
+ assert_nil js["changeset"]["closed_at"]
+ assert_nil js["changeset"]["tags"]
+ assert_nil js["changeset"]["comments"]
+ assert_equal changeset.user.id, js["changeset"]["uid"]
+ assert_equal changeset.user.display_name, js["changeset"]["user"]
+
+ get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true }
+ assert_response :success, "cannot get first changeset with comments"
+
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal Settings.api_version, js["version"]
+ assert_equal "OpenStreetMap server", js["generator"]
+ assert_equal changeset.id, js["changeset"]["id"]
+ assert js["changeset"]["open"]
+ assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
+ assert_nil js["changeset"]["closed_at"]
+ assert_nil js["changeset"]["tags"]
+ assert_nil js["changeset"]["min_lat"]
+ assert_nil js["changeset"]["min_lon"]
+ assert_nil js["changeset"]["max_lat"]
+ assert_nil js["changeset"]["max_lon"]
+ assert_equal 0, js["changeset"]["comments"].count
+ end
+
+ def test_show_tag_and_discussion_json
+ changeset = create(:changeset, :closed)
+
+ tag1 = ChangesetTag.new
+ tag1.changeset_id = changeset.id
+ tag1.k = "created_by"
+ tag1.v = "JOSM/1.5 (18364)"
+
+ tag2 = ChangesetTag.new
+ tag2.changeset_id = changeset.id
+ tag2.k = "comment"
+ tag2.v = "changeset comment"
+
+ changeset.changeset_tags = [tag1, tag2]
+
+ create_list(:changeset_comment, 3, :changeset_id => changeset.id)
+
+ get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true }
+ assert_response :success, "cannot get closed changeset with comments"
+
+ js = ActiveSupport::JSON.decode(@response.body)
+
+ assert_not_nil js
+ assert_equal Settings.api_version, js["version"]
+ assert_equal "OpenStreetMap server", js["generator"]
+ assert_equal changeset.id, js["changeset"]["id"]
+ assert_not js["changeset"]["open"]
+ assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
+ assert_equal changeset.closed_at.xmlschema, js["changeset"]["closed_at"]
+ assert_equal 2, js["changeset"]["tags"].count
+ assert_equal 3, js["changeset"]["comments"].count
+ assert_equal 3, js["changeset"]["comments_count"]
+ assert_equal 0, js["changeset"]["changes_count"]
+ assert_not_nil js["changeset"]["comments"][0]["uid"]
+ assert_not_nil js["changeset"]["comments"][0]["user"]
+ assert_not_nil js["changeset"]["comments"][0]["text"]
+ end
+
+ def test_show_bbox_json
+ # test bbox attribute
+ changeset = create(:changeset, :min_lat => (-5 * GeoRecord::SCALE).round, :min_lon => (5 * GeoRecord::SCALE).round,
+ :max_lat => (15 * GeoRecord::SCALE).round, :max_lon => (12 * GeoRecord::SCALE).round)
+
+ get changeset_show_path(changeset), :params => { :format => "json" }
+ assert_response :success, "cannot get first changeset"
+
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal(-5, js["changeset"]["min_lat"])
+ assert_equal 5, js["changeset"]["min_lon"]
+ assert_equal 15, js["changeset"]["max_lat"]
+ assert_equal 12, js["changeset"]["max_lon"]
+ end
+
##
# check that a changeset that doesn't exist returns an appropriate message
def test_show_not_found
@@ -205,8 +314,8 @@ module Api
# test that it really is closed now
cs = Changeset.find(changeset.id)
- assert_not(cs.is_open?,
- "changeset should be closed now (#{cs.closed_at} > #{Time.now.getutc}.")
+ assert_not(cs.open?,
+ "changeset should be closed now (#{cs.closed_at} > #{Time.now.utc}.")
end
##
@@ -700,7 +809,7 @@ module Api
# upload it
post changeset_upload_path(changeset), :params => diff, :headers => auth_header
assert_response :bad_request,
- "shoudln't be able to upload too long a tag to changeset: #{@response.body}"
+ "shouldn't be able to upload too long a tag to changeset: #{@response.body}"
end
##
@@ -1326,7 +1435,7 @@ module Api
-
+
@@ -1428,7 +1537,6 @@ module Api
get changeset_download_path(changeset)
assert_response :success
- assert_template nil
# print @response.body
# FIXME: needs more assert_select tests
assert_select "osmChange[version='#{Settings.api_version}'][generator='#{Settings.generator}']" do
@@ -1543,6 +1651,17 @@ module Api
assert_response :success, "can't get changesets by user name"
assert_changesets [private_user_changeset, private_user_closed_changeset]
+ # test json endpoint
+ get changesets_path(:display_name => private_user.display_name), :headers => auth_header, :params => { :format => "json" }
+ assert_response :success, "can't get changesets by user name"
+
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+
+ assert_equal Settings.api_version, js["version"]
+ assert_equal "OpenStreetMap server", js["generator"]
+ assert_equal 2, js["changesets"].count
+
# check that the correct error is given when we provide both UID and name
get changesets_path(:user => private_user.id,
:display_name => private_user.display_name), :headers => auth_header
@@ -1744,7 +1863,7 @@ module Api
assert_equal Changeset::MAX_ELEMENTS + 1, changeset.num_changes
# check that the changeset is now closed as well
- assert_not(changeset.is_open?,
+ assert_not(changeset.open?,
"changeset should have been auto-closed by exceeding " \
"element limit.")
end