slimmer 4.0.1 → 4.1.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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 4.1.0
2
+
3
+ * Add ALPHA_LABEL functionality
4
+
1
5
  # 4.0.1
2
6
 
3
7
  * Improve exception reporting by including rack_env
data/lib/slimmer.rb CHANGED
@@ -23,6 +23,7 @@ module Slimmer
23
23
  autoload :Artefact, 'slimmer/artefact'
24
24
 
25
25
  module Processors
26
+ autoload :AlphaLabelInserter, 'slimmer/processors/alpha_label_inserter'
26
27
  autoload :BetaNoticeInserter, 'slimmer/processors/beta_notice_inserter'
27
28
  autoload :BetaLabelInserter, 'slimmer/processors/beta_label_inserter'
28
29
  autoload :BodyClassCopier, 'slimmer/processors/body_class_copier'
@@ -5,6 +5,7 @@ module Slimmer
5
5
  HEADER_PREFIX = "X-Slimmer"
6
6
 
7
7
  SLIMMER_HEADER_MAPPING = {
8
+ alpha_label: "Alpha-Label",
8
9
  application_name: "Application-Name",
9
10
  beta: "Beta",
10
11
  beta_label: "Beta-Label",
@@ -20,6 +21,7 @@ module Slimmer
20
21
  template: "Template",
21
22
  }
22
23
 
24
+ ALPHA_LABEL = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:alpha_label]}"
23
25
  APPLICATION_NAME_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:application_name]}"
24
26
  ARTEFACT_HEADER = "#{HEADER_PREFIX}-Artefact"
25
27
  BETA_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:beta]}"
@@ -0,0 +1,35 @@
1
+ module Slimmer::Processors
2
+ class AlphaLabelInserter
3
+ def initialize(skin, headers)
4
+ @skin = skin
5
+ @headers = headers
6
+ end
7
+
8
+ def filter(content_document, page_template)
9
+ if should_add_alpha_label?
10
+ if position == 'before'
11
+ page_template.at_css(selector).add_previous_sibling(alpha_label_block)
12
+ elsif position == 'after'
13
+ page_template.at_css(selector).add_next_sibling(alpha_label_block)
14
+ end
15
+ end
16
+ end
17
+
18
+ def should_add_alpha_label?
19
+ !! @headers[Slimmer::Headers::ALPHA_LABEL]
20
+ end
21
+
22
+ def alpha_label_block
23
+ @alpha_label_block ||= @skin.template('alpha_label').to_s
24
+ end
25
+
26
+ private
27
+ def selector
28
+ @headers[Slimmer::Headers::ALPHA_LABEL].gsub(/.*:/, '')
29
+ end
30
+
31
+ def position
32
+ @headers[Slimmer::Headers::ALPHA_LABEL].gsub(/:.*/, '')
33
+ end
34
+ end
35
+ end
data/lib/slimmer/skin.rb CHANGED
@@ -131,7 +131,8 @@ module Slimmer
131
131
  Processors::ReportAProblemInserter.new(self, source_request.url, response.headers),
132
132
  Processors::MetaViewportRemover.new(response),
133
133
  Processors::BetaNoticeInserter.new(self, response.headers),
134
- Processors::BetaLabelInserter.new(self, response.headers)
134
+ Processors::BetaLabelInserter.new(self, response.headers),
135
+ Processors::AlphaLabelInserter.new(self, response.headers),
135
136
  ]
136
137
 
137
138
  template_name = response.headers[Headers::TEMPLATE_HEADER] || 'wrapper'
@@ -0,0 +1 @@
1
+ <div class="alpha-label"><p>This page is ALPHA.</p></div>
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '4.0.1'
2
+ VERSION = '4.1.0'
3
3
  end
@@ -0,0 +1 @@
1
+ <div class="alpha-label"><p>This page is ALPHA.</p></div>
@@ -0,0 +1,42 @@
1
+ require_relative "../test_helper"
2
+
3
+ class AlphaLabelInserterTest < MiniTest::Unit::TestCase
4
+
5
+ def setup
6
+ super
7
+ alpha_label_block = '<div class="alpha-label"><p>This page is ALPHA.</p></div>'
8
+ @skin = stub("Skin", :template => alpha_label_block)
9
+ @template = as_nokogiri %{
10
+ <html><body><div><div id="wrapper"><header id="main">GOV.UK</header></div></div></body></html>
11
+ }
12
+ end
13
+
14
+ def test_should_add_alpha_label_after
15
+
16
+ headers = {
17
+ Slimmer::Headers::ALPHA_LABEL => "after:header#main"
18
+ }
19
+
20
+ Slimmer::Processors::AlphaLabelInserter.new(@skin, headers).filter(nil, @template)
21
+
22
+ assert_in @template, '#main + .alpha-label'
23
+ end
24
+
25
+ def test_should_add_alpha_label_before
26
+ headers = {
27
+ Slimmer::Headers::ALPHA_LABEL => "before:header#main"
28
+ }
29
+
30
+ Slimmer::Processors::AlphaLabelInserter.new(@skin, headers).filter(nil, @template)
31
+
32
+ assert_in @template, '.alpha-label + #main'
33
+ end
34
+
35
+ def test_should_not_add_alpha_label
36
+ headers = {}
37
+
38
+ Slimmer::Processors::AlphaLabelInserter.new(@skin, headers).filter(nil, @template)
39
+
40
+ assert_not_in @template, '.alpha-label'
41
+ end
42
+ end
data/test/test_helper.rb CHANGED
@@ -75,6 +75,7 @@ class SlimmerIntegrationTest < MiniTest::Unit::TestCase
75
75
  use_template(template_name)
76
76
  use_template('related.raw')
77
77
  use_template('report_a_problem.raw')
78
+ use_template('alpha_label')
78
79
  use_template('beta_notice')
79
80
  use_template('beta_label')
80
81
 
@@ -261,12 +261,26 @@ module TypicalUsage
261
261
  <div id="wrapper">The body of the page</div>
262
262
  </body>
263
263
  </html>
264
- }, {Slimmer::Headers::BETA_LABEL => 'after:#wrapper'}
264
+ }, { Slimmer::Headers::BETA_LABEL => 'after:#wrapper' }
265
265
 
266
266
  assert_rendered_in_template '.beta-label'
267
267
  end
268
268
  end
269
269
 
270
+ class AlphaLabelInserterTest < SlimmerIntegrationTest
271
+ def test_should_add_alpha_label
272
+ given_response 200, %{
273
+ <html>
274
+ <body class="wibble">
275
+ <div id="wrapper">The body of the page</div>
276
+ </body>
277
+ </html>
278
+ }, { Slimmer::Headers::ALPHA_LABEL => 'after:#wrapper' }
279
+
280
+ assert_rendered_in_template '.alpha-label'
281
+ end
282
+ end
283
+
270
284
  class Error500ResponseTest < SlimmerIntegrationTest
271
285
  include Rack::Test::Methods
272
286
 
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: 4.0.1
4
+ version: 4.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-05-27 00:00:00.000000000 Z
13
+ date: 2014-06-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -268,6 +268,7 @@ files:
268
268
  - lib/slimmer/skin.rb
269
269
  - lib/slimmer/app.rb
270
270
  - lib/slimmer/test_templates/header_footer_only.html
271
+ - lib/slimmer/test_templates/alpha_label.html
271
272
  - lib/slimmer/test_templates/wrapper.html
272
273
  - lib/slimmer/test_templates/beta_notice.html
273
274
  - lib/slimmer/test_templates/beta_label.html
@@ -288,6 +289,7 @@ files:
288
289
  - lib/slimmer/processors/report_a_problem_inserter.rb
289
290
  - lib/slimmer/processors/title_inserter.rb
290
291
  - lib/slimmer/processors/body_inserter.rb
292
+ - lib/slimmer/processors/alpha_label_inserter.rb
291
293
  - lib/slimmer/processors/footer_remover.rb
292
294
  - lib/slimmer/processors/beta_notice_inserter.rb
293
295
  - lib/slimmer/processors/related_items_inserter.rb
@@ -304,6 +306,7 @@ files:
304
306
  - test/fixtures/wrapper.html.erb
305
307
  - test/fixtures/500.html.erb
306
308
  - test/fixtures/proposition_menu.html.erb
309
+ - test/fixtures/alpha_label.html.erb
307
310
  - test/fixtures/404.html.erb
308
311
  - test/fixtures/report_a_problem.raw.html.erb
309
312
  - test/fixtures/beta_label.html.erb
@@ -319,6 +322,7 @@ files:
319
322
  - test/processors/search_path_setter_test.rb
320
323
  - test/processors/google_analytics_test.rb
321
324
  - test/processors/meta_viewport_remover_test.rb
325
+ - test/processors/alpha_label_inserter_test.rb
322
326
  - test/processors/section_inserter_test.rb
323
327
  - test/processors/report_a_problem_inserter_test.rb
324
328
  - test/processors/tag_mover_test.rb
@@ -339,7 +343,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
339
343
  version: '0'
340
344
  segments:
341
345
  - 0
342
- hash: -2030559662943579791
346
+ hash: -2143618560048917662
343
347
  required_rubygems_version: !ruby/object:Gem::Requirement
344
348
  none: false
345
349
  requirements:
@@ -348,7 +352,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
352
  version: '0'
349
353
  segments:
350
354
  - 0
351
- hash: -2030559662943579791
355
+ hash: -2143618560048917662
352
356
  requirements: []
353
357
  rubyforge_project: slimmer
354
358
  rubygems_version: 1.8.23
@@ -364,6 +368,7 @@ test_files:
364
368
  - test/fixtures/wrapper.html.erb
365
369
  - test/fixtures/500.html.erb
366
370
  - test/fixtures/proposition_menu.html.erb
371
+ - test/fixtures/alpha_label.html.erb
367
372
  - test/fixtures/404.html.erb
368
373
  - test/fixtures/report_a_problem.raw.html.erb
369
374
  - test/fixtures/beta_label.html.erb
@@ -379,6 +384,7 @@ test_files:
379
384
  - test/processors/search_path_setter_test.rb
380
385
  - test/processors/google_analytics_test.rb
381
386
  - test/processors/meta_viewport_remover_test.rb
387
+ - test/processors/alpha_label_inserter_test.rb
382
388
  - test/processors/section_inserter_test.rb
383
389
  - test/processors/report_a_problem_inserter_test.rb
384
390
  - test/processors/tag_mover_test.rb