121 lines
3.1 KiB
Ruby
121 lines
3.1 KiB
Ruby
#!/usr/bin/env ruby
|
|
require File.dirname(__FILE__) + '/helper'
|
|
|
|
module FunnyFilter
|
|
|
|
def make_funny(input)
|
|
'LOL'
|
|
end
|
|
|
|
def cite_funny(input)
|
|
"LOL: #{input}"
|
|
end
|
|
|
|
def add_smiley(input, smiley = ":-)")
|
|
"#{input} #{smiley}"
|
|
end
|
|
|
|
def add_tag(input, tag = "p", id = "foo")
|
|
%|<#{tag} id="#{id}">#{input}</#{tag}>|
|
|
end
|
|
|
|
def paragraph(input)
|
|
"<p>#{input}</p>"
|
|
end
|
|
|
|
def link_to(name, url)
|
|
%|<a href="#{url}">#{name}</a>|
|
|
end
|
|
end
|
|
|
|
|
|
class OutputTest < Test::Unit::TestCase
|
|
include Liquid
|
|
|
|
def setup
|
|
@assigns = {
|
|
'best_cars' => 'bmw',
|
|
'car' => {'bmw' => 'good', 'gm' => 'bad'}
|
|
}
|
|
|
|
end
|
|
|
|
def test_variable
|
|
text = %| {{best_cars}} |
|
|
|
|
expected = %| bmw |
|
|
assert_equal expected, Template.parse(text).render(@assigns)
|
|
end
|
|
|
|
def test_variable_traversing
|
|
text = %| {{car.bmw}} {{car.gm}} {{car.bmw}} |
|
|
|
|
expected = %| good bad good |
|
|
assert_equal expected, Template.parse(text).render(@assigns)
|
|
end
|
|
|
|
def test_variable_piping
|
|
text = %( {{ car.gm | make_funny }} )
|
|
expected = %| LOL |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_variable_piping_with_input
|
|
text = %( {{ car.gm | cite_funny }} )
|
|
expected = %| LOL: bad |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_variable_piping_with_args
|
|
text = %! {{ car.gm | add_smiley : ':-(' }} !
|
|
expected = %| bad :-( |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_variable_piping_with_no_args
|
|
text = %! {{ car.gm | add_smiley }} !
|
|
expected = %| bad :-) |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_multiple_variable_piping_with_args
|
|
text = %! {{ car.gm | add_smiley : ':-(' | add_smiley : ':-('}} !
|
|
expected = %| bad :-( :-( |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_variable_piping_with_args
|
|
text = %! {{ car.gm | add_tag : 'span', 'bar'}} !
|
|
expected = %| <span id="bar">bad</span> |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_variable_piping_with_variable_args
|
|
text = %! {{ car.gm | add_tag : 'span', car.bmw}} !
|
|
expected = %| <span id="good">bad</span> |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_multiple_pipings
|
|
text = %( {{ best_cars | cite_funny | paragraph }} )
|
|
expected = %| <p>LOL: bmw</p> |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
def test_link_to
|
|
text = %( {{ 'Typo' | link_to: 'http://typo.leetsoft.com' }} )
|
|
expected = %| <a href="http://typo.leetsoft.com">Typo</a> |
|
|
|
|
assert_equal expected, Template.parse(text).render(@assigns, :filters => [FunnyFilter])
|
|
end
|
|
|
|
|
|
end |