slimmer 9.6.0 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
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