haml--haml/test/hamlit/optimization_test.rb

46 lines
1.3 KiB
Ruby

describe 'optimization' do
def compiled_code(haml)
Hamlit::Engine.new.call(haml)
end
describe 'static analysis' do
it 'renders static value for href statically' do
haml = %|%a{ href: 1 }|
assert_equal true, compiled_code(haml).include?(%|href='1'|)
end
it 'renders static script statically' do
haml = <<-HAML.unindent
%span
1
HAML
assert_equal true, compiled_code(haml).include?(%q|<span>\n1\n</span>|)
end
it 'renders inline static script statically' do
haml = %|%span= 1|
assert_equal true, compiled_code(haml).include?(%|<span>1</span>|)
end
end
describe 'string interpolation' do
it 'renders a static part of string literal statically' do
haml = %q|%input{ value: "jruby#{9000}#{dynamic}" }|
assert_equal true, compiled_code(haml).include?(%|value='jruby9000|)
haml = %q|%span= "jruby#{9000}#{dynamic}"|
assert_equal true, compiled_code(haml).include?(%|<span>jruby9000|)
end
it 'optimizes script' do
haml = %q|= "jruby#{ "#{9000}" }#{dynamic}"|
assert_equal true, compiled_code(haml).include?(%|jruby9000|)
end
it 'detects a static part recursively' do
haml = %q|%input{ value: "#{ "hello#{ hello }" }" }|
assert_equal true, compiled_code(haml).include?(%|value='hello|)
end
end
end