Split attributes tests
This commit is contained in:
parent
f46c0a32b3
commit
1fd9afb4f2
|
@ -2,218 +2,163 @@ describe Hamlit::Engine do
|
|||
include RenderHelper
|
||||
|
||||
describe 'id attributes' do
|
||||
specify 'compatilibity' do
|
||||
assert_haml(<<-HAML.unindent)
|
||||
#a
|
||||
#a{ id: nil }
|
||||
#a{ id: nil }(id=nil)
|
||||
#a{ id: false }
|
||||
#a{ id: 'b' }
|
||||
#b{ id: 'a' }
|
||||
- id = 'c'
|
||||
#a{ id: 'b' }(id=id)
|
||||
- id = 'b'
|
||||
#c{ id: a = 'a' }(id=id)
|
||||
- id = 'a'
|
||||
#d#c{ id: a = 'b' }(id=id)
|
||||
#d#c{ id: %w[b e] }(id=id)
|
||||
- hash = { id: 'a' }
|
||||
%div{ hash }
|
||||
#b{ hash }
|
||||
#b{ hash }(id='c')
|
||||
- id = 'c'
|
||||
#b{ hash }(id=id)
|
||||
HAML
|
||||
describe 'compatilibity' do
|
||||
it { assert_haml(%q|#a|) }
|
||||
it { assert_haml(%q|#a{ id: nil }|) }
|
||||
it { assert_haml(%q|#a{ id: nil }(id=nil)|) }
|
||||
it { assert_haml(%q|#a{ id: false }|) }
|
||||
it { assert_haml(%q|#a{ id: 'b' }|) }
|
||||
it { assert_haml(%q|#b{ id: 'a' }|) }
|
||||
|
||||
it { assert_haml(%q|#a{ id: 'b' }(id=id)|, locals: { id: 'c' }) }
|
||||
it { assert_haml(%q|#c{ id: a = 'a' }(id=id)|, locals: { id: 'b' }) }
|
||||
it { assert_haml(%q|#d#c{ id: a = 'b' }(id=id)|, locals: { id: 'a' }) }
|
||||
it { assert_haml(%q|#d#c{ id: %w[b e] }(id=id)|, locals: { id: 'a' }) }
|
||||
|
||||
it { assert_haml(%q|%div{ hash }|, locals: { hash: { id: 'a' } }) }
|
||||
it { assert_haml(%q|#b{ hash }|, locals: { hash: { id: 'a' } }) }
|
||||
it { assert_haml(%q|#b{ hash }(id='c')|, locals: { hash: { id: 'a' }, id: 'c' }) }
|
||||
it { assert_haml(%q|#b{ hash }(id=id)|, locals: { hash: { id: 'a' }, id: 'c' }) }
|
||||
end
|
||||
|
||||
specify 'incompatibility' do
|
||||
assert_render(%Q|<div id='a'></div>\n|, %q|#a{ id: [] }|)
|
||||
assert_render(%Q|<a id=''></a>\n|, %q|%a{ id: [nil, false] }|)
|
||||
assert_render(<<-HTML.unindent, <<-'HAML'.unindent)
|
||||
<div id='c_a'></div>
|
||||
HTML
|
||||
- id = 'a'
|
||||
#d#c{ id: [] }(id=id)
|
||||
HAML
|
||||
describe 'incompatibility' do
|
||||
it { assert_render(%Q|<div id='a'></div>\n|, %q|#a{ id: [] }|) }
|
||||
it { assert_render(%Q|<a id=''></a>\n|, %q|%a{ id: [nil, false] }|) }
|
||||
it { assert_render(%Q|<div id='c_a'></div>\n|, %q|#d#c{ id: [] }(id=id)|, locals: { id: 'a' }) }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'class attributes' do
|
||||
specify 'compatibility' do
|
||||
assert_haml(%q|.bar.foo|)
|
||||
assert_haml(%q|.foo.bar|)
|
||||
assert_haml(%Q|%div(class='bar foo')|)
|
||||
assert_haml(%Q|%div(class='foo bar')|)
|
||||
assert_haml(%Q|%div{ class: 'bar foo' }|)
|
||||
assert_haml(<<-HAML.unindent)
|
||||
- klass = 'b a'
|
||||
.b.a
|
||||
.b{ class: 'a' }
|
||||
.a{ class: 'b a' }
|
||||
.b.a{ class: 'b a' }
|
||||
.b{ class: 'b a' }
|
||||
.a{ class: klass }
|
||||
.b{ class: klass }
|
||||
.b.a{ class: klass }
|
||||
.b{ class: 'c a' }
|
||||
.b{ class: 'a c' }
|
||||
.a{ class: [] }
|
||||
.a{ class: %w[c b] }
|
||||
%div{ class: 'b a' }(class=klass)
|
||||
%div(class=klass){ class: 'b a' }
|
||||
.a.d(class=klass){ class: 'c d' }
|
||||
.a.d(class=klass)
|
||||
.a.c(class='b')
|
||||
- klass = nil
|
||||
.a{:class => nil}
|
||||
.a{:class => false}
|
||||
.a{:class => klass}
|
||||
.a{:class => nil}(class=klass)
|
||||
- hash = { class: nil }
|
||||
.b{ hash, class: 'a' }
|
||||
.b{ hash, 'class' => 'a' }
|
||||
- hash = { class: 'd' }
|
||||
.a{ hash }
|
||||
.b{ hash, class: 'a' }(class='c')
|
||||
.b{ hash, class: 'a' }(class=klass)
|
||||
HAML
|
||||
describe 'compatibility' do
|
||||
it { assert_haml(%q|.bar.foo|) }
|
||||
it { assert_haml(%q|.foo.bar|) }
|
||||
it { assert_haml(%q|%div(class='bar foo')|) }
|
||||
it { assert_haml(%q|%div(class='foo bar')|) }
|
||||
it { assert_haml(%q|%div{ class: 'bar foo' }|) }
|
||||
|
||||
it { assert_haml(%q|.b{ class: 'a' }|) }
|
||||
it { assert_haml(%q|.a{ class: 'b a' }|) }
|
||||
it { assert_haml(%q|.b.a{ class: 'b a' }|) }
|
||||
it { assert_haml(%q|.b{ class: 'b a' }|) }
|
||||
|
||||
it { assert_haml(%q|.a{ class: klass }|, locals: { klass: 'b a' }) }
|
||||
it { assert_haml(%q|.b{ class: klass }|, locals: { klass: 'b a' }) }
|
||||
it { assert_haml(%q|.b.a{ class: klass }|, locals: { klass: 'b a' }) }
|
||||
|
||||
it { assert_haml(%q|.b{ class: 'c a' }|) }
|
||||
it { assert_haml(%q|.b{ class: 'a c' }|) }
|
||||
it { assert_haml(%q|.a{ class: [] }|) }
|
||||
it { assert_haml(%q|.a{ class: %w[c b] }|) }
|
||||
it { assert_haml(%q|.a.c(class='b')|) }
|
||||
|
||||
it { assert_haml(%q|%div{ class: 'b a' }(class=klass)|, locals: { klass: 'b a' }) }
|
||||
it { assert_haml(%q|%div(class=klass){ class: 'b a' }|, locals: { klass: 'b a' }) }
|
||||
it { assert_haml(%q|.a.d(class=klass){ class: 'c d' }|, locals: { klass: 'b a' }) }
|
||||
it { assert_haml(%q|.a.d(class=klass)|, locals: { klass: 'b a' }) }
|
||||
|
||||
it { assert_haml(%q|.a{:class => klass}|, locals: { klass: nil }) }
|
||||
it { assert_haml(%q|.a{:class => nil}(class=klass)|, locals: { klass: nil }) }
|
||||
it { assert_haml(%q|.a{:class => nil}|) }
|
||||
it { assert_haml(%q|.a{:class => false}|) }
|
||||
|
||||
it { assert_haml(%q|.b{ hash, class: 'a' }|, locals: { hash: { class: nil } }) }
|
||||
it { assert_haml(%q|.b{ hash, :class => 'a' }|, locals: { hash: { class: nil } }) }
|
||||
it { assert_haml(%q|.b{ hash, 'class' => 'a' }|, locals: { hash: { class: nil } }) }
|
||||
|
||||
it { assert_haml(%q|.a{ hash }|, locals: { hash: { class: 'd' } }) }
|
||||
it { assert_haml(%q|.b{ hash, class: 'a' }(class='c')|, locals: { hash: { class: 'd' } }) }
|
||||
it { assert_haml(%q|.b{ hash, class: 'a' }(class=klass)|, locals: { hash: { class: 'd' }, klass: nil }) }
|
||||
end
|
||||
|
||||
specify 'incompatibility' do
|
||||
assert_render(%Q|<div class='a b'></div>\n|, %q|%div{ class: 'b a' }|)
|
||||
assert_render(<<-HTML.unindent, <<-'HAML'.unindent)
|
||||
<div class='a b'></div>
|
||||
HTML
|
||||
- klass = 'b a'
|
||||
%div{ class: klass }
|
||||
HAML
|
||||
describe 'incompatibility' do
|
||||
it { assert_render(%Q|<div class=''></div>\n|, %q|%div{ class: nil }|) }
|
||||
it { assert_render(%Q|<div class='a b'></div>\n|, %q|%div{ class: 'b a' }|) }
|
||||
it { assert_render(%Q|<div class='a b'></div>\n|, %q|%div{ class: klass }|, locals: { klass: 'b a' }) }
|
||||
end
|
||||
end
|
||||
|
||||
specify 'data attributes' do
|
||||
assert_haml(<<-HAML.unindent)
|
||||
- val = false
|
||||
#foo.bar{ data: { disabled: val } }
|
||||
- hash = {:a => {:b => 'c'}}
|
||||
- hash[:d] = hash
|
||||
%div{:data => hash}
|
||||
- hash = { data: hash }
|
||||
%div{ hash }
|
||||
%div{:data => {:foo_bar => 'blip', :baz => 'bang'}}
|
||||
%div{ data: { raw_src: 'foo' } }
|
||||
%a{ data: { value: [count: 1] } }
|
||||
%a{ 'data-disabled' => true }
|
||||
%a{ :'data-disabled' => true }
|
||||
%a{ data: { nil => 3 } }
|
||||
%a{ data: 3 }
|
||||
HAML
|
||||
describe 'data attributes' do
|
||||
it { assert_haml(%q|#foo.bar{ data: { disabled: val } }|, locals: { val: false }) }
|
||||
it { assert_haml(%q|%div{:data => hash}|, locals: { hash: { :a => { :b => 'c' } }.tap { |h| h[:d] = h } }) }
|
||||
it { assert_haml(%q|%div{ hash }|, locals: { hash: { data: { :a => { :b => 'c' } }.tap { |h| h[:d] = h } } }) }
|
||||
it { assert_haml(%q|%div{:data => {:foo_bar => 'blip', :baz => 'bang'}}|) }
|
||||
it { assert_haml(%q|%div{ data: { raw_src: 'foo' } }|) }
|
||||
it { assert_haml(%q|%a{ data: { value: [count: 1] } }|) }
|
||||
it { assert_haml(%q|%a{ 'data-disabled' => true }|) }
|
||||
it { assert_haml(%q|%a{ :'data-disabled' => true }|) }
|
||||
it { assert_haml(%q|%a{ data: { nil => 3 } }|) }
|
||||
it { assert_haml(%q|%a{ data: 3 }|) }
|
||||
end
|
||||
|
||||
specify 'boolean attributes' do
|
||||
assert_haml(<<-HAML.unindent)
|
||||
%input{ disabled: nil }
|
||||
%input{ disabled: false }
|
||||
%input{ disabled: true }
|
||||
%input{ disabled: 'false' }
|
||||
%input{ disabled: val = nil }
|
||||
%input{ disabled: val = false }
|
||||
%input{ disabled: val = true }
|
||||
%input{ disabled: val = 'false' }
|
||||
%input{ disabled: nil }(disabled=true)
|
||||
%input{ disabled: false }(disabled=true)
|
||||
%input{ disabled: true }(disabled=false)
|
||||
- hash = { disabled: false }
|
||||
%a{ hash }
|
||||
- hash = { disabled: nil }
|
||||
%a{ hash }
|
||||
%input(disabled=true){ disabled: nil }
|
||||
%input(disabled=true){ disabled: false }
|
||||
%input(disabled=false){ disabled: true }
|
||||
- val = true
|
||||
%input(disabled=val){ disabled: false }
|
||||
- val = false
|
||||
%input(disabled=val)
|
||||
%input(disabled=nil)
|
||||
%input(disabled=false)
|
||||
%input(disabled=true)
|
||||
%input(disabled='false')
|
||||
- val = 'false'
|
||||
%input(disabled=val)
|
||||
%input(disabled='false'){ disabled: true }
|
||||
%input(disabled='false'){ disabled: false }
|
||||
%input(disabled='false'){ disabled: nil }
|
||||
%input(disabled=''){ disabled: nil }
|
||||
HAML
|
||||
describe 'boolean attributes' do
|
||||
it { assert_haml(%q|%input{ disabled: nil }|) }
|
||||
it { assert_haml(%q|%input{ disabled: false }|) }
|
||||
it { assert_haml(%q|%input{ disabled: true }|) }
|
||||
it { assert_haml(%q|%input{ disabled: 'false' }|) }
|
||||
|
||||
assert_haml(%q|%input(checked=true)|)
|
||||
assert_haml(%q|%input(checked=true)|, format: :xhtml)
|
||||
it { assert_haml(%q|%input{ disabled: val = nil }|) }
|
||||
it { assert_haml(%q|%input{ disabled: val = false }|) }
|
||||
it { assert_haml(%q|%input{ disabled: val = true }|) }
|
||||
it { assert_haml(%q|%input{ disabled: val = 'false' }|) }
|
||||
|
||||
it { assert_haml(%q|%input{ disabled: nil }(disabled=true)|) }
|
||||
it { assert_haml(%q|%input{ disabled: false }(disabled=true)|) }
|
||||
it { assert_haml(%q|%input{ disabled: true }(disabled=false)|) }
|
||||
it { assert_haml(%q|%a{ hash }|, locals: { hash: { disabled: false } }) }
|
||||
it { assert_haml(%q|%a{ hash }|, locals: { hash: { disabled: nil } }) }
|
||||
|
||||
it { assert_haml(%q|input(disabled=true){ disabled: nil }|) }
|
||||
it { assert_haml(%q|input(disabled=true){ disabled: false }|) }
|
||||
it { assert_haml(%q|input(disabled=false){ disabled: true }|) }
|
||||
it { assert_haml(%q|%input(disabled=val){ disabled: false }|, locals: { val: true }) }
|
||||
it { assert_haml(%q|%input(disabled=val){ disabled: false }|, locals: { val: false }) }
|
||||
|
||||
it { assert_haml(%q|%input(disabled=nil)|) }
|
||||
it { assert_haml(%q|%input(disabled=false)|) }
|
||||
it { assert_haml(%q|%input(disabled=true)|) }
|
||||
it { assert_haml(%q|%input(disabled='false')|) }
|
||||
it { assert_haml(%q|%input(disabled=val)|, locals: { val: 'false' }) }
|
||||
|
||||
it { assert_haml(%q|%input(disabled='false'){ disabled: true }|) }
|
||||
it { assert_haml(%q|%input(disabled='false'){ disabled: false }|) }
|
||||
it { assert_haml(%q|%input(disabled='false'){ disabled: nil }|) }
|
||||
it { assert_haml(%q|%input(disabled=''){ disabled: nil }|) }
|
||||
|
||||
it { assert_haml(%q|%input(checked=true)|) }
|
||||
it { assert_haml(%q|%input(checked=true)|, format: :xhtml) }
|
||||
end
|
||||
|
||||
describe 'common attributes' do
|
||||
specify 'compatibility' do
|
||||
assert_haml(%Q|%a{ href: '/search?foo=bar&hoge=<fuga>' }|)
|
||||
assert_haml(<<-HAML.unindent)
|
||||
- new = 'new'
|
||||
- old = 'old'
|
||||
%span(foo='new'){ foo: 'old' }
|
||||
%span{ foo: 'old' }(foo='new')
|
||||
%span(foo=new){ foo: 'old' }
|
||||
%span{ foo: 'old' }(foo=new)
|
||||
%span(foo=new){ foo: old }
|
||||
%span{ foo: old }(foo=new)
|
||||
HAML
|
||||
describe 'compatibility' do
|
||||
it { assert_haml(%Q|%a{ href: '/search?foo=bar&hoge=<fuga>' }|) }
|
||||
it { assert_haml(%q|%span(foo='new'){ foo: 'old' }|, locals: { new: 'new', old: 'old' }) }
|
||||
it { assert_haml(%q|%span(foo=new){ foo: 'old' }|, locals: { new: 'new', old: 'old' }) }
|
||||
it { assert_haml(%q|%span(foo=new){ foo: old }|, locals: { new: 'new', old: 'old' }) }
|
||||
it { assert_haml(%q|%span{ foo: 'old' }(foo='new')|, locals: { new: 'new', old: 'old' }) }
|
||||
it { assert_haml(%q|%span{ foo: 'old' }(foo=new)|, locals: { new: 'new', old: 'old' }) }
|
||||
it { assert_haml(%q|%span{ foo: old }(foo=new)|, locals: { new: 'new', old: 'old' }) }
|
||||
end
|
||||
|
||||
specify 'incompatibility' do
|
||||
assert_render(%Q|<a href=''"'></a>\n|, %q|%a{ href: "'\"" }|)
|
||||
describe 'incompatibility' do
|
||||
it { assert_render(%Q|<a href=''"'></a>\n|, %q|%a{ href: "'\"" }|) }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'object reference' do
|
||||
::TestObject = Struct.new(:id) unless defined?(::TestObject)
|
||||
|
||||
it 'renders object reference' do
|
||||
assert_render(%Q|<a class='test_object' id='test_object_10'></a>\n|, <<-HAML.unindent)
|
||||
- foo = TestObject.new(10)
|
||||
%a[foo]
|
||||
HAML
|
||||
end
|
||||
|
||||
it 'accepts nil prefix' do
|
||||
assert_render(%Q|<a class='test_object' id='test_object_10'></a>\n|, <<-HAML.unindent)
|
||||
- foo = TestObject.new(10)
|
||||
%a[foo, nil]
|
||||
HAML
|
||||
end
|
||||
|
||||
it 'accepts nil reference' do
|
||||
assert_render(%Q|<a class='test_object' id='test_object_new'></a>\n|, <<-HAML.unindent)
|
||||
- foo = TestObject.new(nil)
|
||||
%a[foo]
|
||||
HAML
|
||||
end
|
||||
|
||||
it 'accepts prefix' do
|
||||
assert_render(%Q|<a class='pre_test_object' id='pre_test_object_10'></a>\n|, <<-HAML.unindent)
|
||||
- foo = TestObject.new(10)
|
||||
%a[foo, 'pre']
|
||||
HAML
|
||||
end
|
||||
|
||||
it 'accepts with static and dynamic class and ids' do
|
||||
assert_render(%Q|<div class='static test_object' id='static_test_object_10'></div>\n|, %q|.static#static[TestObject.new(10)]|)
|
||||
end
|
||||
|
||||
it 'accepts class and id conflicts' do
|
||||
assert_render(%Q|<a class='dynamic pre_test_object static' id='static_dynamic_pre_test_object_10'></a>\n|, <<-HAML.unindent)
|
||||
- foo = TestObject.new(10)
|
||||
- dynamic = 'dynamic'
|
||||
%a.static#static[foo, 'pre']{ id: dynamic, class: dynamic }
|
||||
HAML
|
||||
end
|
||||
|
||||
it 'accepts nil reference' do
|
||||
assert_render(%Q|<div class='static' id='static'></div>\n|, %q|.static#static[nil]|)
|
||||
it { assert_render(%Q|<a class='test_object' id='test_object_10'></a>\n|, %q|%a[foo]|, locals: { foo: TestObject.new(10) }) }
|
||||
it { assert_render(%Q|<a class='test_object' id='test_object_10'></a>\n|, %q|%a[foo, nil]|, locals: { foo: TestObject.new(10) }) }
|
||||
it { assert_render(%Q|<a class='test_object' id='test_object_new'></a>\n|, %q|%a[foo]|, locals: { foo: TestObject.new(nil) }) }
|
||||
it { assert_render(%Q|<a class='pre_test_object' id='pre_test_object_10'></a>\n|, %q|%a[foo, 'pre']|, locals: { foo: TestObject.new(10) }) }
|
||||
it { assert_render(%Q|<div class='static test_object' id='static_test_object_10'></div>\n|, %q|.static#static[TestObject.new(10)]|) }
|
||||
it { assert_render(%Q|<div class='static' id='static'></div>\n|, %q|.static#static[nil]|) }
|
||||
it do
|
||||
assert_render(
|
||||
%Q|<a class='dynamic pre_test_object static' id='static_dynamic_pre_test_object_10'></a>\n|,
|
||||
%q|%a.static#static[foo, 'pre']{ id: dynamic, class: dynamic }|,
|
||||
locals: { foo: TestObject.new(10), dynamic: 'dynamic' },
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -224,73 +169,73 @@ describe Hamlit::Engine do
|
|||
it { assert_render(%Q|<a href=*/*></a>\n|, %q|%a{ href: '/' }|, attr_quote: ?*) }
|
||||
|
||||
it { assert_render(%Q|<a id="/"></a>\n|, %q|%a{ id: '/' }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a id="/"></a>\n|, %Q|- val = '/'\n%a{ id: val }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a id="/"></a>\n|, %Q|- hash = { id: '/' }\n%a{ hash }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a id="/"></a>\n|, %q|%a{ id: val }|, attr_quote: ?", locals: { val: '/' }) }
|
||||
it { assert_render(%Q|<a id="/"></a>\n|, %q|%a{ hash }|, attr_quote: ?", locals: { hash: { id: '/' } }) }
|
||||
|
||||
it { assert_render(%Q|<a class="/"></a>\n|, %q|%a{ class: '/' }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a class="/"></a>\n|, %Q|- val = '/'\n%a{ class: val }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a class="/"></a>\n|, %Q|- hash = { class: '/' }\n%a{ hash }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a class="/"></a>\n|, %q|%a{ class: val }|, attr_quote: ?", locals: { val: '/' }) }
|
||||
it { assert_render(%Q|<a class="/"></a>\n|, %q|%a{ hash }|, attr_quote: ?", locals: { hash: { class: '/' } }) }
|
||||
|
||||
it { assert_render(%Q|<a data="/"></a>\n|, %q|%a{ data: '/' }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a data="/"></a>\n|, %q|%a{ data: val }|, attr_quote: ?", locals: { val: '/' }) }
|
||||
it { assert_render(%Q|<a data-url="/"></a>\n|, %q|%a{ data: { url: '/' } }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a data="/"></a>\n|, %Q|- val = '/'\n%a{ data: val }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a data-url="/"></a>\n|, %Q|- val = { url: '/' }\n%a{ data: val }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a data-url="/"></a>\n|, %Q|- hash = { data: { url: '/' } }\n%a{ hash }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a data-url="/"></a>\n|, %q|%a{ data: val }|, attr_quote: ?", locals: { val: { url: '/' } }) }
|
||||
it { assert_render(%Q|<a data-url="/"></a>\n|, %q|%a{ hash }|, attr_quote: ?", locals: { hash: { data: { url: '/' } } }) }
|
||||
|
||||
it { assert_render(%Q|<a disabled="/"></a>\n|, %q|%a{ disabled: '/' }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a disabled="/"></a>\n|, %Q|- val = '/'\n%a{ disabled: val }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a disabled="/"></a>\n|, %Q|- hash = { disabled: '/' }\n%a{ hash }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a disabled="disabled"></a>\n|, %Q|- hash = { disabled: true }\n%a{ hash }|, attr_quote: ?", format: :xhtml) }
|
||||
it { assert_render(%Q|<a disabled="/"></a>\n|, %Q|%a{ disabled: val }|, attr_quote: ?", locals: { val: '/' }) }
|
||||
it { assert_render(%Q|<a disabled="/"></a>\n|, %Q|%a{ hash }|, attr_quote: ?", locals: { hash: { disabled: '/' } }) }
|
||||
it { assert_render(%Q|<a disabled="disabled"></a>\n|, %Q|%a{ hash }|, attr_quote: ?", format: :xhtml, locals: { hash: { disabled: true } }) }
|
||||
|
||||
it { assert_render(%Q|<a href="/"></a>\n|, %q|%a{ href: '/' }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a href="/"></a>\n|, %Q|- val = '/'\n%a{ href: val }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a href="/"></a>\n|, %Q|- hash = { href: '/' }\n%a{ hash }|, attr_quote: ?") }
|
||||
it { assert_render(%Q|<a href="/"></a>\n|, %q|%a{ href: val }|, attr_quote: ?", locals: { val: '/' }) }
|
||||
it { assert_render(%Q|<a href="/"></a>\n|, %q|%a{ hash }|, attr_quote: ?", locals: { hash: { href: '/' } }) }
|
||||
end
|
||||
|
||||
describe 'escape_attrs' do
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %q|%a{ id: '&<>"/' }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|%a{ id: val }|, escape_attrs: false, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: false, locals: { hash: { id: '&<>"/' } }) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %q|%a{ id: '&<>"/' }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ id: val }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ id: val }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- hash = { id: '&<>"/' }\n%a{ hash }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- hash = { id: '&<>"/' }\n%a{ hash }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|%a{ id: val }|, escape_attrs: true, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: true, locals: { hash: { id: '&<>"/' } }) }
|
||||
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %q|%a{ id: '&<>"/' }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %q|%a{ id: '&<>"/' }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ id: val }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ id: val }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- hash = { id: '&<>"/' }\n%a{ hash }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a id='&<>"/'></a>\n|, %Q|- hash = { id: '&<>"/' }\n%a{ hash }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a class='&<>"/'></a>\n|, %q|%a{ class: '&<>"/' }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a class='&<>"/'></a>\n|, %Q|%a{ class: val }|, escape_attrs: false, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a class='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: false, locals: { hash: { class: '&<>"/' } }) }
|
||||
it { assert_render(%Q|<a class='&<>"/'></a>\n|, %q|%a{ class: '&<>"/' }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a class='&<>"/'></a>\n|, %Q|%a{ class: val }|, escape_attrs: true, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a class='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: true, locals: { hash: { class: '&<>"/' } }) }
|
||||
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %q|%a{ data: '&<>"/' }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|%a{ data: val }|, escape_attrs: false, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: false, locals: { hash: { data: '&<>"/' } }) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %q|%a{ data: '&<>"/' }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ data: val }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ data: val }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|- hash = { data: '&<>"/' }\n%a{ hash }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|- hash = { data: '&<>"/' }\n%a{ hash }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|%a{ data: val }|, escape_attrs: true, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a data='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: true, locals: { hash: { data: '&<>"/' } }) }
|
||||
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %q|%a{ disabled: '&<>"/' }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|%a{ disabled: val }|, escape_attrs: false, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: false, locals: { hash: { disabled: '&<>"/' } }) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %q|%a{ disabled: '&<>"/' }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ disabled: val }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ disabled: val }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|- hash = { disabled: '&<>"/' }\n%a{ hash }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|- hash = { disabled: '&<>"/' }\n%a{ hash }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|%a{ disabled: val }|, escape_attrs: true, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a disabled='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: true, locals: { hash: { disabled: '&<>"/' } }) }
|
||||
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %q|%a{ href: '&<>"/' }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|%a{ href: val }|, escape_attrs: false, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: false, locals: { hash: { href: '&<>"/' } }) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %q|%a{ href: '&<>"/' }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ href: val }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|- val = '&<>"/'\n%a{ href: val }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|- hash = { href: '&<>"/' }\n%a{ hash }|, escape_attrs: false) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|- hash = { href: '&<>"/' }\n%a{ hash }|, escape_attrs: true) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|%a{ href: val }|, escape_attrs: true, locals: { val: '&<>"/' }) }
|
||||
it { assert_render(%Q|<a href='&<>"/'></a>\n|, %Q|%a{ hash }|, escape_attrs: true, locals: { hash: { href: '&<>"/' } }) }
|
||||
end
|
||||
|
||||
describe 'format' do
|
||||
it { assert_render(%Q|<a disabled></a>\n|, %q|%a{ disabled: true }|, format: :html) }
|
||||
it { assert_render(%Q|<a disabled></a>\n|, %q|%a{ disabled: val }|, format: :html, locals: { val: true }) }
|
||||
it { assert_render(%Q|<a disabled></a>\n|, %q|%a{ hash }|, format: :html, locals: { hash: { disabled: true } }) }
|
||||
it { assert_render(%Q|<a disabled='disabled'></a>\n|, %q|%a{ disabled: true }|, format: :xhtml) }
|
||||
it { assert_render(%Q|<a disabled></a>\n|, %Q|- val = true\n%a{ disabled: val }|, format: :html) }
|
||||
it { assert_render(%Q|<a disabled='disabled'></a>\n|, %Q|- val = true\n%a{ disabled: val }|, format: :xhtml) }
|
||||
it { assert_render(%Q|<a disabled></a>\n|, %Q|- hash = { disabled: true }\n%a{ hash }|, format: :html) }
|
||||
it { assert_render(%Q|<a disabled='disabled'></a>\n|, %Q|- hash = { disabled: true }\n%a{ hash }|, format: :xhtml) }
|
||||
it { assert_render(%Q|<a disabled='disabled'></a>\n|, %q|%a{ disabled: val }|, format: :xhtml, locals: { val: true }) }
|
||||
it { assert_render(%Q|<a disabled='disabled'></a>\n|, %q|%a{ hash }|, format: :xhtml, locals: { hash: { disabled: true } }) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -26,17 +26,26 @@ end
|
|||
|
||||
module RenderHelper
|
||||
def assert_render(expected, haml, options = {})
|
||||
actual = render(haml, options)
|
||||
actual = render_hamlit(haml, options)
|
||||
assert_equal expected, actual
|
||||
end
|
||||
|
||||
def render(haml, options = {})
|
||||
eval Hamlit::Engine.new(options).call(haml)
|
||||
def render_haml(haml, options = {})
|
||||
options = options.dup
|
||||
locals = options.delete(:locals) || {}
|
||||
haml_options = { escape_html: true, escape_attrs: true, ugly: true }
|
||||
Haml::Engine.new(haml, haml_options.merge(options)).render(Object.new, locals)
|
||||
end
|
||||
|
||||
def render_hamlit(haml, options = {})
|
||||
options = options.dup
|
||||
locals = options.delete(:locals) || {}
|
||||
Hamlit::Template.new(options) { haml }.render(Object.new, locals)
|
||||
end
|
||||
|
||||
def assert_haml(haml, options = {})
|
||||
expected = Haml::Engine.new(haml, { escape_html: true, escape_attrs: true, ugly: true }.merge(options)).to_html
|
||||
actual = render(haml, options)
|
||||
expected = render_haml(haml, options)
|
||||
actual = render_hamlit(haml, options)
|
||||
assert_equal expected, actual
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue