Orbit/vendor/plugins/radius/test/context_test.rb

62 lines
1.6 KiB
Ruby

require File.expand_path(File.dirname(__FILE__) + '/test_helper')
class RadiusContextTest < Test::Unit::TestCase
include RadiusTestHelper
def setup
@context = new_context
end
def test_initialize
@context = Radius::Context.new
end
def test_initialize_with_block
@context = Radius::Context.new do |c|
assert_kind_of Radius::Context, c
c.define_tag('test') { 'just a test' }
end
assert_not_equal Hash.new, @context.definitions
end
def test_with
got = @context.with do |c|
assert_equal @context, c
end
assert_equal @context, got
end
def test_render_tag
define_global_tag "hello" do |tag|
"Hello #{tag.attr['name'] || 'World'}!"
end
assert_render_tag_output 'Hello World!', 'hello'
assert_render_tag_output 'Hello John!', 'hello', 'name' => 'John'
end
def test_render_tag__undefined_tag
e = assert_raises(Radius::UndefinedTagError) { @context.render_tag('undefined_tag') }
assert_equal "undefined tag `undefined_tag'", e.message
end
def test_tag_missing
class << @context
def tag_missing(tag, attr, &block)
"undefined tag `#{tag}' with attributes #{attr.inspect}"
end
end
text = ''
expected = %{undefined tag `undefined_tag' with attributes {"cool"=>"beans"}}
assert_nothing_raised { text = @context.render_tag('undefined_tag', 'cool' => 'beans') }
assert_equal expected, text
end
private
def assert_render_tag_output(output, *render_tag_params)
assert_equal output, @context.render_tag(*render_tag_params)
end
end