class TemplateDigestorTest
Public Instance Methods
setup()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 34 def setup @cwd = Dir.pwd @tmp_dir = Dir.mktmpdir ActionView::LookupContext::DetailsKey.clear FileUtils.cp_r FixtureFinder::FIXTURES_DIR, @tmp_dir Dir.chdir @tmp_dir end
teardown()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 43 def teardown Dir.chdir @cwd FileUtils.rm_r @tmp_dir end
test_chaining_the_partial_template_on_recursion()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 189 def test_chaining_the_partial_template_on_recursion assert digest("level/recursion") # assert recursion is possible assert_digest_difference("level/recursion") do change_template("level/_recursion") end assert_not_nil digest("level/recursion") # assert digest is stored end
test_chaining_the_top_template_on_recursion()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 179 def test_chaining_the_top_template_on_recursion assert digest("level/recursion") # assert recursion is possible assert_digest_difference("level/recursion") do change_template("level/recursion") end assert_not_nil digest("level/recursion") # assert digest is stored end
test_collection_dependency()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 203 def test_collection_dependency assert_digest_difference("messages/index") do change_template("messages/_message") end assert_digest_difference("messages/index") do change_template("events/_event") end end
test_collection_derived_from_record_dependency()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 213 def test_collection_derived_from_record_dependency assert_digest_difference("messages/show") do change_template("events/_event") end end
test_dependencies_via_options_results_in_different_digest()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 271 def test_dependencies_via_options_results_in_different_digest digest_plain = digest("comments/_comment") digest_fridge = digest("comments/_comment", dependencies: ["fridge"]) digest_phone = digest("comments/_comment", dependencies: ["phone"]) digest_fridge_phone = digest("comments/_comment", dependencies: ["fridge", "phone"]) assert_not_equal digest_plain, digest_fridge assert_not_equal digest_plain, digest_phone assert_not_equal digest_plain, digest_fridge_phone assert_not_equal digest_fridge, digest_phone assert_not_equal digest_fridge, digest_fridge_phone assert_not_equal digest_phone, digest_fridge_phone end
test_details_are_included_in_cache_key()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 219 def test_details_are_included_in_cache_key # Cache the template digest. @finder = FixtureFinder.new(formats: [:html]) old_digest = digest("events/_event") # Change the template; the cached digest remains unchanged. change_template("events/_event") # The details are changed, so a new cache key is generated. @finder = FixtureFinder.new # The cache is busted. assert_not_equal old_digest, digest("events/_event") end
test_different_formats_with_same_logical_template_names_results_in_different_digests()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 285 def test_different_formats_with_same_logical_template_names_results_in_different_digests html_digest = digest("comments/_comment", format: :html) json_digest = digest("comments/_comment", format: :json) assert_not_equal html_digest, json_digest end
test_digest_cache_cleanup_with_recursion()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 292 def test_digest_cache_cleanup_with_recursion first_digest = digest("level/_recursion") second_digest = digest("level/_recursion") assert first_digest # If the cache is cleaned up correctly, subsequent digests should return the same assert_equal first_digest, second_digest end
test_digest_cache_cleanup_with_recursion_and_template_caching_off()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 302 def test_digest_cache_cleanup_with_recursion_and_template_caching_off disable_resolver_caching do first_digest = digest("level/_recursion") second_digest = digest("level/_recursion") assert first_digest # If the cache is cleaned up correctly, subsequent digests should return the same assert_equal first_digest, second_digest end end
test_directory_depth_dependency()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 108 def test_directory_depth_dependency assert_digest_difference("level/below/index") do change_template("level/below/_header") end end
test_dont_generate_a_digest_for_missing_templates()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 199 def test_dont_generate_a_digest_for_missing_templates assert_equal "", digest("nothing/there") end
test_explicit_dependency()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 54 def test_explicit_dependency assert_digest_difference("messages/show") do change_template("messages/_message") end end
test_explicit_dependency_in_multiline_erb_tag()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 60 def test_explicit_dependency_in_multiline_erb_tag assert_digest_difference("messages/show") do change_template("messages/_form") end end
test_explicit_dependency_wildcard()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 66 def test_explicit_dependency_wildcard assert_digest_difference("events/index") do change_template("events/_completed") end end
test_explicit_dependency_wildcard_picks_up_added_file()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 72 def test_explicit_dependency_wildcard_picks_up_added_file disable_resolver_caching do assert_digest_difference("events/index") do add_template("events/_uncompleted") end end end
test_explicit_dependency_wildcard_picks_up_removed_file()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 80 def test_explicit_dependency_wildcard_picks_up_removed_file disable_resolver_caching do add_template("events/_subscribers_changed") assert_digest_difference("events/index") do remove_template("events/_subscribers_changed") end end end
test_extra_whitespace_in_render_named_partial()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 240 def test_extra_whitespace_in_render_named_partial assert_digest_difference("messages/edit") do change_template("messages/_header") end end
test_extra_whitespace_in_render_partial()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 234 def test_extra_whitespace_in_render_partial assert_digest_difference("messages/edit") do change_template("messages/_form") end end
test_extra_whitespace_in_render_record()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 246 def test_extra_whitespace_in_render_record assert_digest_difference("messages/edit") do change_template("messages/_message") end end
test_extra_whitespace_in_render_with_parenthesis()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 252 def test_extra_whitespace_in_render_with_parenthesis assert_digest_difference("messages/edit") do change_template("events/_event") end end
test_getting_of_doubly_nested_dependencies()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 143 def test_getting_of_doubly_nested_dependencies doubly_nested = [{ "comments/comments" => ["comments/comment"] }, "messages/message"] assert_equal doubly_nested, nested_dependencies("messages/peek") end
test_getting_of_singly_nested_dependencies()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 138 def test_getting_of_singly_nested_dependencies singly_nested_dependencies = ["messages/header", "messages/form", "messages/message", "events/event", "comments/comment"] assert_equal singly_nested_dependencies, nested_dependencies("messages/edit") end
test_logging_of_missing_template()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 114 def test_logging_of_missing_template assert_logged "Couldn't find template for digesting: messages/something_missing" do digest("messages/show") end end
test_logging_of_missing_template_ending_with_number()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 120 def test_logging_of_missing_template_ending_with_number assert_logged "Couldn't find template for digesting: messages/something_missing_1" do digest("messages/show") end end
test_logging_of_missing_template_for_dependencies()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 126 def test_logging_of_missing_template_for_dependencies assert_logged "Couldn't find template for digesting: messages/something_missing" do dependencies("messages/something_missing") end end
test_logging_of_missing_template_for_nested_dependencies()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 132 def test_logging_of_missing_template_for_nested_dependencies assert_logged "Couldn't find template for digesting: messages/something_missing" do nested_dependencies("messages/something_missing") end end
test_nested_template_deps()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 154 def test_nested_template_deps nested_deps = ["messages/header", { "comments/comments" => ["comments/comment"] }, "messages/actions/move", "events/event", "messages/something_missing", "messages/something_missing_1", "messages/message", "messages/form"] assert_equal nested_deps, nested_dependencies("messages/show") end
test_nested_template_deps_with_non_default_rendered_format()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 159 def test_nested_template_deps_with_non_default_rendered_format finder.rendered_format = nil nested_deps = [{ "comments/comments" => ["comments/comment"] }] assert_equal nested_deps, nested_dependencies("messages/thread") end
test_nested_template_directory()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 148 def test_nested_template_directory assert_digest_difference("messages/show") do change_template("messages/actions/_move") end end
test_old_style_hash_in_render_invocation()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 258 def test_old_style_hash_in_render_invocation assert_digest_difference("messages/edit") do change_template("comments/_comment") end end
test_recursion_in_renders()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 174 def test_recursion_in_renders assert digest("level/recursion") # assert recursion is possible assert_not_nil digest("level/recursion") # assert digest is stored end
test_second_level_dependency()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 90 def test_second_level_dependency assert_digest_difference("messages/show") do change_template("comments/_comments") end end
test_second_level_dependency_within_same_directory()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 96 def test_second_level_dependency_within_same_directory assert_digest_difference("messages/show") do change_template("messages/_header") end end
test_template_formats_of_dependencies_with_same_logical_name_and_different_rendered_format()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 170 def test_template_formats_of_dependencies_with_same_logical_name_and_different_rendered_format assert_equal [:html], tree_template_formats("messages/show").uniq end
test_template_formats_of_nested_deps_with_non_default_rendered_format()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 165 def test_template_formats_of_nested_deps_with_non_default_rendered_format finder.rendered_format = nil assert_equal [:json], tree_template_formats("messages/thread").uniq end
test_third_level_dependency()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 102 def test_third_level_dependency assert_digest_difference("messages/show") do change_template("comments/_comment") end end
test_top_level_change_reflected()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 48 def test_top_level_change_reflected assert_digest_difference("messages/show") do change_template("messages/show") end end
test_variants()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 264 def test_variants assert_digest_difference("messages/new", variants: [:iphone]) do change_template("messages/new", :iphone) change_template("messages/_header", :iphone) end end
Private Instance Methods
assert_digest_difference(template_name, options = {}) { || ... }
click to toggle source
# File actionview/test/template/digestor_test.rb, line 330 def assert_digest_difference(template_name, options = {}) previous_digest = digest(template_name, options) finder.digest_cache.clear yield assert_not_equal previous_digest, digest(template_name, options), "digest didn't change" finder.digest_cache.clear end
assert_logged(message) { || ... }
click to toggle source
# File actionview/test/template/digestor_test.rb, line 315 def assert_logged(message) old_logger = ActionView::Base.logger log = StringIO.new ActionView::Base.logger = Logger.new(log) begin yield log.rewind assert_match message, log.read ensure ActionView::Base.logger = old_logger end end
change_template(template_name, variant = nil)
click to toggle source
# File actionview/test/template/digestor_test.rb, line 376 def change_template(template_name, variant = nil) variant = "+#{variant}" if variant.present? File.open("digestor/#{template_name}.html#{variant}.erb", "w") do |f| f.write "\nTHIS WAS CHANGED!" end end
Also aliased as: add_template
dependencies(template_name)
click to toggle source
# File actionview/test/template/digestor_test.rb, line 350 def dependencies(template_name) tree = ActionView::Digestor.tree(template_name, finder) tree.children.map(&:name) end
digest(template_name, options = {})
click to toggle source
# File actionview/test/template/digestor_test.rb, line 340 def digest(template_name, options = {}) options = options.dup finder_options = options.extract!(:variants, :format) finder.variants = finder_options[:variants] || [] finder.rendered_format = finder_options[:format] if finder_options[:format] ActionView::Digestor.digest(name: template_name, finder: finder, dependencies: (options[:dependencies] || [])) end
disable_resolver_caching() { || ... }
click to toggle source
# File actionview/test/template/digestor_test.rb, line 365 def disable_resolver_caching old_caching, ActionView::Resolver.caching = ActionView::Resolver.caching, false yield ensure ActionView::Resolver.caching = old_caching end
finder()
click to toggle source
# File actionview/test/template/digestor_test.rb, line 372 def finder @finder ||= FixtureFinder.new end
nested_dependencies(template_name)
click to toggle source
# File actionview/test/template/digestor_test.rb, line 355 def nested_dependencies(template_name) tree = ActionView::Digestor.tree(template_name, finder) tree.children.map(&:to_dep_map) end
remove_template(template_name)
click to toggle source
# File actionview/test/template/digestor_test.rb, line 385 def remove_template(template_name) File.delete("digestor/#{template_name}.html.erb") end
tree_template_formats(template_name)
click to toggle source
# File actionview/test/template/digestor_test.rb, line 360 def tree_template_formats(template_name) tree = ActionView::Digestor.tree(template_name, finder) tree.flatten.map(&:template).compact.flat_map(&:formats) end