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 |