5 class DownloadsControllerTest < ActionDispatch::IntegrationTest
7 # test all routes which lead to this controller
10 { :path => "/api/0.6/changeset/1/download", :method => :get },
11 { :controller => "api/changesets/downloads", :action => "show", :changeset_id => "1" }
16 changeset = create(:changeset)
17 node = create(:node, :with_history, :version => 1, :changeset => changeset)
18 tag = create(:old_node_tag, :old_node => node.old_nodes.find_by(:version => 1))
19 node2 = create(:node, :with_history, :version => 1, :changeset => changeset)
20 _node3 = create(:node, :with_history, :deleted, :version => 1, :changeset => changeset)
21 _relation = create(:relation, :with_history, :version => 1, :changeset => changeset)
22 _relation2 = create(:relation, :with_history, :deleted, :version => 1, :changeset => changeset)
24 get api_changeset_download_path(changeset)
26 assert_response :success
27 # FIXME: needs more assert_select tests
28 assert_select "osmChange[version='#{Settings.api_version}'][generator='#{Settings.generator}']" do
29 assert_select "create", :count => 5
30 assert_select "create>node[id='#{node.id}'][visible='#{node.visible?}'][version='#{node.version}']" do
31 assert_select "tag[k='#{tag.k}'][v='#{tag.v}']"
33 assert_select "create>node[id='#{node2.id}']"
37 def test_show_should_sort_by_timestamp
38 changeset = create(:changeset)
39 node1 = create(:old_node, :version => 2, :timestamp => "2020-02-01", :changeset => changeset)
40 node0 = create(:old_node, :version => 2, :timestamp => "2020-01-01", :changeset => changeset)
42 get api_changeset_download_path(changeset)
44 assert_response :success
45 assert_dom "modify", :count => 2 do |modify|
46 assert_dom modify[0], ">node", :count => 1 do |node|
47 assert_dom node, ">@id", node0.node_id.to_s
49 assert_dom modify[1], ">node", :count => 1 do |node|
50 assert_dom node, ">@id", node1.node_id.to_s
55 def test_show_should_sort_by_version
56 changeset = create(:changeset)
57 node1 = create(:old_node, :version => 3, :timestamp => "2020-01-01", :changeset => changeset)
58 node0 = create(:old_node, :version => 2, :timestamp => "2020-01-01", :changeset => changeset)
60 get api_changeset_download_path(changeset)
62 assert_response :success
63 assert_dom "modify", :count => 2 do |modify|
64 assert_dom modify[0], ">node", :count => 1 do |node|
65 assert_dom node, ">@id", node0.node_id.to_s
67 assert_dom modify[1], ">node", :count => 1 do |node|
68 assert_dom node, ">@id", node1.node_id.to_s
74 # check that the changeset download for a changeset with a redacted
75 # element in it doesn't contain that element.
76 def test_show_redacted
77 changeset = create(:changeset)
78 node = create(:node, :with_history, :version => 2, :changeset => changeset)
79 node_v1 = node.old_nodes.find_by(:version => 1)
80 node_v1.redact!(create(:redaction))
82 get api_changeset_download_path(changeset)
83 assert_response :success
85 assert_select "osmChange", 1
86 # this changeset contains the node in versions 1 & 2, but 1 should
88 assert_select "osmChange node[id='#{node.id}']", 1
89 assert_select "osmChange node[id='#{node.id}'][version='1']", 0