govspeak 6.5.0 → 6.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -2
- data/README.md +6 -5
- data/Rakefile +7 -4
- data/lib/govspeak.rb +116 -116
- data/lib/govspeak/header_extractor.rb +1 -1
- data/lib/govspeak/html_sanitizer.rb +12 -9
- data/lib/govspeak/kramdown_overrides.rb +2 -2
- data/lib/govspeak/link_extractor.rb +6 -6
- data/lib/govspeak/post_processor.rb +34 -14
- data/lib/govspeak/presenters/attachment_presenter.rb +39 -39
- data/lib/govspeak/presenters/contact_presenter.rb +2 -2
- data/lib/govspeak/presenters/h_card_presenter.rb +3 -3
- data/lib/govspeak/presenters/image_presenter.rb +4 -4
- data/lib/govspeak/structured_header_extractor.rb +2 -2
- data/lib/govspeak/version.rb +1 -1
- data/lib/kramdown/parser/govuk.rb +6 -7
- data/test/blockquote_extra_quote_remover_test.rb +24 -26
- data/test/govspeak_attachment_link_test.rb +0 -2
- data/test/govspeak_attachment_test.rb +0 -2
- data/test/govspeak_attachments_image_test.rb +12 -14
- data/test/govspeak_attachments_inline_test.rb +22 -24
- data/test/govspeak_button_test.rb +29 -31
- data/test/govspeak_contacts_test.rb +29 -31
- data/test/govspeak_extract_contact_content_ids_test.rb +1 -3
- data/test/govspeak_images_bang_test.rb +37 -39
- data/test/govspeak_images_test.rb +43 -45
- data/test/govspeak_link_extractor_test.rb +1 -1
- data/test/govspeak_link_test.rb +1 -3
- data/test/govspeak_structured_headers_test.rb +7 -6
- data/test/govspeak_table_with_headers_test.rb +68 -21
- data/test/govspeak_test.rb +98 -101
- data/test/govspeak_test_helper.rb +1 -1
- data/test/html_sanitizer_test.rb +17 -9
- data/test/html_validator_test.rb +2 -2
- data/test/presenters/h_card_presenter_test.rb +39 -41
- data/test/test_helper.rb +12 -8
- metadata +52 -40
@@ -1,7 +1,5 @@
|
|
1
|
-
|
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
|
-
%
|
24
|
-
%
|
25
|
-
%
|
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: %
|
29
|
+
given_govspeak "!!1", images: [Image.new(alt_text: %(my alt '&"<>))] do
|
32
30
|
assert_html_output(
|
33
|
-
%
|
34
|
-
%
|
35
|
-
%
|
31
|
+
%(<figure class="image embedded">) +
|
32
|
+
%(<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&"<>"></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 %
|
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 %
|
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:
|
49
|
+
given_govspeak "!!1", images: [Image.new(caption: "My Caption & so on")] do
|
52
50
|
assert_html_output(
|
53
|
-
%
|
54
|
-
%
|
55
|
-
%
|
56
|
-
%
|
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 & 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:
|
60
|
+
given_govspeak "!!1", images: [Image.new(caption: " ")] do
|
63
61
|
assert_html_output(
|
64
|
-
%
|
65
|
-
%
|
66
|
-
%
|
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:
|
70
|
+
given_govspeak "!!1", images: [Image.new(credit: "My Credit & so on")] do
|
73
71
|
assert_html_output(
|
74
|
-
%
|
75
|
-
%
|
76
|
-
%
|
77
|
-
%
|
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 & 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:
|
81
|
+
given_govspeak "!!1", images: [Image.new(credit: " ")] do
|
84
82
|
assert_html_output(
|
85
|
-
%
|
86
|
-
%
|
87
|
-
%
|
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:
|
91
|
+
given_govspeak "!!1", images: [Image.new(caption: "My Caption & so on", credit: "My Credit & so on")] do
|
94
92
|
assert_html_output(
|
95
|
-
%
|
96
|
-
%
|
97
|
-
%
|
98
|
-
%
|
99
|
-
%
|
100
|
-
%
|
101
|
-
%
|
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 & so on</p>\n) +
|
97
|
+
%(<p>Image credit: My Credit & so on</p>) +
|
98
|
+
%(</figcaption>) +
|
99
|
+
%(</figure>),
|
102
100
|
)
|
103
101
|
end
|
104
102
|
end
|
@@ -1,7 +1,5 @@
|
|
1
|
-
|
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
|
-
%
|
20
|
-
%
|
21
|
-
%
|
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: %
|
25
|
+
given_govspeak "[Image:image-id]", images: [build_image(alt_text: %(my alt '&"<>))] do
|
28
26
|
assert_html_output(
|
29
|
-
%
|
30
|
-
%
|
31
|
-
%
|
27
|
+
%(<figure class="image embedded">) +
|
28
|
+
%(<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&"<>"></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 %
|
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:
|
40
|
+
given_govspeak "[Image:image-id]", images: [build_image(caption: "My Caption & so on")] do
|
43
41
|
assert_html_output(
|
44
|
-
%
|
45
|
-
%
|
46
|
-
%
|
47
|
-
%
|
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 & 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:
|
51
|
+
given_govspeak "[Image:image-id]", images: [build_image(caption: " ")] do
|
54
52
|
assert_html_output(
|
55
|
-
%
|
56
|
-
%
|
57
|
-
%
|
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:
|
61
|
+
given_govspeak "[Image:image-id]", images: [build_image(credit: "My Credit & so on")] do
|
64
62
|
assert_html_output(
|
65
|
-
%
|
66
|
-
%
|
67
|
-
%
|
68
|
-
%
|
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 & 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:
|
72
|
+
given_govspeak "[Image:image-id]", images: [build_image(credit: " ")] do
|
75
73
|
assert_html_output(
|
76
|
-
%
|
77
|
-
%
|
78
|
-
%
|
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:
|
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
|
-
%
|
87
|
-
%
|
88
|
-
%
|
89
|
-
%
|
90
|
-
%
|
91
|
-
%
|
92
|
-
%
|
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 & so on</p>\n) +
|
88
|
+
%(<p>Image credit: My Credit & 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
|
-
%
|
105
|
-
%
|
106
|
-
%
|
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
|
-
%
|
113
|
-
%
|
114
|
-
%
|
115
|
-
%
|
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
|
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
|
|
data/test/govspeak_link_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
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,
|
100
|
-
|
99
|
+
level: 3,
|
100
|
+
id: "sub-heading-23",
|
101
|
+
headers: [],
|
101
102
|
},
|
102
103
|
],
|
103
104
|
}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
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
|