mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-21 01:30:12 +01:00
47 lines
No EOL
1 KiB
Ruby
47 lines
No EOL
1 KiB
Ruby
module Spec
|
|
module Matchers
|
|
class AutotestMappingMatcher
|
|
def initialize(specs)
|
|
@specs = specs
|
|
end
|
|
|
|
def to(file)
|
|
@file = file
|
|
self
|
|
end
|
|
|
|
def matches?(autotest)
|
|
@autotest = prepare autotest
|
|
@actual = autotest.test_files_for(@file)
|
|
@actual == @specs
|
|
end
|
|
|
|
def failure_message
|
|
"expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
|
|
end
|
|
|
|
private
|
|
def prepare autotest
|
|
stub_found_files autotest
|
|
stub_find_order autotest
|
|
autotest
|
|
end
|
|
|
|
def stub_found_files autotest
|
|
found_files = @specs.inject({}){|h,f| h[f] = Time.at(0)}
|
|
autotest.stub!(:find_files).and_return(found_files)
|
|
end
|
|
|
|
def stub_find_order autotest
|
|
find_order = @specs.dup << @file
|
|
autotest.instance_eval { @find_order = find_order }
|
|
end
|
|
|
|
end
|
|
|
|
def map_specs(specs)
|
|
AutotestMappingMatcher.new(specs)
|
|
end
|
|
|
|
end
|
|
end |