From 1879a338655aba393726de1fc5ba0d8cb4cb26d5 Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Sun, 16 Dec 2012 23:38:46 +0100 Subject: Allow registering custom dependency trackers --- .../test/template/dependency_tracker_test.rb | 38 ++++++++++++++++++++++ actionpack/test/template/digestor_test.rb | 3 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 actionpack/test/template/dependency_tracker_test.rb (limited to 'actionpack/test/template') diff --git a/actionpack/test/template/dependency_tracker_test.rb b/actionpack/test/template/dependency_tracker_test.rb new file mode 100644 index 0000000000..5b2ec0eb2d --- /dev/null +++ b/actionpack/test/template/dependency_tracker_test.rb @@ -0,0 +1,38 @@ +require 'abstract_unit' +require 'action_view/dependency_tracker' + +class DependencyTrackerTest < ActionView::TestCase + Neckbeard = Class.new + + class NeckbeardTracker + def self.call(name, template) + ["foo/#{name}"] + end + end + + class FakeTemplate + attr_reader :source, :handler + + def initialize(source) + @source, @handler = source, Neckbeard + end + end + + def tracker + ActionView::DependencyTracker + end + + def setup + tracker.register_tracker(Neckbeard, NeckbeardTracker) + end + + def teardown + tracker.remove_tracker(Neckbeard) + end + + def test_finds_tracker_by_template_handler + template = FakeTemplate.new("boo/hoo") + dependencies = tracker.find_dependencies("boo/hoo", template) + assert_equal ["foo/boo/hoo"], dependencies + end +end diff --git a/actionpack/test/template/digestor_test.rb b/actionpack/test/template/digestor_test.rb index 849e2981a6..272ffec26e 100644 --- a/actionpack/test/template/digestor_test.rb +++ b/actionpack/test/template/digestor_test.rb @@ -2,10 +2,11 @@ require 'abstract_unit' require 'fileutils' class FixtureTemplate - attr_reader :source + attr_reader :source, :handler def initialize(template_path) @source = File.read(template_path) + @handler = ActionView::Template::Handlers::ERB rescue Errno::ENOENT raise ActionView::MissingTemplate.new([], "", [], true, []) end -- cgit v1.2.3 From 445284906476f03acf37cab2b7dc265a985531c3 Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Mon, 17 Dec 2012 21:26:55 +0100 Subject: Return an empty array if no tracker is found --- actionpack/test/template/dependency_tracker_test.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'actionpack/test/template') diff --git a/actionpack/test/template/dependency_tracker_test.rb b/actionpack/test/template/dependency_tracker_test.rb index 5b2ec0eb2d..714e2d6b29 100644 --- a/actionpack/test/template/dependency_tracker_test.rb +++ b/actionpack/test/template/dependency_tracker_test.rb @@ -3,6 +3,7 @@ require 'action_view/dependency_tracker' class DependencyTrackerTest < ActionView::TestCase Neckbeard = Class.new + Bowtie = Class.new class NeckbeardTracker def self.call(name, template) @@ -13,8 +14,8 @@ class DependencyTrackerTest < ActionView::TestCase 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 @@ class DependencyTrackerTest < ActionView::TestCase 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 -- cgit v1.2.3 From ec23296eb607d7974c7281d520b543640024418f Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Wed, 20 Feb 2013 16:42:30 +0100 Subject: Register trackers on extensions, not handlers --- actionpack/test/template/dependency_tracker_test.rb | 9 +++++---- actionpack/test/template/digestor_test.rb | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'actionpack/test/template') diff --git a/actionpack/test/template/dependency_tracker_test.rb b/actionpack/test/template/dependency_tracker_test.rb index 714e2d6b29..9c68afbdbd 100644 --- a/actionpack/test/template/dependency_tracker_test.rb +++ b/actionpack/test/template/dependency_tracker_test.rb @@ -2,8 +2,8 @@ require 'abstract_unit' require 'action_view/dependency_tracker' class DependencyTrackerTest < ActionView::TestCase - Neckbeard = Class.new - Bowtie = Class.new + Neckbeard = lambda {|template| template.source } + Bowtie = lambda {|template| template.source } class NeckbeardTracker def self.call(name, template) @@ -24,11 +24,12 @@ class DependencyTrackerTest < ActionView::TestCase end def setup - tracker.register_tracker(Neckbeard, NeckbeardTracker) + ActionView::Template.register_template_handler :neckbeard, Neckbeard + tracker.register_tracker(:neckbeard, NeckbeardTracker) end def teardown - tracker.remove_tracker(Neckbeard) + tracker.remove_tracker(:neckbeard) end def test_finds_tracker_by_template_handler diff --git a/actionpack/test/template/digestor_test.rb b/actionpack/test/template/digestor_test.rb index 272ffec26e..e29cecabc0 100644 --- a/actionpack/test/template/digestor_test.rb +++ b/actionpack/test/template/digestor_test.rb @@ -6,7 +6,7 @@ class FixtureTemplate def initialize(template_path) @source = File.read(template_path) - @handler = ActionView::Template::Handlers::ERB + @handler = ActionView::Template.handler_for_extension(:erb) rescue Errno::ENOENT raise ActionView::MissingTemplate.new([], "", [], true, []) end -- cgit v1.2.3