89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
|  | #!/usr/bin/env ruby | ||
|  | require File.dirname(__FILE__) + '/helper' | ||
|  | 
 | ||
|  | class TestClassA | ||
|  |   liquid_methods :allowedA, :chainedB | ||
|  |   def allowedA | ||
|  |     'allowedA' | ||
|  |   end | ||
|  |   def restrictedA | ||
|  |     'restrictedA' | ||
|  |   end | ||
|  |   def chainedB | ||
|  |     TestClassB.new | ||
|  |   end | ||
|  | end | ||
|  | 
 | ||
|  | class TestClassB | ||
|  |   liquid_methods :allowedB, :chainedC | ||
|  |   def allowedB | ||
|  |     'allowedB' | ||
|  |   end | ||
|  |   def chainedC | ||
|  |     TestClassC.new | ||
|  |   end | ||
|  | end | ||
|  | 
 | ||
|  | class TestClassC | ||
|  |   liquid_methods :allowedC | ||
|  |   def allowedC | ||
|  |     'allowedC' | ||
|  |   end | ||
|  | end | ||
|  | 
 | ||
|  | class TestClassC::LiquidDropClass | ||
|  |   def another_allowedC | ||
|  |     'another_allowedC' | ||
|  |   end | ||
|  | end | ||
|  | 
 | ||
|  | class ModuleExTest < Test::Unit::TestCase | ||
|  |   include Liquid | ||
|  |    | ||
|  |   def setup | ||
|  |     @a = TestClassA.new | ||
|  |     @b = TestClassB.new | ||
|  |     @c = TestClassC.new | ||
|  |   end | ||
|  |    | ||
|  |   def test_should_create_LiquidDropClass | ||
|  |     assert TestClassA::LiquidDropClass | ||
|  |     assert TestClassB::LiquidDropClass | ||
|  |     assert TestClassC::LiquidDropClass | ||
|  |   end | ||
|  |    | ||
|  |   def test_should_respond_to_liquid | ||
|  |     assert @a.respond_to?(:to_liquid) | ||
|  |     assert @b.respond_to?(:to_liquid) | ||
|  |     assert @c.respond_to?(:to_liquid) | ||
|  |   end | ||
|  |    | ||
|  |   def test_should_return_LiquidDropClass_object | ||
|  |     assert @a.to_liquid.is_a?(TestClassA::LiquidDropClass) | ||
|  |     assert @b.to_liquid.is_a?(TestClassB::LiquidDropClass) | ||
|  |     assert @c.to_liquid.is_a?(TestClassC::LiquidDropClass) | ||
|  |   end | ||
|  |    | ||
|  |   def test_should_respond_to_liquid_methods | ||
|  |     assert @a.to_liquid.respond_to?(:allowedA) | ||
|  |     assert @a.to_liquid.respond_to?(:chainedB) | ||
|  |     assert @b.to_liquid.respond_to?(:allowedB) | ||
|  |     assert @b.to_liquid.respond_to?(:chainedC) | ||
|  |     assert @c.to_liquid.respond_to?(:allowedC) | ||
|  |     assert @c.to_liquid.respond_to?(:another_allowedC) | ||
|  |   end | ||
|  | 
 | ||
|  |   def test_should_not_respond_to_restricted_methods | ||
|  |     assert ! @a.to_liquid.respond_to?(:restricted) | ||
|  |   end | ||
|  | 
 | ||
|  |   def test_should_use_regular_objects_as_drops | ||
|  |     assert_equal 'allowedA', Liquid::Template.parse("{{ a.allowedA }}").render('a'=>@a) | ||
|  |     assert_equal 'allowedB', Liquid::Template.parse("{{ a.chainedB.allowedB }}").render('a'=>@a) | ||
|  |     assert_equal 'allowedC', Liquid::Template.parse("{{ a.chainedB.chainedC.allowedC }}").render('a'=>@a) | ||
|  |     assert_equal 'another_allowedC', Liquid::Template.parse("{{ a.chainedB.chainedC.another_allowedC }}").render('a'=>@a) | ||
|  |     assert_equal '', Liquid::Template.parse("{{ a.restricted }}").render('a'=>@a) | ||
|  |     assert_equal '', Liquid::Template.parse("{{ a.unknown }}").render('a'=>@a) | ||
|  |  end | ||
|  | 
 | ||
|  | end |