require 'helper' describe Temple::HTML::AttributeMerger do before do @merger = Temple::HTML::AttributeMerger.new end it 'should pass static attributes through' do @merger.call([:html, :tag, 'div', [:html, :attrs, [:html, :attr, 'class', [:static, 'b']]], [:content] ]).should.equal [:html, :tag, "div", [:html, :attrs, [:html, :attr, "class", [:static, "b"]]], [:content]] end it 'should preserve the order of html attributes' do @merger.call([:html, :tag, 'meta', [:html, :attrs, [:html, :attr, 'c', [:static, '1']], [:html, :attr, 'd', [:static, '2']], [:html, :attr, 'a', [:static, '3']], [:html, :attr, 'b', [:static, '4']]] ]).should.equal [:html, :tag, 'meta', [:html, :attrs, [:html, :attr, 'c', [:static, '1']], [:html, :attr, 'd', [:static, '2']], [:html, :attr, 'a', [:static, '3']], [:html, :attr, 'b', [:static, '4']]]] # Use case: @merger.call([:html, :tag, 'meta', [:html, :attrs, [:html, :attr, 'http-equiv', [:static, 'Content-Type']], [:html, :attr, 'content', [:static, '']]] ]).should.equal [:html, :tag, 'meta', [:html, :attrs, [:html, :attr, 'http-equiv', [:static, 'Content-Type']], [:html, :attr, 'content', [:static, '']]]] end it 'should merge ids' do @merger.call([:html, :tag, 'div', [:html, :attrs, [:html, :attr, 'id', [:dynamic, 'a']], [:html, :attr, 'id', [:dynamic, 'b']]], [:content] ]).should.equal [:html, :tag, "div", [:html, :attrs, [:html, :attr, "id", [:multi, [:code, "_temple_html_attributemerger1 = []"], [:capture, "_temple_html_attributemerger1[0]", [:dynamic, "a"]], [:capture, "_temple_html_attributemerger1[1]", [:dynamic, "b"]], [:dynamic, "_temple_html_attributemerger1.reject(&:empty?).join(\"_\")"]]]], [:content]] end it 'should merge classes' do @merger.call([:html, :tag, 'div', [:html, :attrs, [:html, :attr, 'class', [:static, 'a']], [:html, :attr, 'class', [:dynamic, 'b']]], [:content] ]).should.equal [:html, :tag, "div", [:html, :attrs, [:html, :attr, "class", [:multi, [:code, "_temple_html_attributemerger1 = []"], [:capture, "_temple_html_attributemerger1[0]", [:static, "a"]], [:capture, "_temple_html_attributemerger1[1]", [:dynamic, "b"]], [:dynamic, "_temple_html_attributemerger1.reject(&:empty?).join(\" \")"]]]], [:content]] end end