Replace trace-related fixtures with factories.
The mocking and stubbing in the controller tests is unfortunate, but the models interact directly with the filesystem using the trace id so that's hard to control any other way.
This commit is contained in:
parent
f7b4793c50
commit
15689af6bf
17 changed files with 543 additions and 536 deletions
|
@ -1,8 +1,9 @@
|
|||
require "test_helper"
|
||||
require "digest"
|
||||
require "minitest/mock"
|
||||
|
||||
class TraceTest < ActiveSupport::TestCase
|
||||
api_fixtures
|
||||
fixtures :users
|
||||
|
||||
def setup
|
||||
@gpx_trace_dir = Object.send("remove_const", "GPX_TRACE_DIR")
|
||||
|
@ -20,41 +21,55 @@ class TraceTest < ActiveSupport::TestCase
|
|||
Object.const_set("GPX_IMAGE_DIR", @gpx_image_dir)
|
||||
end
|
||||
|
||||
def test_trace_count
|
||||
assert_equal 10, Trace.count
|
||||
end
|
||||
|
||||
def test_visible
|
||||
check_query(Trace.visible, [
|
||||
:public_trace_file, :anon_trace_file, :trackable_trace_file,
|
||||
:identifiable_trace_file, :zipped_trace_file, :tar_trace_file,
|
||||
:tar_gzip_trace_file, :tar_bzip_trace_file, :pending_trace_file
|
||||
])
|
||||
public_trace_file = create(:trace)
|
||||
create(:trace, :deleted)
|
||||
check_query(Trace.visible, [public_trace_file])
|
||||
end
|
||||
|
||||
def test_visible_to
|
||||
check_query(Trace.visible_to(1), [
|
||||
:public_trace_file, :identifiable_trace_file, :pending_trace_file
|
||||
public_trace_file = create(:trace, :visibility => "public", :user => users(:normal_user))
|
||||
anon_trace_file = create(:trace, :visibility => "private", :user => users(:public_user))
|
||||
identifiable_trace_file = create(:trace, :visibility => "identifiable", :user => users(:normal_user))
|
||||
pending_trace_file = create(:trace, :visibility => "public", :user => users(:public_user), :inserted => false)
|
||||
trackable_trace_file = create(:trace, :visibility => "trackable", :user => users(:public_user))
|
||||
_other_trace_file = create(:trace, :visibility => "private", :user => users(:second_public_user))
|
||||
|
||||
check_query(Trace.visible_to(users(:normal_user).id), [
|
||||
public_trace_file, identifiable_trace_file, pending_trace_file
|
||||
])
|
||||
check_query(Trace.visible_to(2), [
|
||||
:public_trace_file, :anon_trace_file, :trackable_trace_file,
|
||||
:identifiable_trace_file, :pending_trace_file
|
||||
check_query(Trace.visible_to(users(:public_user)), [
|
||||
public_trace_file, anon_trace_file, trackable_trace_file,
|
||||
identifiable_trace_file, pending_trace_file
|
||||
])
|
||||
check_query(Trace.visible_to(3), [
|
||||
:public_trace_file, :identifiable_trace_file, :pending_trace_file
|
||||
check_query(Trace.visible_to(users(:inactive_user)), [
|
||||
public_trace_file, identifiable_trace_file, pending_trace_file
|
||||
])
|
||||
end
|
||||
|
||||
def test_visible_to_all
|
||||
public_trace_file = create(:trace, :visibility => "public")
|
||||
_private_trace_file = create(:trace, :visibility => "private")
|
||||
identifiable_trace_file = create(:trace, :visibility => "identifiable")
|
||||
_trackable_trace_file = create(:trace, :visibility => "trackable")
|
||||
deleted_trace_file = create(:trace, :deleted, :visibility => "public")
|
||||
pending_trace_file = create(:trace, :visibility => "public", :inserted => false)
|
||||
|
||||
check_query(Trace.visible_to_all, [
|
||||
:public_trace_file, :identifiable_trace_file,
|
||||
:deleted_trace_file, :pending_trace_file
|
||||
public_trace_file, identifiable_trace_file,
|
||||
deleted_trace_file, pending_trace_file
|
||||
])
|
||||
end
|
||||
|
||||
def test_tagged
|
||||
check_query(Trace.tagged("London"), [:public_trace_file, :anon_trace_file])
|
||||
check_query(Trace.tagged("Birmingham"), [:anon_trace_file, :identifiable_trace_file])
|
||||
london_trace_file = create(:trace) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "London")
|
||||
end
|
||||
birmingham_trace_file = create(:trace) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "Birmingham")
|
||||
end
|
||||
check_query(Trace.tagged("London"), [london_trace_file])
|
||||
check_query(Trace.tagged("Birmingham"), [birmingham_trace_file])
|
||||
check_query(Trace.tagged("Unknown"), [])
|
||||
end
|
||||
|
||||
|
@ -74,7 +89,7 @@ class TraceTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
def test_tagstring
|
||||
trace = Trace.new(gpx_files(:public_trace_file).attributes)
|
||||
trace = build(:trace)
|
||||
trace.tagstring = "foo bar baz"
|
||||
assert trace.valid?
|
||||
assert_equal 3, trace.tags.length
|
||||
|
@ -92,66 +107,71 @@ class TraceTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
def test_public?
|
||||
assert_equal true, gpx_files(:public_trace_file).public?
|
||||
assert_equal false, gpx_files(:anon_trace_file).public?
|
||||
assert_equal false, gpx_files(:trackable_trace_file).public?
|
||||
assert_equal true, gpx_files(:identifiable_trace_file).public?
|
||||
assert_equal true, gpx_files(:deleted_trace_file).public?
|
||||
assert_equal true, build(:trace, :visibility => "public").public?
|
||||
assert_equal false, build(:trace, :visibility => "private").public?
|
||||
assert_equal false, build(:trace, :visibility => "trackable").public?
|
||||
assert_equal true, build(:trace, :visibility => "identifiable").public?
|
||||
assert_equal true, build(:trace, :deleted, :visibility => "public").public?
|
||||
end
|
||||
|
||||
def test_trackable?
|
||||
assert_equal false, gpx_files(:public_trace_file).trackable?
|
||||
assert_equal false, gpx_files(:anon_trace_file).trackable?
|
||||
assert_equal true, gpx_files(:trackable_trace_file).trackable?
|
||||
assert_equal true, gpx_files(:identifiable_trace_file).trackable?
|
||||
assert_equal false, gpx_files(:deleted_trace_file).trackable?
|
||||
assert_equal false, build(:trace, :visibility => "public").trackable?
|
||||
assert_equal false, build(:trace, :visibility => "private").trackable?
|
||||
assert_equal true, build(:trace, :visibility => "trackable").trackable?
|
||||
assert_equal true, build(:trace, :visibility => "identifiable").trackable?
|
||||
assert_equal false, build(:trace, :deleted, :visibility => "public").trackable?
|
||||
end
|
||||
|
||||
def test_identifiable?
|
||||
assert_equal false, gpx_files(:public_trace_file).identifiable?
|
||||
assert_equal false, gpx_files(:anon_trace_file).identifiable?
|
||||
assert_equal false, gpx_files(:trackable_trace_file).identifiable?
|
||||
assert_equal true, gpx_files(:identifiable_trace_file).identifiable?
|
||||
assert_equal false, gpx_files(:deleted_trace_file).identifiable?
|
||||
assert_equal false, build(:trace, :visibility => "public").identifiable?
|
||||
assert_equal false, build(:trace, :visibility => "private").identifiable?
|
||||
assert_equal false, build(:trace, :visibility => "trackable").identifiable?
|
||||
assert_equal true, build(:trace, :visibility => "identifiable").identifiable?
|
||||
assert_equal false, build(:trace, :deleted, :visibility => "public").identifiable?
|
||||
end
|
||||
|
||||
def test_mime_type
|
||||
assert_equal "application/gpx+xml", gpx_files(:public_trace_file).mime_type
|
||||
assert_equal "application/gpx+xml", gpx_files(:anon_trace_file).mime_type
|
||||
assert_equal "application/x-bzip2", gpx_files(:trackable_trace_file).mime_type
|
||||
assert_equal "application/x-gzip", gpx_files(:identifiable_trace_file).mime_type
|
||||
assert_equal "application/x-zip", gpx_files(:zipped_trace_file).mime_type
|
||||
assert_equal "application/x-tar", gpx_files(:tar_trace_file).mime_type
|
||||
assert_equal "application/x-gzip", gpx_files(:tar_gzip_trace_file).mime_type
|
||||
assert_equal "application/x-bzip2", gpx_files(:tar_bzip_trace_file).mime_type
|
||||
# The ids refer to the .gpx fixtures in test/traces
|
||||
check_mime_type(1, "application/gpx+xml")
|
||||
check_mime_type(2, "application/gpx+xml")
|
||||
check_mime_type(3, "application/x-bzip2")
|
||||
check_mime_type(4, "application/x-gzip")
|
||||
check_mime_type(6, "application/x-zip")
|
||||
check_mime_type(7, "application/x-tar")
|
||||
check_mime_type(8, "application/x-gzip")
|
||||
check_mime_type(9, "application/x-bzip2")
|
||||
end
|
||||
|
||||
def test_extension_name
|
||||
assert_equal ".gpx", gpx_files(:public_trace_file).extension_name
|
||||
assert_equal ".gpx", gpx_files(:anon_trace_file).extension_name
|
||||
assert_equal ".gpx.bz2", gpx_files(:trackable_trace_file).extension_name
|
||||
assert_equal ".gpx.gz", gpx_files(:identifiable_trace_file).extension_name
|
||||
assert_equal ".zip", gpx_files(:zipped_trace_file).extension_name
|
||||
assert_equal ".tar", gpx_files(:tar_trace_file).extension_name
|
||||
assert_equal ".tar.gz", gpx_files(:tar_gzip_trace_file).extension_name
|
||||
assert_equal ".tar.bz2", gpx_files(:tar_bzip_trace_file).extension_name
|
||||
# The ids refer to the .gpx fixtures in test/traces
|
||||
check_extension_name(1, ".gpx")
|
||||
check_extension_name(2, ".gpx")
|
||||
check_extension_name(3, ".gpx.bz2")
|
||||
check_extension_name(4, ".gpx.gz")
|
||||
check_extension_name(6, ".zip")
|
||||
check_extension_name(7, ".tar")
|
||||
check_extension_name(8, ".tar.gz")
|
||||
check_extension_name(9, ".tar.bz2")
|
||||
end
|
||||
|
||||
def test_xml_file
|
||||
assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:public_trace_file).xml_file)
|
||||
assert_equal "66179ca44f1e93d8df62e2b88cbea732", md5sum(gpx_files(:anon_trace_file).xml_file)
|
||||
assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:trackable_trace_file).xml_file)
|
||||
assert_equal "abd6675fdf3024a84fc0a1deac147c0d", md5sum(gpx_files(:identifiable_trace_file).xml_file)
|
||||
assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:zipped_trace_file).xml_file)
|
||||
assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:tar_trace_file).xml_file)
|
||||
assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:tar_gzip_trace_file).xml_file)
|
||||
assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:tar_bzip_trace_file).xml_file)
|
||||
check_xml_file(1, "848caa72f2f456d1bd6a0fdf228aa1b9")
|
||||
check_xml_file(2, "66179ca44f1e93d8df62e2b88cbea732")
|
||||
check_xml_file(3, "848caa72f2f456d1bd6a0fdf228aa1b9")
|
||||
check_xml_file(4, "abd6675fdf3024a84fc0a1deac147c0d")
|
||||
check_xml_file(6, "848caa72f2f456d1bd6a0fdf228aa1b9")
|
||||
check_xml_file(7, "848caa72f2f456d1bd6a0fdf228aa1b9")
|
||||
check_xml_file(8, "848caa72f2f456d1bd6a0fdf228aa1b9")
|
||||
check_xml_file(9, "848caa72f2f456d1bd6a0fdf228aa1b9")
|
||||
end
|
||||
|
||||
def test_large_picture
|
||||
picture = gpx_files(:public_trace_file).large_picture
|
||||
trace = Trace.create
|
||||
trace = create(:trace)
|
||||
picture = trace.stub :large_picture_name, "#{GPX_IMAGE_DIR}/1.gif" do
|
||||
trace.large_picture
|
||||
end
|
||||
|
||||
trace = Trace.create
|
||||
trace.large_picture = picture
|
||||
assert_equal "7c841749e084ee4a5d13f12cd3bef456", md5sum(File.new(trace.large_picture_name))
|
||||
assert_equal picture, trace.large_picture
|
||||
|
@ -160,9 +180,12 @@ class TraceTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
def test_icon_picture
|
||||
picture = gpx_files(:public_trace_file).icon_picture
|
||||
trace = Trace.create
|
||||
trace = create(:trace)
|
||||
picture = trace.stub :icon_picture_name, "#{GPX_IMAGE_DIR}/1_icon.gif" do
|
||||
trace.icon_picture
|
||||
end
|
||||
|
||||
trace = Trace.create
|
||||
trace.icon_picture = picture
|
||||
assert_equal "b47baf22ed0e85d77e808694fad0ee27", md5sum(File.new(trace.icon_picture_name))
|
||||
assert_equal picture, trace.icon_picture
|
||||
|
@ -173,12 +196,33 @@ class TraceTest < ActiveSupport::TestCase
|
|||
private
|
||||
|
||||
def check_query(query, traces)
|
||||
traces = traces.map { |t| gpx_files(t).id }.sort
|
||||
traces = traces.map { |t| t.id }.sort
|
||||
assert_equal traces, query.order(:id).ids
|
||||
end
|
||||
|
||||
def check_mime_type(id, mime_type)
|
||||
trace = create(:trace)
|
||||
trace.stub :trace_name, "#{GPX_TRACE_DIR}/#{id}.gpx" do
|
||||
assert_equal mime_type, trace.mime_type
|
||||
end
|
||||
end
|
||||
|
||||
def check_extension_name(id, extension_name)
|
||||
trace = create(:trace)
|
||||
trace.stub :trace_name, "#{GPX_TRACE_DIR}/#{id}.gpx" do
|
||||
assert_equal extension_name, trace.extension_name
|
||||
end
|
||||
end
|
||||
|
||||
def check_xml_file(id, md5sum)
|
||||
trace = create(:trace)
|
||||
trace.stub :trace_name, "#{GPX_TRACE_DIR}/#{id}.gpx" do
|
||||
assert_equal md5sum, md5sum(trace.xml_file)
|
||||
end
|
||||
end
|
||||
|
||||
def trace_valid(attrs, result = true)
|
||||
entry = Trace.new(gpx_files(:public_trace_file).attributes)
|
||||
entry = build(:trace)
|
||||
entry.assign_attributes(attrs)
|
||||
assert_equal result, entry.valid?, "Expected #{attrs.inspect} to be #{result}"
|
||||
end
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
require "test_helper"
|
||||
|
||||
class TracepointTest < ActiveSupport::TestCase
|
||||
api_fixtures
|
||||
|
||||
def test_tracepoint_count
|
||||
assert_equal 4, Tracepoint.count
|
||||
def test_timestamp_required
|
||||
tracepoint = create(:tracepoint)
|
||||
assert tracepoint.valid?
|
||||
tracepoint.timestamp = nil
|
||||
assert !tracepoint.valid?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
require "test_helper"
|
||||
|
||||
class TracetagTest < ActiveSupport::TestCase
|
||||
api_fixtures
|
||||
|
||||
def test_tracetag_count
|
||||
assert_equal 4, Tracetag.count
|
||||
end
|
||||
|
||||
def test_validations
|
||||
tracetag_valid({})
|
||||
tracetag_valid({ :tag => nil }, false)
|
||||
|
@ -24,7 +18,7 @@ class TracetagTest < ActiveSupport::TestCase
|
|||
private
|
||||
|
||||
def tracetag_valid(attrs, result = true)
|
||||
entry = Tracetag.new(gpx_file_tags(:first_trace_1).attributes)
|
||||
entry = build(:tracetag)
|
||||
entry.assign_attributes(attrs)
|
||||
assert_equal result, entry.valid?, "Expected #{attrs.inspect} to be #{result}"
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue