]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/traces_controller_test.rb
Merge remote-tracking branch 'upstream/pull/4329'
[rails.git] / test / controllers / traces_controller_test.rb
index 614b21b1e3d7331ba372023ce813f77dbd5bec23..595284bb6d54fb06636e55c187d09535aa7f337a 100644 (file)
@@ -221,13 +221,97 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     assert_select "table#trace_list tbody", :count => 1 do
       assert_select "tr", :count => 20
     end
     assert_select "table#trace_list tbody", :count => 1 do
       assert_select "tr", :count => 20
     end
+    assert_select "li.page-item.disabled span.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
 
     # Try and get the second page
 
     # Try and get the second page
-    get traces_path(:page => 2)
+    get css_select("li.page-item a.page-link").last["href"]
     assert_response :success
     assert_select "table#trace_list tbody", :count => 1 do
       assert_select "tr", :count => 20
     end
     assert_response :success
     assert_select "table#trace_list tbody", :count => 1 do
       assert_select "tr", :count => 20
     end
+    assert_select "li.page-item a.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
+
+    # Try and get the third page
+    get css_select("li.page-item a.page-link").last["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 10
+    end
+    assert_select "li.page-item a.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item.disabled span.page-link", :text => "Older Traces", :count => 2
+
+    # Go back to the second page
+    get css_select("li.page-item a.page-link").first["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 20
+    end
+    assert_select "li.page-item a.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
+
+    # Go back to the first page
+    get css_select("li.page-item a.page-link").first["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 20
+    end
+    assert_select "li.page-item.disabled span.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
+  end
+
+  # Check a multi-page index of tagged traces
+  def test_index_tagged_paged
+    # Create several pages worth of traces
+    create_list(:trace, 100) do |trace, index|
+      create(:tracetag, :trace => trace, :tag => "London") if index.even?
+    end
+
+    # Try and get the index
+    get traces_path(:tag => "London")
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 20
+    end
+    assert_select "li.page-item.disabled span.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
+
+    # Try and get the second page
+    get css_select("li.page-item a.page-link").last["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 20
+    end
+    assert_select "li.page-item a.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
+
+    # Try and get the third page
+    get css_select("li.page-item a.page-link").last["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 10
+    end
+    assert_select "li.page-item a.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item.disabled span.page-link", :text => "Older Traces", :count => 2
+
+    # Go back to the second page
+    get css_select("li.page-item a.page-link").first["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 20
+    end
+    assert_select "li.page-item a.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
+
+    # Go back to the first page
+    get css_select("li.page-item a.page-link").first["href"]
+    assert_response :success
+    assert_select "table#trace_list tbody", :count => 1 do
+      assert_select "tr", :count => 20
+    end
+    assert_select "li.page-item.disabled span.page-link", :text => "Newer Traces", :count => 2
+    assert_select "li.page-item a.page-link", :text => "Older Traces", :count => 2
   end
 
   # Check the RSS feed
   end
 
   # Check the RSS feed
@@ -574,7 +658,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # Now authenticated
     create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
 
     # Now authenticated
     create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
-    assert_not_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+    assert_not_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
     session_for(user)
     post traces_path, :params => { :trace => { :gpx_file => file, :description => "New Trace", :tagstring => "new,trace", :visibility => "trackable" } }
     assert_response :redirect
     session_for(user)
     post traces_path, :params => { :trace => { :gpx_file => file, :description => "New Trace", :tagstring => "new,trace", :visibility => "trackable" } }
     assert_response :redirect
@@ -588,7 +672,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     assert_not trace.inserted
     assert_equal File.new(fixture).read, trace.file.blob.download
     trace.destroy
     assert_not trace.inserted
     assert_equal File.new(fixture).read, trace.file.blob.download
     trace.destroy
-    assert_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+    assert_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
   end
 
   # Test creating a trace with validation errors
   end
 
   # Test creating a trace with validation errors
@@ -600,7 +684,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # Now authenticated
     create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
 
     # Now authenticated
     create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
-    assert_not_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+    assert_not_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
     session_for(user)
     post traces_path, :params => { :trace => { :gpx_file => file, :description => "", :tagstring => "new,trace", :visibility => "trackable" } }
     assert_template :new
     session_for(user)
     post traces_path, :params => { :trace => { :gpx_file => file, :description => "", :tagstring => "new,trace", :visibility => "trackable" } }
     assert_template :new