62 lines
1.6 KiB
Ruby
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
|