require "test_helper"
-require "minitest/mock"
class TracesControllerTest < ActionController::TestCase
+ # Use temporary directories with unique names for each test
+ # This allows the tests to be run in parallel.
+ def setup
+ @gpx_trace_dir_orig = Settings.gpx_trace_dir
+ @gpx_image_dir_orig = Settings.gpx_image_dir
+ Settings.gpx_trace_dir = Dir.mktmpdir("trace", Rails.root.join("test/gpx"))
+ Settings.gpx_image_dir = Dir.mktmpdir("image", Rails.root.join("test/gpx"))
+ end
+
def teardown
- File.unlink(*Dir.glob(File.join(Settings.gpx_trace_dir, "*.gpx")))
- File.unlink(*Dir.glob(File.join(Settings.gpx_image_dir, "*.gif")))
+ FileUtils.remove_dir(Settings.gpx_trace_dir)
+ FileUtils.remove_dir(Settings.gpx_image_dir)
+ Settings.gpx_trace_dir = @gpx_trace_dir_orig
+ Settings.gpx_image_dir = @gpx_image_dir_orig
end
##
# Test creating a trace
def test_create_post
# Get file to use
- fixture = Rails.root.join("test", "gpx", "fixtures", "a.gpx")
+ fixture = Rails.root.join("test/gpx/fixtures/a.gpx")
file = Rack::Test::UploadedFile.new(fixture, "application/gpx+xml")
user = create(:user)
# Test creating a trace with validation errors
def test_create_post_with_validation_errors
# Get file to use
- fixture = Rails.root.join("test", "gpx", "fixtures", "a.gpx")
+ fixture = Rails.root.join("test/gpx/fixtures/a.gpx")
file = Rack::Test::UploadedFile.new(fixture, "application/gpx+xml")
user = create(:user)
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.trace_summary", Regexp.new(Regexp.escape("(#{trace.size} points)")) if trace.inserted?
+ assert_select row, "span", 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