govspeak 4.0.0 → 5.0.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.
@@ -1,13 +1,11 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'test_helper'
4
- require 'ostruct'
5
4
 
6
5
  class GovspeakContactsTest < Minitest::Test
7
6
 
8
7
  def build_contact(attrs={})
9
- OpenStruct.new(
10
- has_postal_address?: attrs.fetch(:has_postal_address?, true),
8
+ {
11
9
  id: attrs.fetch(:id, 123456),
12
10
  content_id: attrs.fetch(:content_id, "4f3383e4-48a2-4461-a41d-f85ea8b89ba0"),
13
11
  title: attrs.fetch(:title, "Government Digital Service"),
@@ -20,10 +18,10 @@ class GovspeakContactsTest < Minitest::Test
20
18
  email: attrs.fetch(:email, "people@digital.cabinet-office.gov.uk"),
21
19
  contact_form_url: attrs.fetch(:contact_form_url, ""),
22
20
  contact_numbers: attrs.fetch(:contact_numbers,
23
- [OpenStruct.new(label: "helpdesk", number: "+4412345 67890")]),
21
+ [{ label: "helpdesk", number: "+4412345 67890" }]),
24
22
  comments: attrs.fetch(:comments, ""),
25
23
  worldwide_organisation_path: attrs.fetch(:worldwide_organisation_path, nil),
26
- )
24
+ }
27
25
  end
28
26
 
29
27
  def compress_html(html)
@@ -77,7 +75,13 @@ class GovspeakContactsTest < Minitest::Test
77
75
  end
78
76
 
79
77
  test "contact with no postal address omits the address info" do
80
- contact = build_contact(has_postal_address?: false)
78
+ contact = build_contact(
79
+ recipient: nil,
80
+ street_address: nil,
81
+ locality: nil,
82
+ region: nil,
83
+ postal_code: nil,
84
+ )
81
85
  govspeak = "[Contact:4f3383e4-48a2-4461-a41d-f85ea8b89ba0]"
82
86
  rendered = Govspeak::Document.new(govspeak, { contacts: [contact] }).to_html
83
87
  expected_html_output = %{
@@ -0,0 +1,45 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'test_helper'
4
+
5
+ class GovspeakLinkTest < Minitest::Test
6
+ test "embedded link with link provided" do
7
+ link = {
8
+ content_id: "5572fee5-f38f-4641-8ffa-64fed9230ad4",
9
+ url: "https://www.example.com/",
10
+ title: "Example website"
11
+ }
12
+ govspeak = "[embed:link:5572fee5-f38f-4641-8ffa-64fed9230ad4]"
13
+ rendered = Govspeak::Document.new(govspeak, links: link).to_html
14
+ expected = %r{<a href="https://www.example.com/">Example website</a>}
15
+ assert_match(expected, rendered)
16
+ end
17
+
18
+ test "embedded link with markdown title" do
19
+ link = {
20
+ content_id: "5572fee5-f38f-4641-8ffa-64fed9230ad4",
21
+ url: "https://www.example.com/",
22
+ title: "**Example website**"
23
+ }
24
+ govspeak = "[embed:link:5572fee5-f38f-4641-8ffa-64fed9230ad4]"
25
+ rendered = Govspeak::Document.new(govspeak, links: link).to_html
26
+ expected = %r{<a href="https://www.example.com/"><strong>Example website</strong></a>}
27
+ assert_match(expected, rendered)
28
+ end
29
+
30
+ test "embedded link with url not provided" do
31
+ link = {
32
+ content_id: "e510f1c1-4862-4333-889c-8d3acd443fbf",
33
+ title: "Example website",
34
+ }
35
+ govspeak = "[embed:link:e510f1c1-4862-4333-889c-8d3acd443fbf]"
36
+ rendered = Govspeak::Document.new(govspeak, links: link).to_html
37
+ assert_match("Example website", rendered)
38
+ end
39
+
40
+ test "embedded link without link object" do
41
+ govspeak = "[embed:link:0726637c-8c66-47ad-834a-d815cbf51e0e]"
42
+ rendered = Govspeak::Document.new(govspeak).to_html
43
+ assert_match("", rendered)
44
+ end
45
+ end
@@ -634,22 +634,22 @@ $CTA
634
634
  test "can reference attached images using !!n" do
635
635
  images = [OpenStruct.new(alt_text: 'my alt', url: "http://example.com/image.jpg")]
636
636
  given_govspeak "!!1", images do
637
- assert_html_output %Q{
638
- <figure class="image embedded">
639
- <div class="img"><img alt="my alt" src="http://example.com/image.jpg"></div>
640
- </figure>
641
- }
637
+ assert_html_output(
638
+ %{<figure class="image embedded">} +
639
+ %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
640
+ %{</figure>}
641
+ )
642
642
  end
643
643
  end
644
644
 
645
645
  test "alt text of referenced images is escaped" do
646
646
  images = [OpenStruct.new(alt_text: %Q{my alt '&"<>}, url: "http://example.com/image.jpg")]
647
647
  given_govspeak "!!1", images do
648
- assert_html_output %Q{
649
- <figure class="image embedded">
650
- <div class="img"><img alt="my alt '&amp;&quot;&lt;&gt;" src="http://example.com/image.jpg"></div>
651
- </figure>
652
- }
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
+ )
653
653
  end
654
654
  end
655
655
 
@@ -663,23 +663,23 @@ test "alt text of referenced images is escaped" do
663
663
  test "adds image caption if given" do
664
664
  images = [OpenStruct.new(alt_text: "my alt", url: "http://example.com/image.jpg", caption: 'My Caption & so on')]
665
665
  given_govspeak "!!1", images do
666
- assert_html_output %Q{
667
- <figure class="image embedded">
668
- <div class="img"><img alt="my alt" src="http://example.com/image.jpg"></div>
669
- <figcaption>My Caption &amp; so on</figcaption>
670
- </figure>
671
- }
666
+ assert_html_output(
667
+ %{<figure class="image embedded">} +
668
+ %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>\n} +
669
+ %{<figcaption>My Caption &amp; so on</figcaption>} +
670
+ %{</figure>}
671
+ )
672
672
  end
673
673
  end
674
674
 
675
675
  test "ignores a blank caption" do
676
676
  images = [OpenStruct.new(alt_text: "my alt", url: "http://example.com/image.jpg", caption: ' ')]
677
677
  given_govspeak "!!1", images do
678
- assert_html_output %Q{
679
- <figure class="image embedded">
680
- <div class="img"><img alt="my alt" src="http://example.com/image.jpg"></div>
681
- </figure>
682
- }
678
+ assert_html_output(
679
+ %{<figure class="image embedded">} +
680
+ %{<div class="img"><img src="http://example.com/image.jpg" alt="my alt"></div>} +
681
+ %{</figure>}
682
+ )
683
683
  end
684
684
  end
685
685
 
@@ -874,73 +874,4 @@ Or so we thought.}
874
874
  |
875
875
  end
876
876
  end
877
-
878
- test "inline attachment" do
879
- attachment = OpenStruct.new(
880
- content_id: "2b4d92f3-f8cd-4284-aaaa-25b3a640d26c",
881
- id: 456,
882
- )
883
- govspeak = "[embed:attachments:inline:2b4d92f3-f8cd-4284-aaaa-25b3a640d26c]"
884
- rendered = Govspeak::Document.new(govspeak, {attachments: attachment}).to_html
885
- assert_match(/<span id=\"attachment_456\" class=\"attachment-inline\">/, rendered)
886
- end
887
-
888
- test "attachment" do
889
- attachment = OpenStruct.new(
890
- url: "www.test.com",
891
- content_id: "2b4d92f3-f8cd-4284-aaaa-25b3a640d26c",
892
- id: 123,
893
- opendocument?: true,
894
- order_url: "www.test.com",
895
- price: 12.3,
896
- csv?: true,
897
- unnumbered_command_paper?: true,
898
- isbn: 'isbn-123',
899
- )
900
- govspeak = "[embed:attachments:2b4d92f3-f8cd-4284-aaaa-25b3a640d26c]"
901
- rendered = Govspeak::Document.new(govspeak, {attachments: attachment}).to_html
902
- assert_match(/<section class=\"attachment embedded\">/, rendered)
903
- assert_match(/<div class=\"attachment-thumb\">/, rendered)
904
- assert_match(/attachment-123-accessibility-help/, rendered)
905
- assert_match(/If you use assistive technology/, rendered)
906
- assert_match(/<p class=\"opendocument-help\">/, rendered)
907
- assert_match(/<span class=\"price\">£12.30/, rendered)
908
- assert_match(/<span class=\"preview\">/, rendered)
909
- assert_match(/<span class=\"unnumbered-paper\">/, rendered)
910
- assert_match(/<span class=\"references\">/, rendered)
911
- end
912
-
913
- test "attachment that isn't provided" do
914
- govspeak = "[embed:attachments:906ac8b7-850d-45c6-98e0-9525c680f891]"
915
- rendered = Govspeak::Document.new(govspeak).to_html
916
- assert_match("", rendered)
917
- end
918
-
919
- test "embedded link with link provided" do
920
- link = OpenStruct.new(
921
- content_id: "5572fee5-f38f-4641-8ffa-64fed9230ad4",
922
- url: "https://www.example.com/",
923
- title: "Example website"
924
- )
925
- govspeak = "[embed:link:5572fee5-f38f-4641-8ffa-64fed9230ad4]"
926
- rendered = Govspeak::Document.new(govspeak, {links: link}).to_html
927
- expected = %r{<a href="https://www.example.com/">Example website</a>}
928
- assert_match(expected, rendered)
929
- end
930
-
931
- test "embedded link with link not provided" do
932
- link = OpenStruct.new(
933
- content_id: "e510f1c1-4862-4333-889c-8d3acd443fbf",
934
- title: "Example website",
935
- )
936
- govspeak = "[embed:link:e510f1c1-4862-4333-889c-8d3acd443fbf]"
937
- rendered = Govspeak::Document.new(govspeak, {links: link}).to_html
938
- assert_match("Example website", rendered)
939
- end
940
-
941
- test "embedded link without link object" do
942
- govspeak = "[embed:link:0726637c-8c66-47ad-834a-d815cbf51e0e]"
943
- rendered = Govspeak::Document.new(govspeak).to_html
944
- assert_match("", rendered)
945
- end
946
877
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govspeak
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Griffiths
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-09-08 00:00:00.000000000 Z
12
+ date: 2016-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: kramdown
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.10.0
20
+ version: 1.12.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.10.0
27
+ version: 1.12.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: htmlentities
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +129,20 @@ dependencies:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: '6.7'
132
+ - !ruby/object:Gem::Dependency
133
+ name: commander
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.4'
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '4.4'
132
146
  - !ruby/object:Gem::Dependency
133
147
  name: rake
134
148
  requirement: !ruby/object:Gem::Requirement
@@ -199,13 +213,28 @@ dependencies:
199
213
  - - ">="
200
214
  - !ruby/object:Gem::Version
201
215
  version: '0'
216
+ - !ruby/object:Gem::Dependency
217
+ name: pry-byebug
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ type: :development
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
202
230
  description: |-
203
231
  A set of extensions to markdown layered on top of the kramdown
204
232
  library for use in the UK Government Single Domain project
205
233
  email:
206
234
  - ben@alphagov.co.uk
207
235
  - james.stewart@digital.cabinet-office.gov.uk
208
- executables: []
236
+ executables:
237
+ - govspeak
209
238
  extensions: []
210
239
  extra_rdoc_files: []
211
240
  files:
@@ -213,10 +242,10 @@ files:
213
242
  - Gemfile
214
243
  - README.md
215
244
  - Rakefile
245
+ - bin/govspeak
216
246
  - lib/govspeak.rb
217
247
  - lib/govspeak/blockquote_extra_quote_remover.rb
218
- - lib/govspeak/extension/attachment.html.erb
219
- - lib/govspeak/extension/inline_attachment.html.erb
248
+ - lib/govspeak/cli.rb
220
249
  - lib/govspeak/header_extractor.rb
221
250
  - lib/govspeak/html_sanitizer.rb
222
251
  - lib/govspeak/html_validator.rb
@@ -226,11 +255,18 @@ files:
226
255
  - lib/govspeak/version.rb
227
256
  - lib/kramdown/parser/kramdown_with_automatic_external_links.rb
228
257
  - lib/presenters/attachment_presenter.rb
258
+ - lib/presenters/contact_presenter.rb
229
259
  - lib/presenters/h_card_presenter.rb
260
+ - lib/templates/attachment.html.erb
230
261
  - lib/templates/contact.html.erb
262
+ - lib/templates/inline_attachment.html.erb
231
263
  - lib/with_deep_merge.rb
232
264
  - test/blockquote_extra_quote_remover_test.rb
265
+ - test/govspeak_attachments_image_test.rb
266
+ - test/govspeak_attachments_inline_test.rb
267
+ - test/govspeak_attachments_test.rb
233
268
  - test/govspeak_contacts_test.rb
269
+ - test/govspeak_link_test.rb
234
270
  - test/govspeak_structured_headers_test.rb
235
271
  - test/govspeak_test.rb
236
272
  - test/govspeak_test_helper.rb
@@ -268,8 +304,12 @@ test_files:
268
304
  - test/blockquote_extra_quote_remover_test.rb
269
305
  - test/govspeak_test.rb
270
306
  - test/test_helper.rb
307
+ - test/govspeak_attachments_test.rb
271
308
  - test/presenters/h_card_presenter_test.rb
309
+ - test/govspeak_attachments_inline_test.rb
272
310
  - test/with_deep_merge_test.rb
311
+ - test/govspeak_attachments_image_test.rb
273
312
  - test/html_sanitizer_test.rb
274
313
  - test/html_validator_test.rb
275
314
  - test/govspeak_structured_headers_test.rb
315
+ - test/govspeak_link_test.rb
@@ -1,4 +0,0 @@
1
- <span id="attachment_<%= attachment.id %>" class="attachment-inline">
2
- <%= attachment.link attachment.title, attachment.url %>
3
- (<%= attachment.attachment_attributes %>)
4
- </span>