File: new_attribute_test.rb

package info (click to toggle)
ruby-haml 7.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,996 kB
  • sloc: ruby: 9,939; sh: 23; makefile: 11
file content (127 lines) | stat: -rw-r--r-- 3,330 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# frozen_string_literal: true

describe Haml::Engine do
  include RenderHelper

  describe 'new attributes' do
    it 'renders attributes' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <p class="foo">bar</p>
      HTML
        %p(class='foo') bar
      HAML
    end

    it 'renders multiple attributes' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <p a="1" b="2">bar</p>
      HTML
        %p(a=1 b=2) bar
      HAML
    end

    it 'renders hyphenated attributes properly' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <p data-foo="bar">bar</p>
      HTML
        %p(data-foo='bar') bar
      HAML
    end

    it 'renders multiply hyphenated attributes properly' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <p data-x-foo="bar">bar</p>
      HTML
        %p(data-x-foo='bar') bar
      HAML
    end

    it 'renders @ attributes properly' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <p @foo="bar">bar</p>
      HTML
        %p(@foo='bar') bar
      HAML
    end

    it 'renders # attributes properly' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <p #foo="bar">bar</p>
      HTML
        %p(#foo='bar') bar
      HAML
    end

    it 'renders . attributes properly' do
      assert_render(<<-HTML.unindent, <<-HAML.unindent)
        <div :visible.sync="bar">bar</div>
      HTML
        %div(:visible.sync='bar') bar
      HAML
    end

    describe 'html escape' do
      it 'escapes attribute values on static attributes' do
        assert_render(<<-HTML.unindent, <<-'HAML'.unindent)
          <a title="&#39;"></a>
          <a title="&#39;&quot;"></a>
          <a href="/search?foo=bar&amp;hoge=&lt;fuga&gt;"></a>
        HTML
          %a(title="'")
          %a(title = "'\"")
          %a(href='/search?foo=bar&hoge=<fuga>')
        HAML
      end

      it 'escapes attribute values on dynamic attributes' do
        assert_render(<<-HTML.unindent, <<-'HAML'.unindent)
          <a title="&#39;&quot;"></a>
          <a href="/search?foo=bar&amp;hoge=&lt;fuga&gt;"></a>
        HTML
          - title = "'\""
          - href  = '/search?foo=bar&hoge=<fuga>'
          %a(title=title)
          %a(href=href)
        HAML
      end
    end

    describe 'element class with attribute class' do
      it 'does not generate double classes' do
        assert_render(<<-HTML.unindent, <<-HAML.unindent)
          <div class="item first"></div>
        HTML
          .item(class='first')
        HAML
      end

      it 'does not generate double classes for a variable' do
        assert_render(<<-HTML.unindent, <<-HAML.unindent)
          <div class="element val"></div>
        HTML
          - val = 'val'
          .element(class=val)
        HAML
      end
    end

    describe 'element id with attribute id' do
      it 'concatenates ids with underscore' do
        assert_render(<<-HTML.unindent, <<-HAML.unindent)
          <div id="item_first"></div>
        HTML
          #item(id='first')
        HAML
      end

      it 'concatenates ids with underscore for a variable' do
        assert_render(<<-HTML.unindent, <<-HAML.unindent)
          <div id="item_first"></div>
        HTML
          - val = 'first'
          #item(id=val)
        HAML
      end
    end
  end
end