diff options
author | Paul Duncan <pabs@pablotron.org> | 2018-09-05 09:00:35 -0400 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2018-09-05 09:00:35 -0400 |
commit | f523b828d1612eb51fdd86b4179a40663ac6a0e6 (patch) | |
tree | 1c9ee226bbdd603322ff53c1ad59c94318e1e0c2 /ruby/test | |
parent | 7fd6c6611252dbe1aae0ae61afab78f936b47c1f (diff) | |
download | luigi-template-f523b828d1612eb51fdd86b4179a40663ac6a0e6.tar.bz2 luigi-template-f523b828d1612eb51fdd86b4179a40663ac6a0e6.zip |
ruby: add errors, to_s, freezes, and tests
Diffstat (limited to 'ruby/test')
-rw-r--r-- | ruby/test/test_template.rb | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/ruby/test/test_template.rb b/ruby/test/test_template.rb new file mode 100644 index 0000000..3c8dd10 --- /dev/null +++ b/ruby/test/test_template.rb @@ -0,0 +1,150 @@ +require 'minitest/autorun' +require 'luigi-template' + +class TemplateTest < MiniTest::Test + def test_new + t = Luigi::Template.new('foo%{bar}') + assert_instance_of Luigi::Template, t + end + + def test_run + t = Luigi::Template.new('foo%{bar}') + r = t.run(bar: 'foo') + + assert_equal 'foofoo', r + end + + def test_run_with_string_key + t = Luigi::Template.new('foo%{bar}') + r = t.run('bar' => 'foo') + + assert_equal 'foofoo', r + end + + def test_self_run + r = Luigi::Template.run('foo%{bar}', bar: 'foo') + assert_equal 'foofoo', r + end + + def test_multiple_keys + r = Luigi::Template.run('foo%{bar}%{baz}', { + bar: 'foo', + baz: 'bar', + }) + + assert_equal 'foofoobar', r + end + + def test_whitespace + r = Luigi::Template.run('%{ bar}%{ bar }%{ bar}', { + bar: 'foo', + }) + + assert_equal 'foofoofoo', r + end + + def test_newlines + r = Luigi::Template.run('%{ + bar}%{ + bar + + }%{ + bar}', { + bar: 'foo', + }) + + assert_equal 'foofoofoo', r + end + + def test_filter + r = Luigi::Template.run('foo%{bar|h}', { + bar: '<', + }) + + assert_equal 'foo<', r + end + + def test_filter_chain + want = 'foofeab40e1fca77c7360ccca1481bb8ba5f919ce3a' + r = Luigi::Template.run('foo%{bar | uc | hash sha1}', { + bar: 'foo', + }) + + assert_equal want, r + end + + def test_custom_global_filter + Luigi::FILTERS[:barify] = proc { |v| 'BAR' } + + r = Luigi::Template.run('foo%{bar | barify}', { + bar: 'foo', + }) + + assert_equal 'fooBAR', r + end + + def test_custom_template_filter + r = Luigi::Template.run('foo%{bar | barify}', { + bar: 'foo', + }, { + barify: proc { |v| 'BAR' } + }) + + assert_equal 'fooBAR', r + end + + def test_cache + cache = Luigi::Cache.new({ + foo: 'foo%{bar}', + }) + + r = cache.run(:foo, bar: 'foo') + + assert_equal 'foofoo', r + end + + def test_filter_args + want = 'foo0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33' + + r = Luigi::Template.run('foo%{bar | hash sha1}', { + bar: 'foo' + }) + + assert_equal want, r + end + + def test_unknown_key_error + assert_raises(Luigi::UnknownKeyError) do + Luigi::Template.run('foo%{unknown-key}', { + bar: 'foo', + }) + end + end + + def test_unknown_filter_error + assert_raises(Luigi::UnknownFilterError) do + Luigi::Template.run('foo%{bar | unknown-filter}', { + bar: 'foo', + }) + end + end + + def test_unknown_template_error + assert_raises(Luigi::UnknownTemplateError) do + cache = Luigi::Cache.new({ + foo: 'foo%{bar}', + }) + + cache.run('unknown-template', { + bar: 'foo' + }) + end + end + + def test_to_s + want = '%{val | h}' + t = Luigi::Template.new(want) + + assert_equal want, t.to_s + end +end |