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
|
# Gems needed for running tests
|
||||||
group :test do
|
group :test do
|
||||||
|
gem "fakefs", :require => "fakefs/safe"
|
||||||
gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
|
gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
|
||||||
gem "rails-controller-testing"
|
gem "rails-controller-testing"
|
||||||
gem "rubocop"
|
gem "rubocop"
|
||||||
|
|
|
@ -117,6 +117,7 @@ GEM
|
||||||
factory_bot_rails (4.11.1)
|
factory_bot_rails (4.11.1)
|
||||||
factory_bot (~> 4.11.1)
|
factory_bot (~> 4.11.1)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
|
fakefs (0.18.1)
|
||||||
faraday (0.15.4)
|
faraday (0.15.4)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
ffi (1.9.25)
|
ffi (1.9.25)
|
||||||
|
@ -403,6 +404,7 @@ DEPENDENCIES
|
||||||
delayed_job_active_record
|
delayed_job_active_record
|
||||||
dynamic_form
|
dynamic_form
|
||||||
factory_bot_rails
|
factory_bot_rails
|
||||||
|
fakefs
|
||||||
faraday
|
faraday
|
||||||
gd2-ffij
|
gd2-ffij
|
||||||
geoip
|
geoip
|
||||||
|
|
|
@ -192,6 +192,66 @@ class TraceTest < ActiveSupport::TestCase
|
||||||
trace.destroy
|
trace.destroy
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
def check_query(query, traces)
|
def check_query(query, traces)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue