slimmer 4.0.1 → 4.1.0

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