]> git.openstreetmap.org Git - rails.git/blob - test/system/changeset_elements_test.rb
22c06593347e5ed9e417b1395e0f3fce166fb5fa
[rails.git] / test / system / changeset_elements_test.rb
1 require "application_system_test_case"
2
3 class ChangesetElementsTest < ApplicationSystemTestCase
4   test "can navigate between element subpages without losing comment input" do
5     element_page_size = 20
6     changeset = create(:changeset, :closed)
7     ways = create_list(:way, element_page_size + 1, :with_history, :changeset => changeset)
8     way_paths = ways.map { |way| way_path(way) }
9     nodes = create_list(:node, element_page_size + 1, :with_history, :changeset => changeset)
10     node_paths = nodes.map { |node| node_path(node) }
11
12     sign_in_as(create(:user))
13     visit changeset_path(changeset)
14
15     within_sidebar do
16       assert_one_missing_link way_paths
17       assert_link "Ways (21-21 of 21)"
18
19       assert_one_missing_link node_paths
20       assert_link "Nodes (21-21 of 21)"
21     end
22   end
23
24   private
25
26   def assert_one_missing_link(hrefs)
27     missing_href = nil
28     hrefs.each do |href|
29       missing = true
30       assert_link :href => href, :minimum => 0, :maximum => 1 do
31         missing = false
32       end
33       if missing
34         assert_nil missing_href, "unexpected extra missing link '#{href}'"
35         missing_href = href
36       end
37     end
38     assert_not_nil missing_href, "expected one link missing but all are present"
39     missing_href
40   end
41 end