Write some basic functionality tests for trace.import
This commit is contained in:
parent
3b96bbc809
commit
d02e4ad461
3 changed files with 63 additions and 0 deletions
1
Gemfile
1
Gemfile
|
@ -128,6 +128,7 @@ end
|
|||
|
||||
# Gems needed for running tests
|
||||
group :test do
|
||||
gem "fakefs", :require => "fakefs/safe"
|
||||
gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
|
||||
gem "rails-controller-testing"
|
||||
gem "rubocop"
|
||||
|
|
|
@ -117,6 +117,7 @@ GEM
|
|||
factory_bot_rails (4.11.1)
|
||||
factory_bot (~> 4.11.1)
|
||||
railties (>= 3.0.0)
|
||||
fakefs (0.18.1)
|
||||
faraday (0.15.4)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.25)
|
||||
|
@ -403,6 +404,7 @@ DEPENDENCIES
|
|||
delayed_job_active_record
|
||||
dynamic_form
|
||||
factory_bot_rails
|
||||
fakefs
|
||||
faraday
|
||||
gd2-ffij
|
||||
geoip
|
||||
|
|
|
@ -192,6 +192,66 @@ class TraceTest < ActiveSupport::TestCase
|
|||
trace.destroy
|
||||
end
|
||||
|
||||
# When testing the trace.import method, care needs to be taken regarding the icon
|
||||
# fixture files, since the fixtures could be overwritten by newly generated files.
|
||||
# We use FakeFS to temporarily protect the real fixture files from being overwritten.
|
||||
|
||||
def test_import_removes_previous_tracepoints
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test", "gpx"))
|
||||
trace = create(:trace, :fixture => "a")
|
||||
# Tracepoints don't have a primary key, so we use a specific latitude to
|
||||
# check for successful deletion
|
||||
create(:tracepoint, :latitude => 54321, :trace => trace)
|
||||
assert_equal 1, Tracepoint.where(:latitude => 54321).count
|
||||
|
||||
trace.import
|
||||
|
||||
assert_equal 0, Tracepoint.where(:latitude => 54321).count
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_creates_tracepoints
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test", "gpx"))
|
||||
trace = create(:trace, :fixture => "a")
|
||||
assert_equal 0, Tracepoint.where(:gpx_id => trace.id).count
|
||||
|
||||
trace.import
|
||||
|
||||
trace.reload
|
||||
assert_equal 1, Tracepoint.where(:gpx_id => trace.id).count
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_creates_icon
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test", "gpx"))
|
||||
trace = create(:trace, :fixture => "a")
|
||||
icon_path = File.join(GPX_IMAGE_DIR, "#{trace.id}_icon.gif")
|
||||
FileUtils.rm(icon_path)
|
||||
assert_equal false, File.exist?(icon_path)
|
||||
|
||||
trace.import
|
||||
|
||||
assert_equal true, File.exist?(icon_path)
|
||||
end
|
||||
end
|
||||
|
||||
def test_import_creates_large_picture
|
||||
FakeFS do
|
||||
FakeFS::FileSystem.clone(Rails.root.join("test", "gpx"))
|
||||
trace = create(:trace, :fixture => "a")
|
||||
large_picture_path = File.join(GPX_IMAGE_DIR, "#{trace.id}.gif")
|
||||
FileUtils.rm(large_picture_path)
|
||||
assert_equal false, File.exist?(large_picture_path)
|
||||
|
||||
trace.import
|
||||
|
||||
assert_equal true, File.exist?(large_picture_path)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_query(query, traces)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue