govspeak 5.6.0 → 5.7.0

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.
@@ -344,59 +344,6 @@ class GovspeakAttachmentTest < Minitest::Test
344
344
  end
345
345
  end
346
346
 
347
- test "a full attachment rendering looks correct" do
348
- attachment = {
349
- id: 123,
350
- content_id: "2b4d92f3-f8cd-4284-aaaa-25b3a640d26c",
351
- title: "Attachment Title",
352
- url: "http://example.com/test.pdf",
353
- opendocument?: true,
354
- order_url: "http://example.com/order",
355
- price: 12.3,
356
- isbn: "isbn-123",
357
- unnumbered_command_paper?: true,
358
- }
359
- rendered = render_govspeak(
360
- "[embed:attachments:2b4d92f3-f8cd-4284-aaaa-25b3a640d26c]",
361
- [build_attachment(attachment)]
362
- )
363
- expected_html_output = %{
364
- <section class="attachment embedded">
365
- <div class="attachment-thumb">
366
- <a href="http://example.com/test.pdf" aria-hidden="true" class="embedded"><img src="/images/pub-cover.png" alt="Pub cover"></a>
367
- </div>
368
- <div class="attachment-details">
369
- <h2 class="title">
370
- <a href="http://example.com/test.pdf" aria-describedby="attachment-123-accessibility-help">Attachment Title</a>
371
- </h2>
372
- <p class="metadata">
373
- <span class="references">Ref: ISBN <span class="isbn">isbn-123</span></span>
374
- <span class="unnumbered-paper">
375
- Unnumbered command paper
376
- </span>
377
- </p>
378
- <p>
379
- <a href="http://example.com/order" class="order_url" title="Order a copy of the publication">Order a copy</a>(<span class="price">£12.30</span>)
380
- </p>
381
- <p class="opendocument-help">
382
- This file is in an <a rel="external" href="https://en.wikipedia.org/wiki/OpenDocument_software">OpenDocument</a> format
383
- </p>
384
- <div data-module="toggle" class="accessibility-warning" id="attachment-123-accessibility-help">
385
- <h2>This file may not be suitable for users of assistive technology.
386
- <a class="toggler" href="#attachment-123-accessibility-request" data-controls="attachment-123-accessibility-request" data-expanded="false">Request an accessible format.</a>
387
- </h2>
388
- <p id="attachment-123-accessibility-request" class="js-hidden">
389
- If you use assistive technology (eg a screen reader) and need a
390
- version of this document in a more accessible format, please email <a href="mailto:govuk-feedback@digital.cabinet-office.gov.uk?subject=Request%20for%20%27Attachment%20Title%27%20in%20an%20alternative%20format&amp;body=Details%20of%20document%20required%3A%0A%0A%20%20Title%3A%20Attachment%20Title%0A%20%20ISBN%3A%20isbn-123%0A%0APlease%20tell%20us%3A%0A%0A%20%201.%20What%20makes%20this%20format%20unsuitable%20for%20you%3F%0A%20%202.%20What%20format%20you%20would%20prefer%3F%0A">govuk-feedback@digital.cabinet-office.gov.uk</a>.
391
- Please tell us what format you need. It will help us if you say what assistive technology you use.
392
- </p>
393
- </div>
394
- </div>
395
- </section>
396
- }
397
- assert_equal(compress_html(expected_html_output), compress_html(rendered))
398
- end
399
-
400
347
  test "attachment that isn't provided" do
401
348
  govspeak = "[embed:attachments:906ac8b7-850d-45c6-98e0-9525c680f891]"
402
349
  rendered = Govspeak::Document.new(govspeak).to_html
@@ -3,38 +3,66 @@
3
3
  require 'test_helper'
4
4
 
5
5
  class GovspeakContactsTest < Minitest::Test
6
-
7
- def build_contact(attrs={})
6
+ def build_contact(attrs = {})
8
7
  {
9
- id: attrs.fetch(:id, 123456),
10
8
  content_id: attrs.fetch(:content_id, "4f3383e4-48a2-4461-a41d-f85ea8b89ba0"),
11
9
  title: attrs.fetch(:title, "Government Digital Service"),
12
- recipient: attrs.fetch(:recipient, ""),
13
- street_address: attrs.fetch(:street_address, "125 Kingsway"),
14
- postal_code: attrs.fetch(:postal_code, "WC2B 6NH"),
15
- locality: attrs.fetch(:locality, "Holborn"),
16
- region: attrs.fetch(:region, "London"),
17
- country_code: attrs.fetch(:country_code, "gb"),
18
- email: attrs.fetch(:email, "people@digital.cabinet-office.gov.uk"),
19
- contact_form_url: attrs.fetch(:contact_form_url, ""),
20
- contact_numbers: attrs.fetch(:contact_numbers,
21
- [{ label: "helpdesk", number: "+4412345 67890" }]),
22
- comments: attrs.fetch(:comments, ""),
23
- worldwide_organisation_path: attrs.fetch(:worldwide_organisation_path, nil),
10
+ description: attrs.fetch(:description, ""),
11
+ details: {
12
+ post_addresses: attrs.fetch(
13
+ :post_addresses,
14
+ [
15
+ {
16
+ title: "",
17
+ street_address: "125 Kingsway",
18
+ locality: "Holborn",
19
+ region: "London",
20
+ postal_code: "WC2B 6NH",
21
+ world_location: "United Kingdom",
22
+ }
23
+ ]
24
+ ),
25
+ email_addresses: attrs.fetch(
26
+ :email_addresses,
27
+ [
28
+ {
29
+ title: "",
30
+ email: "people@digital.cabinet-office.gov.uk",
31
+ }
32
+ ]
33
+ ),
34
+ phone_numbers: attrs.fetch(
35
+ :phone_numbers,
36
+ [
37
+ {
38
+ title: "helpdesk",
39
+ number: "+4412345 67890",
40
+ }
41
+ ]
42
+ ),
43
+ contact_form_links: attrs.fetch(
44
+ :contact_form_links,
45
+ [
46
+ {
47
+ link: "https://www.gov.uk/contact"
48
+ }
49
+ ]
50
+ )
51
+ }
24
52
  }
25
53
  end
26
54
 
27
55
  def compress_html(html)
28
- html.gsub(/[\n\r]+[\s]*/,'')
56
+ html.gsub(/[\n\r]+[\s]*/, '')
29
57
  end
30
58
 
31
59
  test "contact is rendered when present in options[:contacts]" do
32
60
  contact = build_contact
33
61
  govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
34
62
 
35
- rendered = Govspeak::Document.new(govspeak, { contacts: [contact] }).to_html
63
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
36
64
  expected_html_output = %{
37
- <div id="contact_123456" class="contact postal-address">
65
+ <div id="contact_4f3383e4-48a2-4461-a41d-f85ea8b89ba0" class="contact postal-address">
38
66
  <div class="content">
39
67
  <h3>Government Digital Service</h3>
40
68
  <div class="vcard contact-inner">
@@ -49,6 +77,10 @@ class GovspeakContactsTest < Minitest::Test
49
77
  <span class="type">Email</span>
50
78
  <a href="mailto:people@digital.cabinet-office.gov.uk" class="email">people@digital.cabinet-office.gov.uk</a>
51
79
  </p>
80
+ <p class="contact_form_url">
81
+ <span class="type">Contact form</span>
82
+ <a href="https://www.gov.uk/contact">https://www.gov.uk/con...</a>
83
+ </p>
52
84
  <p class="tel">
53
85
  <span class="type">helpdesk</span>
54
86
  +4412345 67890
@@ -65,27 +97,16 @@ class GovspeakContactsTest < Minitest::Test
65
97
  test "no contact is rendered when contact not present in options[:contacts]" do
66
98
  contact = build_contact(content_id: "19f06142-1b4a-47ce-b257-964badd0a5e2")
67
99
  govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
68
- rendered = Govspeak::Document.new(govspeak, { contacts: [contact]}).to_html
69
- assert_match("", rendered)
70
- end
71
-
72
- test "no contact is rendered when no contacts are supplied" do
73
- rendered = Govspeak::Document.new("[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]").to_html
100
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
74
101
  assert_match("", rendered)
75
102
  end
76
103
 
77
104
  test "contact with no postal address omits the address info" do
78
- contact = build_contact(
79
- recipient: nil,
80
- street_address: nil,
81
- locality: nil,
82
- region: nil,
83
- postal_code: nil,
84
- )
105
+ contact = build_contact(post_addresses: [])
85
106
  govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
86
- rendered = Govspeak::Document.new(govspeak, { contacts: [contact] }).to_html
107
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
87
108
  expected_html_output = %{
88
- <div id="contact_123456" class="contact">
109
+ <div id="contact_4f3383e4-48a2-4461-a41d-f85ea8b89ba0" class="contact">
89
110
  <div class="content">
90
111
  <h3>Government Digital Service</h3>
91
112
  <div class="vcard contact-inner">
@@ -94,6 +115,10 @@ class GovspeakContactsTest < Minitest::Test
94
115
  <span class="type">Email</span>
95
116
  <a href="mailto:people@digital.cabinet-office.gov.uk" class="email">people@digital.cabinet-office.gov.uk</a>
96
117
  </p>
118
+ <p class="contact_form_url">
119
+ <span class="type">Contact form</span>
120
+ <a href="https://www.gov.uk/contact">https://www.gov.uk/con...</a>
121
+ </p>
97
122
  <p class="tel">
98
123
  <span class="type">helpdesk</span>
99
124
  +4412345 67890
@@ -106,11 +131,73 @@ class GovspeakContactsTest < Minitest::Test
106
131
  assert_equal(compress_html(expected_html_output), compress_html(rendered))
107
132
  end
108
133
 
109
- test "worldwide office contact renders worldwide organisation link" do
110
- contact = build_contact(worldwide_organisation_path: "/government/world/organisations/british-antarctic-territory")
134
+ test "contact with United Kingdom country address doesn't show the country" do
135
+ contact = build_contact(post_addresses: [
136
+ {
137
+ street_address: "125 Kingsway",
138
+ country_name: "United Kingdom",
139
+ }
140
+ ])
141
+ govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
142
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
143
+ expected = %{
144
+ <p class="adr">
145
+ <span class="street-address">125 Kingsway</span>
146
+ </p>
147
+ }
148
+ assert_match(compress_html(expected), compress_html(rendered))
149
+ end
150
+
151
+ test "contact with an empty postal address is not rendered" do
152
+ contact = build_contact(post_addresses: [
153
+ {
154
+ street_address: "",
155
+ }
156
+ ])
157
+ govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
158
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
159
+ refute_match(%{<p class="adr">}, compress_html(rendered))
160
+ end
161
+
162
+ test "contact with an empty email address is not rendered" do
163
+ contact = build_contact(email_addresses: [
164
+ {
165
+ email: "",
166
+ }
167
+ ])
168
+ govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
169
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
170
+ refute_match(%{<p class="email">}, compress_html(rendered))
171
+ end
172
+
173
+ test "contact with an empty contact form is not rendered" do
174
+ contact = build_contact(contact_form_links: [
175
+ {
176
+ link: "",
177
+ }
178
+ ])
179
+ govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
180
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
181
+ refute_match(%{<p class="contact_form_url">}, compress_html(rendered))
182
+ end
183
+
184
+ test "contact with an empty phone number is not rendered" do
185
+ contact = build_contact(phone_numbers: [
186
+ {
187
+ number: "",
188
+ }
189
+ ])
190
+ govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
191
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
192
+ refute_match(%{<p class="tel">}, compress_html(rendered))
193
+ end
194
+
195
+ test "it auto links text in the description" do
196
+ contact = build_contact(description: "My description about https://www.gov.uk")
197
+
111
198
  govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
112
- rendered = Govspeak::Document.new(govspeak, { contacts: [contact] }).to_html
113
- organisation_link = %Q(<a href="/government/world/organisations/british-antarctic-territory">Access and opening times</a>)
114
- assert_match(organisation_link, rendered)
199
+ rendered = Govspeak::Document.new(govspeak, contacts: [contact]).to_html
200
+ assert_match(%{<p class="comments">My description about <a href="https://www.gov.uk">https://www.gov.uk</a></p>},
201
+ compress_html(rendered))
115
202
  end
116
203
  end
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'test_helper'
4
+
5
+ class GovspeakExtractContactContentIdsTest < Minitest::Test
6
+ test "contact content ids can be extracted from govspeak" do
7
+ content_id1 = SecureRandom.uuid
8
+ content_id2 = SecureRandom.uuid
9
+ govspeak = "Some text with a contact\n [Contact:#{content_id1}]\n\n[Contact:#{content_id2}]"
10
+
11
+ assert_equal(Govspeak::Document.new(govspeak).extract_contact_content_ids, [content_id1, content_id2])
12
+ end
13
+
14
+ test "only extracts contact content ids that are UUIDs" do
15
+ govspeak = "[Contact:12345]"
16
+
17
+ refute_equal(
18
+ Govspeak::Document.new(govspeak).extract_contact_content_ids,
19
+ %w[12345],
20
+ )
21
+ end
22
+
23
+ test "same contact repeated multiple times only yields a single result" do
24
+ content_id = SecureRandom.uuid
25
+ govspeak = "[Contact:#{content_id}]\n[Contact:#{content_id}][Contact:#{content_id}]"
26
+
27
+ assert_equal(Govspeak::Document.new(govspeak).extract_contact_content_ids, [content_id])
28
+ end
29
+ end
@@ -45,7 +45,7 @@ class GovspeakLinkExtractorTest < Minitest::Test
45
45
  end
46
46
 
47
47
  test "Other content is not extracted from the body" do
48
- refute_includes ["Heading"], links
48
+ refute_includes %w[Heading], links
49
49
  end
50
50
 
51
51
  test "Links are not extracted if they begin with #" do
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class GovspeakStructuredHeadersTest < Minitest::Test
4
-
5
4
  def document_body
6
5
  %{
7
6
  ## Heading 1
@@ -46,7 +45,7 @@ class GovspeakStructuredHeadersTest < Minitest::Test
46
45
  end
47
46
 
48
47
  test "h2s are extracted as top level headings" do
49
- expected_headings = ["Heading 1", "Heading 2", "Heading 3", "Heading 4", "Heading 5"]
48
+ expected_headings = ["Heading 1", "Heading 2", "Heading 3", "Heading 4", "Heading 5"]
50
49
 
51
50
  assert_equal expected_headings, structured_headers.map(&:text)
52
51
  end
@@ -72,33 +71,33 @@ class GovspeakStructuredHeadersTest < Minitest::Test
72
71
  serialized_headers = structured_headers[1].to_h
73
72
 
74
73
  expected_serialized_headers = {
75
- :text => "Heading 2",
76
- :level => 2,
77
- :id => "heading-2",
78
- :headers => [
74
+ text: "Heading 2",
75
+ level: 2,
76
+ id: "heading-2",
77
+ headers: [
79
78
  {
80
- :text => "Sub heading 2.1",
81
- :level => 3,
82
- :id => "sub-heading-21",
83
- :headers => [],
79
+ text: "Sub heading 2.1",
80
+ level: 3,
81
+ id: "sub-heading-21",
82
+ headers: [],
84
83
  },
85
84
  {
86
- :text => "Sub heading 2.2",
87
- :level => 3,
88
- :id => "sub-heading-22",
89
- :headers => [
85
+ text: "Sub heading 2.2",
86
+ level: 3,
87
+ id: "sub-heading-22",
88
+ headers: [
90
89
  {
91
- :text => "Sub sub heading 2.2.1",
92
- :level => 4,
93
- :id => "sub-sub-heading-221",
94
- :headers => []
90
+ text: "Sub sub heading 2.2.1",
91
+ level: 4,
92
+ id: "sub-sub-heading-221",
93
+ headers: []
95
94
  },
96
95
  ],
97
96
  },
98
97
  {
99
- :text => "Sub heading 2.3",
100
- :level => 3, :id=>"sub-heading-23",
101
- :headers => []
98
+ text: "Sub heading 2.3",
99
+ level: 3, id: "sub-heading-23",
100
+ headers: []
102
101
  },
103
102
  ],
104
103
  }
@@ -9,27 +9,27 @@ class GovspeakTest < Minitest::Test
9
9
  include GovspeakTestHelper
10
10
 
11
11
  test "simple smoke-test" do
12
- rendered = Govspeak::Document.new("*this is markdown*").to_html
12
+ rendered = Govspeak::Document.new("*this is markdown*").to_html
13
13
  assert_equal "<p><em>this is markdown</em></p>\n", rendered
14
14
  end
15
15
 
16
16
  test "simple smoke-test for simplified API" do
17
- rendered = Govspeak::Document.to_html("*this is markdown*")
17
+ rendered = Govspeak::Document.to_html("*this is markdown*")
18
18
  assert_equal "<p><em>this is markdown</em></p>\n", rendered
19
19
  end
20
20
 
21
21
  test "highlight-answer block extension" do
22
- rendered = Govspeak::Document.new("this \n{::highlight-answer}Lead in to *BIG TEXT*\n{:/highlight-answer}").to_html
23
- assert_equal %Q{<p>this</p>\n\n<div class="highlight-answer">\n<p>Lead in to <em>BIG TEXT</em></p>\n</div>\n}, rendered
22
+ rendered = Govspeak::Document.new("this \n{::highlight-answer}Lead in to *BIG TEXT*\n{:/highlight-answer}").to_html
23
+ assert_equal %{<p>this</p>\n\n<div class="highlight-answer">\n<p>Lead in to <em>BIG TEXT</em></p>\n</div>\n}, rendered
24
24
  end
25
25
 
26
26
  test "stat-headline block extension" do
27
- rendered = Govspeak::Document.new("this \n{stat-headline}*13.8bn* Age of the universe in years{/stat-headline}").to_html
28
- assert_equal %Q{<p>this</p>\n\n<aside class="stat-headline">\n<p><em>13.8bn</em> Age of the universe in years</p>\n</aside>\n}, rendered
27
+ rendered = Govspeak::Document.new("this \n{stat-headline}*13.8bn* Age of the universe in years{/stat-headline}").to_html
28
+ assert_equal %{<p>this</p>\n\n<aside class="stat-headline">\n<p><em>13.8bn</em> Age of the universe in years</p>\n</aside>\n}, rendered
29
29
  end
30
30
 
31
31
  test "extracts headers with text, level and generated id" do
32
- document = Govspeak::Document.new %{
32
+ document = Govspeak::Document.new %{
33
33
  # Big title
34
34
 
35
35
  ### Small subtitle
@@ -44,7 +44,7 @@ class GovspeakTest < Minitest::Test
44
44
  end
45
45
 
46
46
  test "extracts different ids for duplicate headers" do
47
- document = Govspeak::Document.new("## Duplicate header\n\n## Duplicate header")
47
+ document = Govspeak::Document.new("## Duplicate header\n\n## Duplicate header")
48
48
  assert_equal [
49
49
  Govspeak::Header.new('Duplicate header', 2, 'duplicate-header'),
50
50
  Govspeak::Header.new('Duplicate header', 2, 'duplicate-header-1')
@@ -52,7 +52,7 @@ class GovspeakTest < Minitest::Test
52
52
  end
53
53
 
54
54
  test "extracts headers when nested inside blocks" do
55
- document = Govspeak::Document.new %{
55
+ document = Govspeak::Document.new %{
56
56
  # First title
57
57
 
58
58
  <div markdown="1">
@@ -77,7 +77,7 @@ class GovspeakTest < Minitest::Test
77
77
  end
78
78
 
79
79
  test "extracts headers with explicitly specified ids" do
80
- document = Govspeak::Document.new %{
80
+ document = Govspeak::Document.new %{
81
81
  # First title
82
82
 
83
83
  ## Second title {#special}
@@ -105,23 +105,23 @@ Teston
105
105
  end
106
106
 
107
107
  test "should convert barchart" do
108
- input = <<-END
109
- |col|
110
- |---|
111
- |val|
112
- {barchart}
113
- END
108
+ input = <<~GOVSPEAK
109
+ |col|
110
+ |---|
111
+ |val|
112
+ {barchart}
113
+ GOVSPEAK
114
114
  html = Govspeak::Document.new(input).to_html
115
115
  assert_equal %{<table class=\"js-barchart-table mc-auto-outdent\">\n <thead>\n <tr>\n <th>col</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>val</td>\n </tr>\n </tbody>\n</table>\n}, html
116
116
  end
117
117
 
118
118
  test "should convert barchart with stacked compact and negative" do
119
- input = <<-END
120
- |col|
121
- |---|
122
- |val|
123
- {barchart stacked compact negative}
124
- END
119
+ input = <<~GOVSPEAK
120
+ |col|
121
+ |---|
122
+ |val|
123
+ {barchart stacked compact negative}
124
+ GOVSPEAK
125
125
  html = Govspeak::Document.new(input).to_html
126
126
  assert_equal %{<table class=\"js-barchart-table mc-stacked compact mc-negative mc-auto-outdent\">\n <thead>\n <tr>\n <th>col</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>val</td>\n </tr>\n </tbody>\n</table>\n}, html
127
127
  end
@@ -331,17 +331,17 @@ Teston
331
331
  test "should treat a mailto as internal" do
332
332
  html = Govspeak::Document.new("[link](mailto:a@b.com)").to_html
333
333
  refute html.include?('rel="external"')
334
- assert_equal %Q{<p><a href="mailto:a@b.com">link</a></p>\n}, deobfuscate_mailto(html)
334
+ assert_equal %{<p><a href="mailto:a@b.com">link</a></p>\n}, deobfuscate_mailto(html)
335
335
  end
336
336
 
337
337
  test "permits mailto:// URI" do
338
338
  html = Govspeak::Document.new("[link](mailto://a@b.com)").to_html
339
- assert_equal %Q{<p><a rel="external" href="mailto://a@b.com">link</a></p>\n}, deobfuscate_mailto(html)
339
+ assert_equal %{<p><a rel="external" href="mailto://a@b.com">link</a></p>\n}, deobfuscate_mailto(html)
340
340
  end
341
341
 
342
342
  test "permits dud mailto: URI" do
343
343
  html = Govspeak::Document.new("[link](mailto:)").to_html
344
- assert_equal %Q{<p><a href="mailto:">link</a></p>\n}, deobfuscate_mailto(html)
344
+ assert_equal %{<p><a href="mailto:">link</a></p>\n}, deobfuscate_mailto(html)
345
345
  end
346
346
 
347
347
  test "permits trailing whitespace in an URI" do
@@ -420,11 +420,12 @@ Teston
420
420
  assert_text_output "Click here to start the tool"
421
421
  end
422
422
 
423
- test_given_govspeak "Here is some text
423
+ test_given_govspeak "
424
+ Here is some text
424
425
 
425
- $CTA
426
- Click here to start the tool
427
- $CTA
426
+ $CTA
427
+ Click here to start the tool
428
+ $CTA
428
429
  " do
429
430
  assert_html_output %{
430
431
  <p>Here is some text</p>
@@ -639,17 +640,17 @@ $CTA
639
640
  %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
640
641
  %{</figure>}
641
642
  )
643
+ end
642
644
  end
643
- end
644
645
 
645
- test "alt text of referenced images is escaped" do
646
- images = [OpenStruct.new(alt_text: %Q{my alt '&"<>}, url: "http://example.com/image.jpg")]
647
- given_govspeak "!!1", images do
648
- assert_html_output(
649
- %{<figure class="image embedded">} +
650
- %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&amp;&quot;&lt;&gt;"></div>} +
651
- %{</figure>}
652
- )
646
+ test "alt text of referenced images is escaped" do
647
+ images = [OpenStruct.new(alt_text: %{my alt '&"<>}, url: "http://example.com/image.jpg")]
648
+ given_govspeak "!!1", images do
649
+ assert_html_output(
650
+ %{<figure class="image embedded">} +
651
+ %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt '&amp;&quot;&lt;&gt;"></div>} +
652
+ %{</figure>}
653
+ )
653
654
  end
654
655
  end
655
656
 
@@ -657,7 +658,7 @@ test "alt text of referenced images is escaped" do
657
658
  doc = Govspeak::Document.new("!!1")
658
659
  doc.images = []
659
660
 
660
- assert_equal %Q{\n}, doc.to_html
661
+ assert_equal %{\n}, doc.to_html
661
662
  end
662
663
 
663
664
  test "adds image caption if given" do
@@ -838,7 +839,7 @@ $PriorityList:1
838
839
  end
839
840
 
840
841
  test "should remove quotes surrounding a blockquote" do
841
- govspeak = %Q{
842
+ govspeak = %{
842
843
  He said:
843
844
 
844
845
  > "I'm not sure what you mean!"