require File.expand_path('../helper', __FILE__) begin require 'slim' class SlimTest < Test::Unit::TestCase def slim_app(&block) mock_app { set :views, File.dirname(__FILE__) + '/views' get '/', &block } get '/' end it 'renders inline slim strings' do slim_app { slim "h1 Hiya\n" } assert ok? assert_equal "

Hiya

", body end it 'renders .slim files in views path' do slim_app { slim :hello } assert ok? assert_equal "

Hello From Slim

", body end it "renders with inline layouts" do mock_app { layout { %(h1\n | THIS. IS. \n == yield.upcase ) } get('/') { slim 'em Sparta' } } get '/' assert ok? assert_equal "

THIS. IS. SPARTA

", body end it "renders with file layouts" do slim_app { slim '| Hello World', :layout => :layout2 } assert ok? assert_equal "

Slim Layout!

Hello World

", body end it "raises error if template not found" do mock_app { get('/') { slim :no_such_template } } assert_raise(Errno::ENOENT) { get('/') } end HTML4_DOCTYPE = "" it "passes slim options to the slim engine" do mock_app { get('/') { slim "x foo='bar'", :attr_wrapper => "'" }} get '/' assert ok? assert_body "" end it "passes default slim options to the slim engine" do mock_app do set :slim, :attr_wrapper => "'" get('/') { slim "x foo='bar'" } end get '/' assert ok? assert_body "" end it "merges the default slim options with the overrides and passes them to the slim engine" do mock_app do set :slim, :attr_wrapper => "'" get('/') { slim "x foo='bar'" } get('/other') { slim "x foo='bar'", :attr_wrapper => '"' } end get '/' assert ok? assert_body "" get '/other' assert ok? assert_body '' end end rescue LoadError warn "#{$!.to_s}: skipping slim tests" end