slimmer 9.6.0 → 10.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.
data/test/skin_test.rb CHANGED
@@ -96,28 +96,4 @@ describe Slimmer::Skin do
96
96
  end
97
97
  end
98
98
  end
99
-
100
- describe "parsing artefact from header" do
101
- before do
102
- @skin = Slimmer::Skin.new cache: Slimmer::Cache.instance
103
- @headers = {}
104
- @response = stub("Response", :headers => @headers)
105
- end
106
-
107
- it "should construct and return an artefact with the parsed json" do
108
- data = {"foo" => "bar", "baz" => 1}
109
- @headers[Slimmer::Headers::ARTEFACT_HEADER] = data.to_json
110
- Slimmer::Artefact.expects(:new).with(data).returns(:an_artefact)
111
- assert_equal :an_artefact, @skin.artefact_from_header(@response)
112
- end
113
-
114
- it "should return nil if there is no artefact header" do
115
- assert_equal nil, @skin.artefact_from_header(@response)
116
- end
117
-
118
- it "should return nil if there is invalid JSON in the artefact header" do
119
- @headers[Slimmer::Headers::ARTEFACT_HEADER] = "fooey"
120
- assert_equal nil, @skin.artefact_from_header(@response)
121
- end
122
- end
123
99
  end
data/test/test_helper.rb CHANGED
@@ -5,7 +5,6 @@ require 'json'
5
5
  require 'logger'
6
6
  require 'mocha/setup'
7
7
  require 'timecop'
8
- require 'gds_api/test_helpers/content_api'
9
8
 
10
9
  MiniTest::Test.class_eval do
11
10
  def as_nokogiri(html_string)
@@ -60,7 +59,6 @@ end
60
59
 
61
60
  class SlimmerIntegrationTest < MiniTest::Test
62
61
  include Rack::Test::Methods
63
- include GdsApi::TestHelpers::ContentApi
64
62
 
65
63
  # given_response can either be called from a setup method, or in the class scope.
66
64
  # The setup method variant is necessary if you want to pass variables into the call that
@@ -90,7 +88,6 @@ class SlimmerIntegrationTest < MiniTest::Test
90
88
  end
91
89
 
92
90
  use_template(template_name)
93
- use_template('related.raw')
94
91
  use_template('report_a_problem.raw')
95
92
 
96
93
  fetch_page
@@ -1,17 +1,17 @@
1
1
  require_relative "../test_helper"
2
- require_relative "../../lib/slimmer/test_helpers/shared_templates"
3
-
4
- describe Slimmer::TestHelpers::SharedTemplates do
2
+ require_relative "../../lib/slimmer/test_helpers/govuk_components"
5
3
 
4
+ describe Slimmer::TestHelpers::GovukComponents do
6
5
  let(:subject) {
7
6
  class Dummy
8
- include Slimmer::TestHelpers::SharedTemplates
7
+ include Slimmer::TestHelpers::GovukComponents
9
8
  end
10
- }
9
+ }
11
10
 
12
- describe 'shared_component_selector' do
13
- it 'should generate a selector for components' do
11
+ describe '#shared_component_selector' do
12
+ it 'generates a selector for components' do
14
13
  outcome = subject.new.shared_component_selector('flux_capacitor')
14
+
15
15
  expected = "test-govuk-component[data-template='govuk_component-flux_capacitor']"
16
16
  assert_equal expected, outcome
17
17
  end
@@ -89,7 +89,6 @@ module TypicalUsage
89
89
  class NormalResponseTest < SlimmerIntegrationTest
90
90
  def setup
91
91
  super
92
- @artefact = artefact_for_slug_in_a_section("some-article", 'this-section')
93
92
  given_response 200, %{
94
93
  <html>
95
94
  <head><title>The title of the page</title>
@@ -101,7 +100,7 @@ module TypicalUsage
101
100
  <div id="wrapper">The body of the page</div>
102
101
  </body>
103
102
  </html>
104
- }, {Slimmer::Headers::ARTEFACT_HEADER => @artefact.to_json}
103
+ }, {}
105
104
  end
106
105
 
107
106
  def test_should_replace_the_wrapper_using_the_app_response
@@ -127,10 +126,6 @@ module TypicalUsage
127
126
  def test_should_copy_the_class_of_the_body_element
128
127
  assert_rendered_in_template "body.body_class"
129
128
  end
130
-
131
- def test_should_insert_section_links_into_the_navigation
132
- assert_rendered_in_template "#global-breadcrumb ol li a[href='https://www.test.gov.uk/browse/this-section']", "This section"
133
- end
134
129
  end
135
130
 
136
131
  class ConditionalCommentTest < SlimmerIntegrationTest
@@ -164,49 +159,6 @@ module TypicalUsage
164
159
  end
165
160
  end
166
161
 
167
- class ResponseWithRelatedItemsTest < SlimmerIntegrationTest
168
-
169
- def setup
170
- super
171
- @artefact = artefact_for_slug_with_related_artefacts("some-slug", ["how-to-test-computer-software-automatically"])
172
- end
173
- end
174
-
175
- class MainstreamRelatedItemsTest < ResponseWithRelatedItemsTest
176
- def setup
177
- super
178
- given_response 200, %{
179
- <html>
180
- <body class="mainstream">
181
- <div id="wrapper">The body of the page<div id="related-items"></div></div>
182
- </body>
183
- </html>
184
- }, {Slimmer::Headers::ARTEFACT_HEADER => @artefact.to_json}
185
- end
186
-
187
- def test_should_insert_related_items_block
188
- assert_rendered_in_template "div.related nav li a[href='https://www.test.gov.uk/how-to-test-computer-software-automatically']",
189
- "How to test computer software automatically"
190
- end
191
- end
192
-
193
- class NonMainstreamRelatedItemsTest < ResponseWithRelatedItemsTest
194
- def setup
195
- super
196
- given_response 200, %{
197
- <html>
198
- <body class="nonmainstream">
199
- <div id="wrapper">The body of the page<div id="related-items"></div></div>
200
- </body>
201
- </html>
202
- }, {Slimmer::Headers::ARTEFACT_HEADER => @artefact.to_json}
203
- end
204
-
205
- def test_should_not_insert_related_items_block
206
- assert_rendered_in_template "div#related-items", ""
207
- end
208
- end
209
-
210
162
  class HeaderContextResponseTest < SlimmerIntegrationTest
211
163
  given_response 200, %{
212
164
  <html>
@@ -379,11 +331,9 @@ module TypicalUsage
379
331
  </html>
380
332
  }, {
381
333
  "#{Slimmer::Headers::HEADER_PREFIX}-Foo" => "Something",
382
- Slimmer::Headers::ARTEFACT_HEADER => "{}",
383
334
  "X-Custom-Header" => "Something else"
384
335
  }
385
336
 
386
- refute last_response.headers.has_key?(Slimmer::Headers::ARTEFACT_HEADER)
387
337
  refute last_response.headers.has_key?("#{Slimmer::Headers::HEADER_PREFIX}-Foo")
388
338
  assert_equal "Something else", last_response.headers["X-Custom-Header"]
389
339
  end
@@ -397,12 +347,10 @@ module TypicalUsage
397
347
  </html>
398
348
  }, {
399
349
  "#{Slimmer::Headers::HEADER_PREFIX}-Foo" => "Something",
400
- Slimmer::Headers::ARTEFACT_HEADER => "{}",
401
350
  "X-Custom-Header" => "Something else",
402
351
  Slimmer::Headers::SKIP_HEADER => "1"
403
352
  }
404
353
 
405
- refute last_response.headers.has_key?(Slimmer::Headers::ARTEFACT_HEADER)
406
354
  refute last_response.headers.has_key?("#{Slimmer::Headers::HEADER_PREFIX}-Foo")
407
355
  assert_equal "Something else", last_response.headers["X-Custom-Header"]
408
356
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.6.0
4
+ version: 10.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-10-07 00:00:00.000000000 Z
12
+ date: 2016-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -199,20 +199,6 @@ dependencies:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
201
  version: 1.5.0
202
- - !ruby/object:Gem::Dependency
203
- name: gds-api-adapters
204
- requirement: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - '='
207
- - !ruby/object:Gem::Version
208
- version: 2.7.1
209
- type: :development
210
- prerelease: false
211
- version_requirements: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - '='
214
- - !ruby/object:Gem::Version
215
- version: 2.7.1
216
202
  - !ruby/object:Gem::Dependency
217
203
  name: timecop
218
204
  requirement: !ruby/object:Gem::Requirement
@@ -256,10 +242,10 @@ files:
256
242
  - bin/render_slimmer_error
257
243
  - lib/slimmer.rb
258
244
  - lib/slimmer/app.rb
259
- - lib/slimmer/artefact.rb
260
245
  - lib/slimmer/cache.rb
261
246
  - lib/slimmer/component_resolver.rb
262
247
  - lib/slimmer/cucumber.rb
248
+ - lib/slimmer/govuk_components.rb
263
249
  - lib/slimmer/govuk_request_id.rb
264
250
  - lib/slimmer/headers.rb
265
251
  - lib/slimmer/i18n_backend.rb
@@ -271,27 +257,23 @@ files:
271
257
  - lib/slimmer/processors/inside_header_inserter.rb
272
258
  - lib/slimmer/processors/metadata_inserter.rb
273
259
  - lib/slimmer/processors/navigation_mover.rb
274
- - lib/slimmer/processors/related_items_inserter.rb
275
260
  - lib/slimmer/processors/report_a_problem_inserter.rb
276
261
  - lib/slimmer/processors/search_parameter_inserter.rb
277
262
  - lib/slimmer/processors/search_path_setter.rb
278
263
  - lib/slimmer/processors/search_remover.rb
279
- - lib/slimmer/processors/section_inserter.rb
280
264
  - lib/slimmer/processors/tag_mover.rb
281
265
  - lib/slimmer/processors/title_inserter.rb
282
266
  - lib/slimmer/railtie.rb
283
267
  - lib/slimmer/rspec.rb
284
- - lib/slimmer/shared_templates.rb
285
268
  - lib/slimmer/skin.rb
286
269
  - lib/slimmer/template.rb
287
270
  - lib/slimmer/test.rb
288
- - lib/slimmer/test_helpers/shared_templates.rb
271
+ - lib/slimmer/test_helpers/govuk_components.rb
289
272
  - lib/slimmer/test_templates/header_footer_only.html
290
273
  - lib/slimmer/test_templates/wrapper.html
291
274
  - lib/slimmer/version.rb
292
275
  - lib/tasks/lint.rake
293
276
  - lib/tasks/slimmer.rake
294
- - test/artefact_test.rb
295
277
  - test/cache_test.rb
296
278
  - test/changelog_test.rb
297
279
  - test/component_resolver_test.rb
@@ -300,7 +282,6 @@ files:
300
282
  - test/fixtures/500.html.erb
301
283
  - test/fixtures/core_layout.html.erb
302
284
  - test/fixtures/proposition_menu.html.erb
303
- - test/fixtures/related.raw.html.erb
304
285
  - test/fixtures/report_a_problem.raw.html.erb
305
286
  - test/headers_test.rb
306
287
  - test/processors/body_inserter_test.rb
@@ -308,16 +289,14 @@ files:
308
289
  - test/processors/inside_header_inserter_test.rb
309
290
  - test/processors/metadata_inserter_test.rb
310
291
  - test/processors/navigation_mover_test.rb
311
- - test/processors/related_items_inserter_test.rb
312
292
  - test/processors/report_a_problem_inserter_test.rb
313
293
  - test/processors/search_parameter_inserter_test.rb
314
294
  - test/processors/search_path_setter_test.rb
315
295
  - test/processors/search_remover_test.rb
316
- - test/processors/section_inserter_test.rb
317
296
  - test/processors/tag_mover_test.rb
318
297
  - test/skin_test.rb
319
298
  - test/test_helper.rb
320
- - test/test_helpers/shared_templates_test.rb
299
+ - test/test_helpers/govuk_components_test.rb
321
300
  - test/test_template_dependency_on_static_test.rb
322
301
  - test/typical_usage_test.rb
323
302
  homepage: http://github.com/alphagov/slimmer
@@ -345,32 +324,28 @@ signing_key:
345
324
  specification_version: 4
346
325
  summary: Thinner than the skinner
347
326
  test_files:
327
+ - test/headers_test.rb
328
+ - test/processors/body_inserter_test.rb
329
+ - test/processors/search_path_setter_test.rb
330
+ - test/processors/navigation_mover_test.rb
331
+ - test/processors/report_a_problem_inserter_test.rb
332
+ - test/processors/inside_header_inserter_test.rb
333
+ - test/processors/tag_mover_test.rb
334
+ - test/processors/search_parameter_inserter_test.rb
335
+ - test/processors/search_remover_test.rb
336
+ - test/processors/metadata_inserter_test.rb
337
+ - test/processors/header_context_inserter_test.rb
338
+ - test/test_template_dependency_on_static_test.rb
348
339
  - test/test_helper.rb
349
340
  - test/typical_usage_test.rb
350
- - test/cache_test.rb
351
- - test/test_helpers/shared_templates_test.rb
352
341
  - test/skin_test.rb
353
- - test/fixtures/500.html.erb
354
- - test/fixtures/related.raw.html.erb
355
- - test/fixtures/404.html.erb
356
- - test/fixtures/410.html.erb
342
+ - test/component_resolver_test.rb
357
343
  - test/fixtures/core_layout.html.erb
358
- - test/fixtures/proposition_menu.html.erb
359
344
  - test/fixtures/report_a_problem.raw.html.erb
345
+ - test/fixtures/410.html.erb
346
+ - test/fixtures/404.html.erb
347
+ - test/fixtures/500.html.erb
348
+ - test/fixtures/proposition_menu.html.erb
349
+ - test/test_helpers/govuk_components_test.rb
350
+ - test/cache_test.rb
360
351
  - test/changelog_test.rb
361
- - test/component_resolver_test.rb
362
- - test/headers_test.rb
363
- - test/test_template_dependency_on_static_test.rb
364
- - test/artefact_test.rb
365
- - test/processors/search_parameter_inserter_test.rb
366
- - test/processors/metadata_inserter_test.rb
367
- - test/processors/header_context_inserter_test.rb
368
- - test/processors/related_items_inserter_test.rb
369
- - test/processors/section_inserter_test.rb
370
- - test/processors/body_inserter_test.rb
371
- - test/processors/report_a_problem_inserter_test.rb
372
- - test/processors/search_remover_test.rb
373
- - test/processors/inside_header_inserter_test.rb
374
- - test/processors/navigation_mover_test.rb
375
- - test/processors/search_path_setter_test.rb
376
- - test/processors/tag_mover_test.rb
@@ -1,47 +0,0 @@
1
- class Slimmer::Artefact
2
- def initialize(artefact_data)
3
- @data = artefact_data
4
- end
5
-
6
- def slug
7
- id_to_slug(@data["id"])
8
- end
9
-
10
- def tags_of_type(type)
11
- return [] unless self.tags
12
- self.tags.select do |t|
13
- t["details"]["type"] == type
14
- end
15
- end
16
-
17
- def primary_section
18
- tags_of_type("section").first
19
- end
20
-
21
- def primary_root_section
22
- section = primary_section
23
- while section and section["parent"]
24
- section = section["parent"]
25
- end
26
- section
27
- end
28
-
29
- def related_artefacts
30
- return [] unless self.related
31
- self.related.map do |r|
32
- self.class.new(r)
33
- end
34
- end
35
-
36
- def method_missing(name, *args)
37
- value = @data[name.to_s]
38
- value ||= @data["details"][name.to_s] if @data["details"]
39
- value
40
- end
41
-
42
- private
43
-
44
- def id_to_slug(id)
45
- id.split('/').last.chomp('.json')
46
- end
47
- end
@@ -1,22 +0,0 @@
1
- class Slimmer::Processors::RelatedItemsInserter
2
- include ERB::Util
3
-
4
- def initialize(skin, artefact)
5
- @skin = skin
6
- @artefact = artefact
7
- end
8
-
9
- def filter(content_document, page_template)
10
- if content_document.at_css('body.mainstream div#related-items')
11
- page_template.at_css('body.mainstream div#related-items').replace(related_item_block)
12
- end
13
- end
14
-
15
- private
16
-
17
- def related_item_block
18
- artefact = @artefact
19
- html = ERB.new(@skin.template('related.raw')).result(binding)
20
- Nokogiri::HTML.fragment(html)
21
- end
22
- end
@@ -1,49 +0,0 @@
1
- module Slimmer::Processors
2
- class SectionInserter
3
- def initialize(artefact)
4
- @artefact = artefact
5
- end
6
-
7
- def filter(src, dest)
8
- if @artefact and (list = dest.at_css('#global-breadcrumb ol'))
9
- if (section = @artefact.primary_section)
10
- sections = recurse_sections(section)
11
- current = sections.pop
12
- sections.each do |section|
13
- append_tag(list, section)
14
- end
15
- append_tag(list, current, :strong => true)
16
- end
17
- end
18
- end
19
-
20
- private
21
-
22
- def recurse_sections(section, current = nil)
23
- current = [section] unless current
24
-
25
- if section['parent']
26
- current.unshift(section['parent'])
27
- current = recurse_sections(section['parent'], current)
28
- end
29
- current
30
- end
31
-
32
- def append_tag(list, tag, opts = {})
33
- link_node = Nokogiri::XML::Node.new('a', list)
34
- link_node['href'] = tag["content_with_tag"]["web_url"]
35
- link_node.content = tag["title"]
36
-
37
- list_item = Nokogiri::XML::Node.new('li', list)
38
- if opts[:strong]
39
- strong = Nokogiri::XML::Node.new('strong', list)
40
- strong.add_child(link_node)
41
- list_item.add_child(strong)
42
- else
43
- list_item.add_child(link_node)
44
- end
45
-
46
- list.add_child(list_item)
47
- end
48
- end
49
- end