From a6509d31126d3533689480a5290f518671d5d8c9 Mon Sep 17 00:00:00 2001
From: Kasper Timm Hansen <kaspth@gmail.com>
Date: Wed, 15 Jul 2015 23:32:45 +0200
Subject: Add wildcard template dependencies.

---
 .../fixtures/digestor/events/_completed.html.erb   |  0
 .../test/fixtures/digestor/events/index.html.erb   |  1 +
 actionview/test/template/digestor_test.rb          | 37 +++++++++++++++++++++-
 3 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 actionview/test/fixtures/digestor/events/_completed.html.erb
 create mode 100644 actionview/test/fixtures/digestor/events/index.html.erb

(limited to 'actionview/test')

diff --git a/actionview/test/fixtures/digestor/events/_completed.html.erb b/actionview/test/fixtures/digestor/events/_completed.html.erb
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/actionview/test/fixtures/digestor/events/index.html.erb b/actionview/test/fixtures/digestor/events/index.html.erb
new file mode 100644
index 0000000000..bc45e41bcb
--- /dev/null
+++ b/actionview/test/fixtures/digestor/events/index.html.erb
@@ -0,0 +1 @@
+<% # Template Dependency: events/* %>
\ No newline at end of file
diff --git a/actionview/test/template/digestor_test.rb b/actionview/test/template/digestor_test.rb
index 24bc76cbbb..dde757b5a2 100644
--- a/actionview/test/template/digestor_test.rb
+++ b/actionview/test/template/digestor_test.rb
@@ -1,5 +1,6 @@
 require 'abstract_unit'
 require 'fileutils'
+require 'action_view/dependency_tracker'
 
 class FixtureTemplate
   attr_reader :source, :handler
@@ -15,12 +16,13 @@ end
 class FixtureFinder
   FIXTURES_DIR = "#{File.dirname(__FILE__)}/../fixtures/digestor"
 
-  attr_reader   :details
+  attr_reader   :details, :view_paths
   attr_accessor :formats
   attr_accessor :variants
 
   def initialize
     @details  = {}
+    @view_paths = ActionView::PathSet.new(['digestor'])
     @formats  = []
     @variants = []
   end
@@ -75,6 +77,34 @@ class TemplateDigestorTest < ActionView::TestCase
     end
   end
 
+  def test_explicit_dependency_wildcard
+    assert_digest_difference("events/index") do
+      change_template("events/_completed")
+    end
+  end
+
+  def test_explicit_dependency_wildcard_picks_up_added_file
+    old_caching, ActionView::Resolver.caching = ActionView::Resolver.caching, false
+
+    assert_digest_difference("events/index") do
+      add_template("events/_uncompleted")
+    end
+  ensure
+    remove_template("events/_uncompleted")
+    ActionView::Resolver.caching = old_caching
+  end
+
+  def test_explicit_dependency_wildcard_picks_up_removed_file
+    old_caching, ActionView::Resolver.caching = ActionView::Resolver.caching, false
+    add_template("events/_subscribers_changed")
+
+    assert_digest_difference("events/index") do
+      remove_template("events/_subscribers_changed")
+    end
+  ensure
+    ActionView::Resolver.caching = old_caching
+  end
+
   def test_second_level_dependency
     assert_digest_difference("messages/show") do
       change_template("comments/_comments")
@@ -319,4 +349,9 @@ class TemplateDigestorTest < ActionView::TestCase
         f.write "\nTHIS WAS CHANGED!"
       end
     end
+    alias_method :add_template, :change_template
+
+    def remove_template(template_name)
+      File.delete("digestor/#{template_name}.html.erb")
+    end
 end
-- 
cgit v1.2.3