PageRenderTime 51ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/test/tilt_stringtemplate_test.rb

https://bitbucket.org/sqctest01/sample_app_3_1
Ruby | 170 lines | 156 code | 14 blank | 0 comment | 5 complexity | 9cc27b3354f2bdb3749ff532cf95f725 MD5 | raw file
Possible License(s): GPL-2.0
  1. require 'contest'
  2. require 'tilt'
  3. class StringTemplateTest < Test::Unit::TestCase
  4. test "registered for '.str' files" do
  5. assert_equal Tilt::StringTemplate, Tilt['test.str']
  6. end
  7. test "loading and evaluating templates on #render" do
  8. template = Tilt::StringTemplate.new { |t| "Hello World!" }
  9. assert_equal "Hello World!", template.render
  10. end
  11. test "can be rendered more than once" do
  12. template = Tilt::StringTemplate.new { |t| "Hello World!" }
  13. 3.times { assert_equal "Hello World!", template.render }
  14. end
  15. test "passing locals" do
  16. template = Tilt::StringTemplate.new { 'Hey #{name}!' }
  17. assert_equal "Hey Joe!", template.render(Object.new, :name => 'Joe')
  18. end
  19. test "evaluating in an object scope" do
  20. template = Tilt::StringTemplate.new { 'Hey #{@name}!' }
  21. scope = Object.new
  22. scope.instance_variable_set :@name, 'Joe'
  23. assert_equal "Hey Joe!", template.render(scope)
  24. end
  25. test "passing a block for yield" do
  26. template = Tilt::StringTemplate.new { 'Hey #{yield}!' }
  27. assert_equal "Hey Joe!", template.render { 'Joe' }
  28. assert_equal "Hey Moe!", template.render { 'Moe' }
  29. end
  30. test "multiline templates" do
  31. template = Tilt::StringTemplate.new { "Hello\nWorld!\n" }
  32. assert_equal "Hello\nWorld!\n", template.render
  33. end
  34. test "backtrace file and line reporting without locals" do
  35. data = File.read(__FILE__).split("\n__END__\n").last
  36. fail unless data[0] == ?<
  37. template = Tilt::StringTemplate.new('test.str', 11) { data }
  38. begin
  39. template.render
  40. fail 'should have raised an exception'
  41. rescue => boom
  42. assert_kind_of NameError, boom
  43. line = boom.backtrace.grep(/^test\.str:/).first
  44. assert line, "Backtrace didn't contain test.str"
  45. file, line, meth = line.split(":")
  46. assert_equal '13', line
  47. end
  48. end
  49. test "backtrace file and line reporting with locals" do
  50. data = File.read(__FILE__).split("\n__END__\n").last
  51. fail unless data[0] == ?<
  52. template = Tilt::StringTemplate.new('test.str', 1) { data }
  53. begin
  54. template.render(nil, :name => 'Joe', :foo => 'bar')
  55. fail 'should have raised an exception'
  56. rescue => boom
  57. assert_kind_of RuntimeError, boom
  58. line = boom.backtrace.first
  59. file, line, meth = line.split(":")
  60. assert_equal 'test.str', file
  61. assert_equal '6', line
  62. end
  63. end
  64. end
  65. class CompiledStringTemplateTest < Test::Unit::TestCase
  66. def teardown
  67. GC.start
  68. end
  69. class Scope
  70. end
  71. test "compiling template source to a method" do
  72. template = Tilt::StringTemplate.new { |t| "Hello World!" }
  73. template.render(Scope.new)
  74. method = template.send(:compiled_method, [])
  75. assert_kind_of UnboundMethod, method
  76. end
  77. test "loading and evaluating templates on #render" do
  78. template = Tilt::StringTemplate.new { |t| "Hello World!" }
  79. assert_equal "Hello World!", template.render(Scope.new)
  80. end
  81. test "passing locals" do
  82. template = Tilt::StringTemplate.new { 'Hey #{name}!' }
  83. assert_equal "Hey Joe!", template.render(Scope.new, :name => 'Joe')
  84. assert_equal "Hey Moe!", template.render(Scope.new, :name => 'Moe')
  85. end
  86. test "evaluating in an object scope" do
  87. template = Tilt::StringTemplate.new { 'Hey #{@name}!' }
  88. scope = Scope.new
  89. scope.instance_variable_set :@name, 'Joe'
  90. assert_equal "Hey Joe!", template.render(scope)
  91. scope.instance_variable_set :@name, 'Moe'
  92. assert_equal "Hey Moe!", template.render(scope)
  93. end
  94. test "passing a block for yield" do
  95. template = Tilt::StringTemplate.new { 'Hey #{yield}!' }
  96. assert_equal "Hey Joe!", template.render(Scope.new) { 'Joe' }
  97. assert_equal "Hey Moe!", template.render(Scope.new) { 'Moe' }
  98. end
  99. test "multiline templates" do
  100. template = Tilt::StringTemplate.new { "Hello\nWorld!\n" }
  101. assert_equal "Hello\nWorld!\n", template.render(Scope.new)
  102. end
  103. test "template with '}'" do
  104. template = Tilt::StringTemplate.new { "Hello }" }
  105. assert_equal "Hello }", template.render
  106. end
  107. test "backtrace file and line reporting without locals" do
  108. data = File.read(__FILE__).split("\n__END__\n").last
  109. fail unless data[0] == ?<
  110. template = Tilt::StringTemplate.new('test.str', 11) { data }
  111. begin
  112. template.render(Scope.new)
  113. fail 'should have raised an exception'
  114. rescue => boom
  115. assert_kind_of NameError, boom
  116. line = boom.backtrace.first
  117. line = boom.backtrace.grep(/^test\.str:/).first
  118. assert line, "Backtrace didn't contain test.str"
  119. file, line, meth = line.split(":")
  120. assert_equal '13', line
  121. end
  122. end
  123. test "backtrace file and line reporting with locals" do
  124. data = File.read(__FILE__).split("\n__END__\n").last
  125. fail unless data[0] == ?<
  126. template = Tilt::StringTemplate.new('test.str') { data }
  127. begin
  128. template.render(Scope.new, :name => 'Joe', :foo => 'bar')
  129. fail 'should have raised an exception'
  130. rescue => boom
  131. assert_kind_of RuntimeError, boom
  132. line = boom.backtrace.first
  133. file, line, meth = line.split(":")
  134. assert_equal 'test.str', file
  135. assert_equal '6', line
  136. end
  137. end
  138. end
  139. __END__
  140. <html>
  141. <body>
  142. <h1>Hey #{name}!</h1>
  143. <p>#{fail}</p>
  144. </body>
  145. </html>