]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/traces_controller_test.rb
Switch traces to use ActiveStorage
[rails.git] / test / controllers / traces_controller_test.rb
index 364142dd9a669b4aaf52352d16dc57c46419c7ea..48b5c457f7fe98b2f024d09ba9db0894897a3a7b 100644 (file)
@@ -133,7 +133,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
   # Check that the index of traces is displayed
   def test_index
     user = create(:user)
-    # The fourth test below is surpisingly sensitive to timestamp ordering when the timestamps are equal.
+    # The fourth test below is surprisingly sensitive to timestamp ordering when the timestamps are equal.
     trace_a = create(:trace, :visibility => "public", :timestamp => 4.seconds.ago) do |trace|
       create(:tracetag, :trace => trace, :tag => "London")
     end
@@ -178,7 +178,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # First try to get it when not logged in
     get traces_mine_path
-    assert_redirected_to :controller => "users", :action => "login", :referer => "/traces/mine"
+    assert_redirected_to login_path(:referer => "/traces/mine")
 
     session_for(user)
 
@@ -255,7 +255,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
   # Check the RSS feed
   def test_rss
     user = create(:user)
-    # The fourth test below is surpisingly sensitive to timestamp ordering when the timestamps are equal.
+    # The fourth test below is surprisingly sensitive to timestamp ordering when the timestamps are equal.
     trace_a = create(:trace, :visibility => "public", :timestamp => 4.seconds.ago) do |trace|
       create(:tracetag, :trace => trace, :tag => "London")
     end
@@ -369,16 +369,22 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # First with no auth, which should work since the trace is public
     get trace_data_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
+    follow_redirect!
+    follow_redirect!
     check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
 
     # Now with some other user, which should work since the trace is public
     session_for(create(:user))
     get trace_data_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
+    follow_redirect!
+    follow_redirect!
     check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
 
     # And finally we should be able to do it with the owner of the trace
     session_for(public_trace_file.user)
     get trace_data_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
+    follow_redirect!
+    follow_redirect!
     check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
   end
 
@@ -388,7 +394,9 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # First get the data as is
     get trace_data_path(:display_name => identifiable_trace_file.user.display_name, :id => identifiable_trace_file)
-    check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/x-gzip", "gpx.gz"
+    follow_redirect!
+    follow_redirect!
+    check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
 
     # Now ask explicitly for XML format
     get trace_data_path(:display_name => identifiable_trace_file.user.display_name, :id => identifiable_trace_file.id, :format => "xml")
@@ -415,6 +423,8 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     # And finally we should be able to do it with the owner of the trace
     session_for(anon_trace_file.user)
     get trace_data_path(:display_name => anon_trace_file.user.display_name, :id => anon_trace_file)
+    follow_redirect!
+    follow_redirect!
     check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
   end
 
@@ -541,7 +551,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     # First with no auth
     get new_trace_path
     assert_response :redirect
-    assert_redirected_to :controller => :users, :action => :login, :referer => new_trace_path
+    assert_redirected_to login_path(:referer => new_trace_path)
 
     # Now authenticated as a user with gps.trace.visibility set
     user = create(:user)
@@ -598,7 +608,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     assert_equal %w[new trace], trace.tags.order(:tag).collect(&:tag)
     assert_equal "trackable", trace.visibility
     assert_not trace.inserted
-    assert_equal File.new(fixture).read, File.new(trace.trace_name).read
+    assert_equal File.new(fixture).read, trace.file.blob.download
     trace.destroy
     assert_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
   end
@@ -627,7 +637,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     # First with no auth
     get edit_trace_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
     assert_response :redirect
-    assert_redirected_to :controller => :users, :action => :login, :referer => edit_trace_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file.id)
+    assert_redirected_to login_path(:referer => edit_trace_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file.id))
 
     # Now with some other user, which should fail
     session_for(create(:user))
@@ -761,19 +771,19 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "index"
 
-    if !traces.empty?
+    if traces.empty?
+      assert_select "h4", /Nothing here yet/
+    else
       assert_select "table#trace_list tbody", :count => 1 do
         assert_select "tr", :count => traces.length do |rows|
           traces.zip(rows).each do |trace, row|
             assert_select row, "a", Regexp.new(Regexp.escape(trace.name))
-            assert_select row, "span", Regexp.new(Regexp.escape("(#{trace.size} points)")) if trace.inserted?
+            assert_select row, "li", Regexp.new(Regexp.escape("#{trace.size} points")) if trace.inserted?
             assert_select row, "td", Regexp.new(Regexp.escape(trace.description))
             assert_select row, "td", Regexp.new(Regexp.escape("by #{trace.user.display_name}"))
           end
         end
       end
-    else
-      assert_select "h4", /Nothing here yet/
     end
   end
 
@@ -789,19 +799,22 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
   end
 
   def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
-    assert_response :success
     assert_equal digest, Digest::MD5.hexdigest(response.body)
     assert_equal content_type, response.media_type
     assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
   end
 
   def check_trace_picture(trace)
+    follow_redirect!
+    follow_redirect!
     assert_response :success
     assert_equal "image/gif", response.media_type
     assert_equal trace.large_picture, response.body
   end
 
   def check_trace_icon(trace)
+    follow_redirect!
+    follow_redirect!
     assert_response :success
     assert_equal "image/gif", response.media_type
     assert_equal trace.icon_picture, response.body