govspeak 6.5.0 → 6.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -2
  3. data/README.md +6 -5
  4. data/Rakefile +7 -4
  5. data/lib/govspeak.rb +116 -116
  6. data/lib/govspeak/header_extractor.rb +1 -1
  7. data/lib/govspeak/html_sanitizer.rb +12 -9
  8. data/lib/govspeak/kramdown_overrides.rb +2 -2
  9. data/lib/govspeak/link_extractor.rb +6 -6
  10. data/lib/govspeak/post_processor.rb +34 -14
  11. data/lib/govspeak/presenters/attachment_presenter.rb +39 -39
  12. data/lib/govspeak/presenters/contact_presenter.rb +2 -2
  13. data/lib/govspeak/presenters/h_card_presenter.rb +3 -3
  14. data/lib/govspeak/presenters/image_presenter.rb +4 -4
  15. data/lib/govspeak/structured_header_extractor.rb +2 -2
  16. data/lib/govspeak/version.rb +1 -1
  17. data/lib/kramdown/parser/govuk.rb +6 -7
  18. data/test/blockquote_extra_quote_remover_test.rb +24 -26
  19. data/test/govspeak_attachment_link_test.rb +0 -2
  20. data/test/govspeak_attachment_test.rb +0 -2
  21. data/test/govspeak_attachments_image_test.rb +12 -14
  22. data/test/govspeak_attachments_inline_test.rb +22 -24
  23. data/test/govspeak_button_test.rb +29 -31
  24. data/test/govspeak_contacts_test.rb +29 -31
  25. data/test/govspeak_extract_contact_content_ids_test.rb +1 -3
  26. data/test/govspeak_images_bang_test.rb +37 -39
  27. data/test/govspeak_images_test.rb +43 -45
  28. data/test/govspeak_link_extractor_test.rb +1 -1
  29. data/test/govspeak_link_test.rb +1 -3
  30. data/test/govspeak_structured_headers_test.rb +7 -6
  31. data/test/govspeak_table_with_headers_test.rb +68 -21
  32. data/test/govspeak_test.rb +98 -101
  33. data/test/govspeak_test_helper.rb +1 -1
  34. data/test/html_sanitizer_test.rb +17 -9
  35. data/test/html_validator_test.rb +2 -2
  36. data/test/presenters/h_card_presenter_test.rb +39 -41
  37. data/test/test_helper.rb +12 -8
  38. metadata +52 -40
@@ -1,6 +1,4 @@
1
- # encoding: UTF-8
2
-
3
- require 'test_helper'
1
+ require "test_helper"
4
2
 
5
3
  class GovspeakExtractContactContentIdsTest < Minitest::Test
6
4
  test "contact content ids can be extracted from govspeak" do
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
-
3
- require 'test_helper'
4
- require 'govspeak_test_helper'
1
+ require "test_helper"
2
+ require "govspeak_test_helper"
5
3
 
6
4
  class GovspeakImagesBangTest < Minitest::Test
7
5
  include GovspeakTestHelper
@@ -20,85 +18,85 @@ class GovspeakImagesBangTest < Minitest::Test
20
18
  test "!!n syntax renders an image in options[:images]" do
21
19
  given_govspeak "!!1", images: [Image.new] do
22
20
  assert_html_output(
23
- %{<figure class="image embedded">} +
24
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
25
- %{</figure>}
21
+ %(<figure class="image embedded">) +
22
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
23
+ %(</figure>),
26
24
  )
27
25
  end
28
26
  end
29
27
 
30
28
  test "!!n syntax escapes alt text" do
31
- given_govspeak "!!1", images: [Image.new(alt_text: %{my alt '&"<>})] do
29
+ given_govspeak "!!1", images: [Image.new(alt_text: %(my alt '&"<>))] do
32
30
  assert_html_output(
33
- %{<figure class="image embedded">} +
34
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&amp;&quot;&lt;&gt;"></div>} +
35
- %{</figure>}
31
+ %(<figure class="image embedded">) +
32
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&amp;&quot;&lt;&gt;"></div>) +
33
+ %(</figure>),
36
34
  )
37
35
  end
38
36
  end
39
37
 
40
38
  test "!!n syntax renders nothing if not found" do
41
39
  doc = Govspeak::Document.new("!!1")
42
- assert_equal %{\n}, doc.to_html
40
+ assert_equal %(\n), doc.to_html
43
41
  end
44
42
 
45
43
  test "Image:image-id syntax renders nothing" do
46
44
  doc = Govspeak::Document.new("[Image:another-id]", images: [Image.new])
47
- assert_equal %{\n}, doc.to_html
45
+ assert_equal %(\n), doc.to_html
48
46
  end
49
47
 
50
48
  test "!!n syntax adds image caption if given" do
51
- given_govspeak "!!1", images: [Image.new(caption: 'My Caption & so on')] do
49
+ given_govspeak "!!1", images: [Image.new(caption: "My Caption & so on")] do
52
50
  assert_html_output(
53
- %{<figure class="image embedded">} +
54
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
55
- %{<figcaption><p>My Caption &amp; so on</p></figcaption>} +
56
- %{</figure>}
51
+ %(<figure class="image embedded">) +
52
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n) +
53
+ %(<figcaption><p>My Caption &amp; so on</p></figcaption>) +
54
+ %(</figure>),
57
55
  )
58
56
  end
59
57
  end
60
58
 
61
59
  test "!!n syntax ignores a blank caption" do
62
- given_govspeak "!!1", images: [Image.new(caption: ' ')] do
60
+ given_govspeak "!!1", images: [Image.new(caption: " ")] do
63
61
  assert_html_output(
64
- %{<figure class="image embedded">} +
65
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
66
- %{</figure>}
62
+ %(<figure class="image embedded">) +
63
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
64
+ %(</figure>),
67
65
  )
68
66
  end
69
67
  end
70
68
 
71
69
  test "¡¡n syntax adds image credit if given" do
72
- given_govspeak "!!1", images: [Image.new(credit: 'My Credit & so on')] do
70
+ given_govspeak "!!1", images: [Image.new(credit: "My Credit & so on")] do
73
71
  assert_html_output(
74
- %{<figure class="image embedded">} +
75
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
76
- %{<figcaption><p>Image credit: My Credit &amp; so on</p></figcaption>} +
77
- %{</figure>}
72
+ %(<figure class="image embedded">) +
73
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n) +
74
+ %(<figcaption><p>Image credit: My Credit &amp; so on</p></figcaption>) +
75
+ %(</figure>),
78
76
  )
79
77
  end
80
78
  end
81
79
 
82
80
  test "!!n syntax ignores a blank credit" do
83
- given_govspeak "!!1", images: [Image.new(credit: ' ')] do
81
+ given_govspeak "!!1", images: [Image.new(credit: " ")] do
84
82
  assert_html_output(
85
- %{<figure class="image embedded">} +
86
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
87
- %{</figure>}
83
+ %(<figure class="image embedded">) +
84
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
85
+ %(</figure>),
88
86
  )
89
87
  end
90
88
  end
91
89
 
92
90
  test "!!n syntax adds image caption and credit if given" do
93
- given_govspeak "!!1", images: [Image.new(caption: 'My Caption & so on', credit: 'My Credit & so on')] do
91
+ given_govspeak "!!1", images: [Image.new(caption: "My Caption & so on", credit: "My Credit & so on")] do
94
92
  assert_html_output(
95
- %{<figure class="image embedded">} +
96
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
97
- %{<figcaption>} +
98
- %{<p>My Caption &amp; so on</p>\n} +
99
- %{<p>Image credit: My Credit &amp; so on</p>} +
100
- %{</figcaption>} +
101
- %{</figure>}
93
+ %(<figure class="image embedded">) +
94
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n) +
95
+ %(<figcaption>) +
96
+ %(<p>My Caption &amp; so on</p>\n) +
97
+ %(<p>Image credit: My Credit &amp; so on</p>) +
98
+ %(</figcaption>) +
99
+ %(</figure>),
102
100
  )
103
101
  end
104
102
  end
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
-
3
- require 'test_helper'
4
- require 'govspeak_test_helper'
1
+ require "test_helper"
2
+ require "govspeak_test_helper"
5
3
 
6
4
  class GovspeakImagesTest < Minitest::Test
7
5
  include GovspeakTestHelper
@@ -16,80 +14,80 @@ class GovspeakImagesTest < Minitest::Test
16
14
  test "Image:image-id syntax renders an image in options[:images]" do
17
15
  given_govspeak "[Image:image-id]", images: [build_image] do
18
16
  assert_html_output(
19
- %{<figure class="image embedded">} +
20
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
21
- %{</figure>}
17
+ %(<figure class="image embedded">) +
18
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
19
+ %(</figure>),
22
20
  )
23
21
  end
24
22
  end
25
23
 
26
24
  test "Image:image-id syntax escapes alt text" do
27
- given_govspeak "[Image:image-id]", images: [build_image(alt_text: %{my alt '&"<>})] do
25
+ given_govspeak "[Image:image-id]", images: [build_image(alt_text: %(my alt '&"<>))] do
28
26
  assert_html_output(
29
- %{<figure class="image embedded">} +
30
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&amp;&quot;&lt;&gt;"></div>} +
31
- %{</figure>}
27
+ %(<figure class="image embedded">) +
28
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&amp;&quot;&lt;&gt;"></div>) +
29
+ %(</figure>),
32
30
  )
33
31
  end
34
32
  end
35
33
 
36
34
  test "Image:image-id syntax renders nothing if not found" do
37
35
  doc = Govspeak::Document.new("[Image:another-id]")
38
- assert_equal %{\n}, doc.to_html
36
+ assert_equal %(\n), doc.to_html
39
37
  end
40
38
 
41
39
  test "Image:image-id syntax adds image caption if given" do
42
- given_govspeak "[Image:image-id]", images: [build_image(caption: 'My Caption & so on')] do
40
+ given_govspeak "[Image:image-id]", images: [build_image(caption: "My Caption & so on")] do
43
41
  assert_html_output(
44
- %{<figure class="image embedded">} +
45
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
46
- %{<figcaption><p>My Caption &amp; so on</p></figcaption>} +
47
- %{</figure>}
42
+ %(<figure class="image embedded">) +
43
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n) +
44
+ %(<figcaption><p>My Caption &amp; so on</p></figcaption>) +
45
+ %(</figure>),
48
46
  )
49
47
  end
50
48
  end
51
49
 
52
50
  test "Image:image-id syntax ignores a blank caption" do
53
- given_govspeak "[Image:image-id]", images: [build_image(caption: ' ')] do
51
+ given_govspeak "[Image:image-id]", images: [build_image(caption: " ")] do
54
52
  assert_html_output(
55
- %{<figure class="image embedded">} +
56
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
57
- %{</figure>}
53
+ %(<figure class="image embedded">) +
54
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
55
+ %(</figure>),
58
56
  )
59
57
  end
60
58
  end
61
59
 
62
60
  test "Image:image-id syntax adds image credit if given" do
63
- given_govspeak "[Image:image-id]", images: [build_image(credit: 'My Credit & so on')] do
61
+ given_govspeak "[Image:image-id]", images: [build_image(credit: "My Credit & so on")] do
64
62
  assert_html_output(
65
- %{<figure class="image embedded">} +
66
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
67
- %{<figcaption><p>Image credit: My Credit &amp; so on</p></figcaption>} +
68
- %{</figure>}
63
+ %(<figure class="image embedded">) +
64
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n) +
65
+ %(<figcaption><p>Image credit: My Credit &amp; so on</p></figcaption>) +
66
+ %(</figure>),
69
67
  )
70
68
  end
71
69
  end
72
70
 
73
71
  test "Image:image-id syntax ignores a blank credit" do
74
- given_govspeak "[Image:image-id]", images: [build_image(credit: ' ')] do
72
+ given_govspeak "[Image:image-id]", images: [build_image(credit: " ")] do
75
73
  assert_html_output(
76
- %{<figure class="image embedded">} +
77
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
78
- %{</figure>}
74
+ %(<figure class="image embedded">) +
75
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
76
+ %(</figure>),
79
77
  )
80
78
  end
81
79
  end
82
80
 
83
81
  test "Image:image-id syntax adds image caption and credit if given" do
84
- given_govspeak "[Image:image-id]", images: [build_image(caption: 'My Caption & so on', credit: 'My Credit & so on')] do
82
+ given_govspeak "[Image:image-id]", images: [build_image(caption: "My Caption & so on", credit: "My Credit & so on")] do
85
83
  assert_html_output(
86
- %{<figure class="image embedded">} +
87
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
88
- %{<figcaption>} +
89
- %{<p>My Caption &amp; so on</p>\n} +
90
- %{<p>Image credit: My Credit &amp; so on</p>} +
91
- %{</figcaption>} +
92
- %{</figure>}
84
+ %(<figure class="image embedded">) +
85
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n) +
86
+ %(<figcaption>) +
87
+ %(<p>My Caption &amp; so on</p>\n) +
88
+ %(<p>Image credit: My Credit &amp; so on</p>) +
89
+ %(</figcaption>) +
90
+ %(</figure>),
93
91
  )
94
92
  end
95
93
  end
@@ -101,18 +99,18 @@ class GovspeakImagesTest < Minitest::Test
101
99
 
102
100
  given_govspeak "[Image:image-id]", images: [build_image] do
103
101
  assert_html_output(
104
- %{<figure class="image embedded">} +
105
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
106
- %{</figure>}
102
+ %(<figure class="image embedded">) +
103
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
104
+ %(</figure>),
107
105
  )
108
106
  end
109
107
 
110
108
  given_govspeak "[Image:image-id] some text", images: [build_image] do
111
109
  assert_html_output(
112
- %{<figure class="image embedded">} +
113
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
114
- %{</figure>\n} +
115
- %{<p>some text</p>}
110
+ %(<figure class="image embedded">) +
111
+ %(<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>) +
112
+ %(</figure>\n) +
113
+ %(<p>some text</p>),
116
114
  )
117
115
  end
118
116
  end
@@ -40,7 +40,7 @@ class GovspeakLinkExtractorTest < Minitest::Test
40
40
  end
41
41
 
42
42
  test "Links are extracted from the body" do
43
- expected_links = %w{http://www.example.com http://www.gov.com /cais-trwydded-yrru-dros-dro http://www.example.com/from/html}
43
+ expected_links = %w[http://www.example.com http://www.gov.com /cais-trwydded-yrru-dros-dro http://www.example.com/from/html]
44
44
  assert_equal expected_links, links
45
45
  end
46
46
 
@@ -1,6 +1,4 @@
1
- # encoding: UTF-8
2
-
3
- require 'test_helper'
1
+ require "test_helper"
4
2
 
5
3
  class GovspeakLinkTest < Minitest::Test
6
4
  test "embedded link with link provided" do
@@ -1,8 +1,8 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class GovspeakStructuredHeadersTest < Minitest::Test
4
4
  def document_body
5
- %{
5
+ %(
6
6
  ## Heading 1
7
7
 
8
8
  ## Heading 2
@@ -29,7 +29,7 @@ class GovspeakStructuredHeadersTest < Minitest::Test
29
29
 
30
30
  ## Heading 5
31
31
 
32
- }
32
+ )
33
33
  end
34
34
 
35
35
  def doc
@@ -90,14 +90,15 @@ class GovspeakStructuredHeadersTest < Minitest::Test
90
90
  text: "Sub sub heading 2.2.1",
91
91
  level: 4,
92
92
  id: "sub-sub-heading-221",
93
- headers: []
93
+ headers: [],
94
94
  },
95
95
  ],
96
96
  },
97
97
  {
98
98
  text: "Sub heading 2.3",
99
- level: 3, id: "sub-heading-23",
100
- headers: []
99
+ level: 3,
100
+ id: "sub-heading-23",
101
+ headers: [],
101
102
  },
102
103
  ],
103
104
  }
@@ -1,8 +1,8 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class GovspeakTableWithHeadersTest < Minitest::Test
4
4
  def expected_outcome
5
- %{
5
+ %(
6
6
  <table>
7
7
  <thead>
8
8
  <tr>
@@ -24,11 +24,11 @@ class GovspeakTableWithHeadersTest < Minitest::Test
24
24
  </tr>
25
25
  </tbody>
26
26
  </table>
27
- }
27
+ )
28
28
  end
29
29
 
30
30
  def expected_outcome_with_hashes_in_cell_contents
31
- %{
31
+ %(
32
32
  <table>
33
33
  <thead>
34
34
  <tr>
@@ -50,11 +50,11 @@ class GovspeakTableWithHeadersTest < Minitest::Test
50
50
  </tr>
51
51
  </tbody>
52
52
  </table>
53
- }
53
+ )
54
54
  end
55
55
 
56
56
  def expected_outcome_for_table_with_alignments
57
- %{
57
+ %(
58
58
  <table>
59
59
  <thead>
60
60
  <tr>
@@ -76,11 +76,11 @@ class GovspeakTableWithHeadersTest < Minitest::Test
76
76
  </tr>
77
77
  </tbody>
78
78
  </table>
79
- }
79
+ )
80
80
  end
81
81
 
82
82
  def expected_outcome_for_table_headers_in_the_wrong_place
83
- %{
83
+ %(
84
84
  <table>
85
85
  <thead>
86
86
  <tr>
@@ -102,11 +102,11 @@ class GovspeakTableWithHeadersTest < Minitest::Test
102
102
  </tr>
103
103
  </tbody>
104
104
  </table>
105
- }
105
+ )
106
106
  end
107
107
 
108
108
  def expected_outcome_for_table_with_blank_table_headers
109
- %{
109
+ %(
110
110
  <table>
111
111
  <thead>
112
112
  <tr>
@@ -128,52 +128,95 @@ class GovspeakTableWithHeadersTest < Minitest::Test
128
128
  </tr>
129
129
  </tbody>
130
130
  </table>
131
- }
131
+ )
132
+ end
133
+
134
+ def expected_outcome_for_table_headers_containing_links
135
+ %(
136
+ <table>
137
+ <thead>
138
+ <tr>
139
+ <td></td>
140
+ <th scope="col">Second Column</th>
141
+ <th scope="col">Third Column</th>
142
+ </tr>
143
+ </thead>
144
+ <tbody>
145
+ <tr>
146
+ <th scope="row">Link contained in header <a rel="external" href="http://google.com">link1</a>
147
+ </th>
148
+ <td>Cell</td>
149
+ <td>Cell</td>
150
+ </tr>
151
+ <tr>
152
+ <th scope="row">No link</th>
153
+ <td>Cell</td>
154
+ <td>Cell</td>
155
+ </tr>
156
+ <tr>
157
+ <th scope="row"><a rel="external" href="http://www.bbc.co.uk">Whole header is link</a>
158
+ </th>
159
+ <td>Cell</td>
160
+ <td>Cell</td>
161
+ </tr>
162
+ </tbody>
163
+ </table>
164
+ )
132
165
  end
133
166
 
134
167
  def document_body_with_hashes_for_all_headers
135
- @document_body_with_hashes_for_all_headers ||= Govspeak::Document.new(%{
168
+ @document_body_with_hashes_for_all_headers ||= Govspeak::Document.new(%(
136
169
  | |# Second Column |# Third Column |
137
170
  | --------------- | --------------- | ------------------- |
138
171
  |# First row | Cell | Cell |
139
172
  |# Second row | Cell | Cell |
140
- })
173
+ ))
141
174
  end
142
175
 
143
176
  def document_body_with_hashes_for_row_headers
144
- @document_body_with_hashes_for_row_headers ||= Govspeak::Document.new(%{
177
+ @document_body_with_hashes_for_row_headers ||= Govspeak::Document.new(%(
145
178
  | | Second Column | Third Column |
146
179
  | --------------- | --------------- | ------------------- |
147
180
  |# First row | Cell | Cell |
148
181
  |# Second row | Cell | Cell |
149
- })
182
+ ))
150
183
  end
151
184
 
152
185
  def document_body_with_alignments
153
- @document_body_with_alignments ||= Govspeak::Document.new(%{
186
+ @document_body_with_alignments ||= Govspeak::Document.new(%(
154
187
  | | Second Column | Third Column |
155
188
  | :-------------- | :-------------: | ------------------: |
156
189
  |# First row | Cell | Cell |
157
190
  |# Second row | Cell | Cell |
158
- })
191
+ ))
159
192
  end
160
193
 
161
194
  def document_body_with_table_headers_in_the_wrong_place
162
- @document_body_with_table_headers_in_the_wrong_place ||= Govspeak::Document.new(%{
195
+ @document_body_with_table_headers_in_the_wrong_place ||= Govspeak::Document.new(%(
163
196
  | | Second Column | Third Column |
164
197
  | --------------- | --------------- | ------------------- |
165
198
  |# First row |# Cell | Cell |
166
199
  |# Second row | Cell |# Cell |
167
- })
200
+ ))
168
201
  end
169
202
 
170
203
  def document_body_with_blank_table_headers
171
- @document_body_with_blank_table_headers ||= Govspeak::Document.new(%{
204
+ @document_body_with_blank_table_headers ||= Govspeak::Document.new(%(
172
205
  | | Second Column | Third Column |
173
206
  | --------------- | --------------- | ------------------- |
174
207
  |# | Cell | Cell |
175
208
  |# Second row | Cell | Cell |
176
- })
209
+ ))
210
+ end
211
+
212
+ def document_body_with_table_headers_containing_links
213
+ @document_body_with_table_headers_containing_links ||= Govspeak::Document.new(%(
214
+ | | Second Column | Third Column |
215
+ | ---------------------------------------------------- | --------------- | ------------------- |
216
+ |# Link contained in header [link1](http://google.com) | Cell | Cell |
217
+ |# No link | Cell | Cell |
218
+ |# [Whole header is link](http://www.bbc.co.uk) | Cell | Cell |
219
+ ))
177
220
  end
178
221
 
179
222
  test "Cells with |# are headers" do
@@ -192,6 +235,10 @@ class GovspeakTableWithHeadersTest < Minitest::Test
192
235
  assert_equal document_body_with_table_headers_in_the_wrong_place.to_html, expected_outcome_for_table_headers_in_the_wrong_place
193
236
  end
194
237
 
238
+ test "Table headers with a scope of row can have embedded links" do
239
+ assert_equal document_body_with_table_headers_containing_links.to_html, expected_outcome_for_table_headers_containing_links
240
+ end
241
+
195
242
  test "Table headers are not blank" do
196
243
  assert_equal document_body_with_blank_table_headers.to_html, expected_outcome_for_table_with_blank_table_headers
197
244
  end