require 'test_helper' require 'tilt' begin require 'tilt/markaby' class MarkabyTiltTest < Minitest::Test def setup @block = lambda do |t| File.read(File.dirname(__FILE__) + "/#{t.file}") end end test "should be able to render a markaby template with static html" do tilt = Tilt::MarkabyTemplate.new("markaby/markaby.mab", &@block) assert_equal "hello from markaby!", tilt.render end test "should use the contents of the template" do tilt = ::Tilt::MarkabyTemplate.new("markaby/markaby_other_static.mab", &@block) assert_equal "_why?", tilt.render end test "should render from a string (given as data)" do tilt = ::Tilt::MarkabyTemplate.new { "html do; end" } assert_equal "", tilt.render end test "can be rendered more than once" do tilt = ::Tilt::MarkabyTemplate.new { "html do; end" } 3.times { assert_equal "", tilt.render } end test "should evaluate a template file in the scope given" do scope = Object.new def scope.foo "bar" end tilt = ::Tilt::MarkabyTemplate.new("markaby/scope.mab", &@block) assert_equal "
  • bar
  • ", tilt.render(scope) end test "should pass locals to the template" do tilt = ::Tilt::MarkabyTemplate.new("markaby/locals.mab", &@block) assert_equal "
  • bar
  • ", tilt.render(Object.new, { :foo => "bar" }) end test "should yield to the block given" do tilt = ::Tilt::MarkabyTemplate.new("markaby/yielding.mab", &@block) eval_scope = Markaby::Builder.new output = tilt.render(Object.new, {}) do text("Joe") end assert_equal "Hey Joe", output end test "should be able to render two templates in a row" do tilt = ::Tilt::MarkabyTemplate.new("markaby/render_twice.mab", &@block) assert_equal "foo", tilt.render assert_equal "foo", tilt.render end test "should retrieve a Tilt::MarkabyTemplate when calling Tilt['hello.mab']" do assert_equal Tilt::MarkabyTemplate, ::Tilt['./markaby/markaby.mab'] end test "should return a new instance of the implementation class (when calling Tilt.new)" do assert ::Tilt.new(File.dirname(__FILE__) + "/markaby/markaby.mab").kind_of?(Tilt::MarkabyTemplate) end test "should be able to evaluate block style templates" do tilt = Tilt::MarkabyTemplate.new { |t| lambda { h1 "Hello World!" }} assert_equal "

    Hello World!

    ", tilt.render end test "should pass locals to block style templates" do tilt = Tilt::MarkabyTemplate.new { |t| lambda { h1 "Hello #{name}!" }} assert_equal "

    Hello _why!

    ", tilt.render(nil, :name => "_why") end end rescue LoadError => boom warn "Tilt::MarkabyTemplate (disabled)" end