test: cover AuthzArticlePolicy, destroy? and CacheHelpersTest
This commit is contained in:
1 parent
f0803046dd
commit
730c66caf0
2 files changed
+180
No files matched your search
@@ -0,0 +1,67 @@
|
||||
require 'minitest/autorun'
|
||||
require 'prism'
|
||||
require 'tmpdir'
|
||||
require 'fileutils'
|
||||
|
||||
class CacheHelpersTest < Minitest::Test
|
||||
def setup
|
||||
Prism::Cache.store.clear
|
||||
@dir = Dir.mktmpdir('prism-cache-helpers')
|
||||
FileUtils.mkdir_p(File.join(@dir, 'pages'))
|
||||
@view = Prism::View.new(@dir)
|
||||
end
|
||||
|
||||
def teardown
|
||||
FileUtils.remove_entry(@dir)
|
||||
Prism::Cache.store.clear
|
||||
end
|
||||
|
||||
def write(relative, source)
|
||||
File.write(File.join(@dir, relative), source)
|
||||
end
|
||||
|
||||
def test_cache_block_renders_and_stores_the_fragment
|
||||
write('pages/show.erb', '<% cache("greeting") do %><%= greeting %><% end %>')
|
||||
result = @view.render('pages/show', locals: { greeting: 'hi' })
|
||||
assert_equal 'hi', result
|
||||
assert_equal 'hi', Prism::Cache.store.read('greeting')
|
||||
end
|
||||
|
||||
def test_cache_block_is_not_reevaluated_on_a_hit
|
||||
calls = []
|
||||
write('pages/show.erb', '<% cache("counter") do %><%= track! %><% end %>')
|
||||
@view = Prism::View.new(@dir, helpers: CounterHelper.new(calls))
|
||||
|
||||
first = @view.render('pages/show')
|
||||
second = @view.render('pages/show')
|
||||
|
||||
assert_equal first, second
|
||||
assert_equal 1, calls.size
|
||||
end
|
||||
|
||||
def test_cache_key_can_be_an_array_mixing_scope_and_a_model
|
||||
model = Struct.new(:cache_key).new('posts/7-42')
|
||||
write('pages/show.erb', '<% cache([:sidebar, model]) do %>rendered<% end %>')
|
||||
@view.render('pages/show', locals: { model: model })
|
||||
assert @view.expand_cache_key([:sidebar, model]) == 'sidebar/posts/7-42'
|
||||
assert_equal 'rendered', Prism::Cache.store.read('sidebar/posts/7-42')
|
||||
end
|
||||
|
||||
def test_expires_in_evicts_the_entry_after_the_given_time
|
||||
write('pages/show.erb', '<% cache("temp", expires_in: 0) do %>value<% end %>')
|
||||
@view.render('pages/show')
|
||||
sleep 0.01
|
||||
assert_nil Prism::Cache.store.read('temp')
|
||||
end
|
||||
|
||||
class CounterHelper
|
||||
def initialize(calls)
|
||||
@calls = calls
|
||||
end
|
||||
|
||||
def track!
|
||||
@calls << true
|
||||
'x'
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user