test: cover CacheStoreTest, test_write_then_read_round_trips
This commit is contained in:
1 parent
730c66caf0
commit
9d3d74ae61
2 files changed
+174
No files matched your search
@@ -0,0 +1,58 @@
|
||||
require 'minitest/autorun'
|
||||
require 'prism'
|
||||
require 'tmpdir'
|
||||
require 'fileutils'
|
||||
require 'stringio'
|
||||
|
||||
class CliAssetsPrecompileTest < Minitest::Test
|
||||
def setup
|
||||
@dir = Dir.mktmpdir('prism-cli-assets')
|
||||
@cli = Prism::Cli.new(@dir)
|
||||
@source = File.join(@dir, 'app', 'assets')
|
||||
@output = File.join(@dir, 'public', 'assets')
|
||||
FileUtils.mkdir_p(File.join(@source, 'stylesheets'))
|
||||
File.write(File.join(@source, 'stylesheets', 'application.css'), 'body { color: red; }')
|
||||
end
|
||||
|
||||
def teardown
|
||||
FileUtils.remove_entry(@dir)
|
||||
end
|
||||
|
||||
def test_precompiles_without_booting_an_application
|
||||
manifest = @cli.assets_precompile(['--source=app/assets', '--output=public/assets'], out: StringIO.new)
|
||||
logical = manifest.to_h.keys
|
||||
assert_equal ['stylesheets/application.css'], logical
|
||||
fingerprinted = manifest.lookup('stylesheets/application.css')
|
||||
assert_match(/\Astylesheets\/application-[0-9a-f]{8}\.css\z/, fingerprinted)
|
||||
assert File.exist?(File.join(@output, fingerprinted))
|
||||
assert File.exist?(File.join(@output, 'manifest.json'))
|
||||
end
|
||||
|
||||
def test_prints_a_summary_to_the_given_output
|
||||
out = StringIO.new
|
||||
@cli.assets_precompile(['--source=app/assets', '--output=public/assets'], out: out)
|
||||
assert_match(/compiled 1 file\(s\) into/, out.string)
|
||||
end
|
||||
|
||||
def test_recompiling_unchanged_content_reproduces_the_same_fingerprint_and_removes_nothing_stale
|
||||
first = @cli.assets_precompile(['--source=app/assets', '--output=public/assets'], out: StringIO.new)
|
||||
second = @cli.assets_precompile(['--source=app/assets', '--output=public/assets'], out: StringIO.new)
|
||||
assert_equal first.to_h, second.to_h
|
||||
end
|
||||
|
||||
def test_raises_usage_error_without_required_options
|
||||
assert_raises(Prism::Cli::UsageError) { @cli.assets_precompile([]) }
|
||||
assert_raises(Prism::Cli::UsageError) { @cli.assets_precompile(['--source=app/assets']) }
|
||||
end
|
||||
|
||||
def test_run_dispatches_the_assets_colon_precompile_command
|
||||
original_stdout = $stdout
|
||||
captured = StringIO.new
|
||||
$stdout = captured
|
||||
@cli.run(['assets:precompile', '--source=app/assets', '--output=public/assets'])
|
||||
ensure
|
||||
$stdout = original_stdout
|
||||
assert_match(/compiled 1 file\(s\)/, captured.string)
|
||||
assert File.exist?(File.join(@output, 'manifest.json'))
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user