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 +4 -0
- data/lib/slimmer.rb +1 -0
- data/lib/slimmer/headers.rb +2 -0
- data/lib/slimmer/processors/alpha_label_inserter.rb +35 -0
- data/lib/slimmer/skin.rb +2 -1
- data/lib/slimmer/test_templates/alpha_label.html +1 -0
- data/lib/slimmer/version.rb +1 -1
- data/test/fixtures/alpha_label.html.erb +1 -0
- data/test/processors/alpha_label_inserter_test.rb +42 -0
- data/test/test_helper.rb +1 -0
- data/test/typical_usage_test.rb +15 -1
- metadata +10 -4
data/CHANGELOG.md
CHANGED
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'
|
data/lib/slimmer/headers.rb
CHANGED
@@ -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>
|
data/lib/slimmer/version.rb
CHANGED
@@ -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
data/test/typical_usage_test.rb
CHANGED
@@ -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
|
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-
|
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: -
|
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: -
|
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
|