Return an empty array if no tracker is found

This commit is contained in:
Daniel Schierbeck 2012-12-17 21:26:55 +01:00
parent 9ca8c635f6
commit 4452849064
2 changed files with 16 additions and 4 deletions

@ -5,8 +5,13 @@ class DependencyTracker
@trackers = ThreadSafe::Cache.new
def self.find_dependencies(name, template)
handler = template.handler
@trackers.fetch(handler).call(name, template)
tracker = @trackers[template.handler]
if tracker.present?
tracker.call(name, template)
else
[]
end
end
def self.register_tracker(handler, tracker)

@ -3,6 +3,7 @@
class DependencyTrackerTest < ActionView::TestCase
Neckbeard = Class.new
Bowtie = Class.new
class NeckbeardTracker
def self.call(name, template)
@ -13,8 +14,8 @@ def self.call(name, template)
class FakeTemplate
attr_reader :source, :handler
def initialize(source)
@source, @handler = source, Neckbeard
def initialize(source, handler = Neckbeard)
@source, @handler = source, handler
end
end
@ -35,4 +36,10 @@ def test_finds_tracker_by_template_handler
dependencies = tracker.find_dependencies("boo/hoo", template)
assert_equal ["foo/boo/hoo"], dependencies
end
def test_returns_empty_array_if_no_tracker_is_found
template = FakeTemplate.new("boo/hoo", Bowtie)
dependencies = tracker.find_dependencies("boo/hoo", template)
assert_equal [], dependencies
end
end