slimmer 2.0.0 → 2.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/lib/slimmer/processors/related_items_inserter.rb +4 -3
- data/lib/slimmer/processors/report_a_problem_inserter.rb +24 -0
- data/lib/slimmer/skin.rb +2 -1
- data/lib/slimmer/test.rb +2 -2
- data/lib/slimmer/version.rb +1 -1
- data/lib/slimmer.rb +1 -0
- data/test/fixtures/report_a_problem.raw.html.erb +21 -0
- data/test/processors/related_items_inserter_test.rb +5 -2
- data/test/processors/report_a_problem_inserter_test.rb +44 -0
- data/test/processors/section_inserter_test.rb +0 -15
- data/test/test_helper.rb +1 -0
- data/test/typical_usage_test.rb +18 -0
- metadata +47 -42
@@ -1,8 +1,8 @@
|
|
1
1
|
class Slimmer::Processors::RelatedItemsInserter
|
2
2
|
include ERB::Util
|
3
3
|
|
4
|
-
def initialize(
|
5
|
-
@
|
4
|
+
def initialize(skin, artefact)
|
5
|
+
@skin = skin
|
6
6
|
@artefact = artefact
|
7
7
|
end
|
8
8
|
|
@@ -14,7 +14,8 @@ class Slimmer::Processors::RelatedItemsInserter
|
|
14
14
|
|
15
15
|
def related_item_block
|
16
16
|
artefact = @artefact
|
17
|
-
|
17
|
+
related_block_template = @skin.template('related.raw')
|
18
|
+
html = ERB.new(related_block_template).result(binding)
|
18
19
|
Nokogiri::HTML.fragment(html)
|
19
20
|
end
|
20
21
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Slimmer::Processors
|
2
|
+
class ReportAProblemInserter
|
3
|
+
include ERB::Util
|
4
|
+
|
5
|
+
def initialize(skin, url)
|
6
|
+
@skin = skin
|
7
|
+
@request_url = url
|
8
|
+
end
|
9
|
+
|
10
|
+
def filter(content_document, page_template)
|
11
|
+
if (placeholder = page_template.at_css('body #report-a-problem'))
|
12
|
+
placeholder.replace(report_a_problem_block)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def report_a_problem_block
|
17
|
+
request_url = @request_url
|
18
|
+
report_a_problem_template = @skin.template('report_a_problem.raw')
|
19
|
+
html = ERB.new(report_a_problem_template).result(binding)
|
20
|
+
Nokogiri::HTML.fragment(html)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
data/lib/slimmer/skin.rb
CHANGED
@@ -131,8 +131,9 @@ module Slimmer
|
|
131
131
|
Processors::SectionInserter.new(),
|
132
132
|
Processors::GoogleAnalyticsConfigurator.new(response),
|
133
133
|
Processors::SearchPathSetter.new(response),
|
134
|
-
Processors::RelatedItemsInserter.new(
|
134
|
+
Processors::RelatedItemsInserter.new(self, artefact),
|
135
135
|
Processors::LogoClassInserter.new(artefact),
|
136
|
+
Processors::ReportAProblemInserter.new(self, source_request.url),
|
136
137
|
]
|
137
138
|
|
138
139
|
template_name = response.headers[Headers::TEMPLATE_HEADER] || 'wrapper'
|
data/lib/slimmer/test.rb
CHANGED
@@ -5,8 +5,8 @@ module Slimmer
|
|
5
5
|
class Skin
|
6
6
|
def load_template name
|
7
7
|
logger.debug "Slimmer: TEST MODE - Loading fixture template from #{__FILE__}"
|
8
|
-
if name
|
9
|
-
%{<div id="test
|
8
|
+
if name =~ /\A(.*)\.raw\z/
|
9
|
+
%{<div id="test-#{$1}"></div>}
|
10
10
|
else
|
11
11
|
Slimmer::TestTemplate::TEMPLATE
|
12
12
|
end
|
data/lib/slimmer/version.rb
CHANGED
data/lib/slimmer.rb
CHANGED
@@ -32,6 +32,7 @@ module Slimmer
|
|
32
32
|
autoload :HeaderContextInserter, 'slimmer/processors/header_context_inserter'
|
33
33
|
autoload :LogoClassInserter, 'slimmer/processors/logo_class_inserter'
|
34
34
|
autoload :RelatedItemsInserter, 'slimmer/processors/related_items_inserter'
|
35
|
+
autoload :ReportAProblemInserter, 'slimmer/processors/report_a_problem_inserter'
|
35
36
|
autoload :SearchPathSetter, 'slimmer/processors/search_path_setter'
|
36
37
|
autoload :SectionInserter, 'slimmer/processors/section_inserter'
|
37
38
|
autoload :TagMover, 'slimmer/processors/tag_mover'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!-- report_a_problem -->
|
2
|
+
<div class="report-a-problem-container">
|
3
|
+
<form accept-charset="UTF-8" action="/feedback" method="post">
|
4
|
+
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
5
|
+
<input id="url" name="url" type="hidden" value="<%= request_url %>">
|
6
|
+
<label for="what_doing">
|
7
|
+
What were you doing?
|
8
|
+
<input id="what_doing" name="what_doing" type="text">
|
9
|
+
</label>
|
10
|
+
<label for="what_happened">
|
11
|
+
What happened?
|
12
|
+
<input id="what_happened" name="what_happened" type="text">
|
13
|
+
</label>
|
14
|
+
<label for="what_expected">
|
15
|
+
What did you expect to happen?
|
16
|
+
<input id="what_expected" name="what_expected" type="text">
|
17
|
+
</label>
|
18
|
+
<input name="commit" type="submit" value="Submit">
|
19
|
+
</form>
|
20
|
+
</div>
|
21
|
+
<!-- end report_a_problem -->
|
@@ -5,6 +5,7 @@ class RelatedItemsInserterTest < MiniTest::Unit::TestCase
|
|
5
5
|
def setup
|
6
6
|
super
|
7
7
|
@related_template = File.read( File.dirname(__FILE__) + "/../fixtures/related.raw.html.erb" )
|
8
|
+
@skin = stub("Skin", :template => @related_template)
|
8
9
|
@artefact = {
|
9
10
|
'slug' => 'vat',
|
10
11
|
'title' => 'VAT',
|
@@ -32,7 +33,7 @@ class RelatedItemsInserterTest < MiniTest::Unit::TestCase
|
|
32
33
|
</html>
|
33
34
|
}
|
34
35
|
|
35
|
-
Slimmer::Processors::RelatedItemsInserter.new(@
|
36
|
+
Slimmer::Processors::RelatedItemsInserter.new(@skin, @artefact).filter(source, template)
|
36
37
|
assert_in template, "div.related h2", "Related topics"
|
37
38
|
assert_in template, "div.related nav[role=navigation] ul li.answer:nth-child(1) a[href='/vat-rates']", "VAT rates"
|
38
39
|
assert_in template, "div.related nav[role=navigation] ul li.guide:nth-child(2) a[href='/starting-to-import']", "Starting to import"
|
@@ -55,7 +56,9 @@ class RelatedItemsInserterTest < MiniTest::Unit::TestCase
|
|
55
56
|
</html>
|
56
57
|
}
|
57
58
|
|
58
|
-
|
59
|
+
@skin.expects(:template).never # Shouldn't fetch template when not inserting block
|
60
|
+
|
61
|
+
Slimmer::Processors::RelatedItemsInserter.new(@skin, @artefact).filter(source, template)
|
59
62
|
assert_not_in template, "div.related"
|
60
63
|
end
|
61
64
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class ReportAProblemInserterTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
@report_a_problem_template = File.read( File.dirname(__FILE__) + "/../fixtures/report_a_problem.raw.html.erb" )
|
8
|
+
@skin = stub("Skin", :template => nil)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_should_add_report_a_problem_form_using_the_template_from_static
|
12
|
+
@skin.expects(:template).with('report_a_problem.raw').returns(@report_a_problem_template)
|
13
|
+
|
14
|
+
template = as_nokogiri %{
|
15
|
+
<html>
|
16
|
+
<body">
|
17
|
+
<div id="wrapper">
|
18
|
+
<div id="report-a-problem"></div>
|
19
|
+
</div>
|
20
|
+
</body>
|
21
|
+
</html>
|
22
|
+
}
|
23
|
+
|
24
|
+
Slimmer::Processors::ReportAProblemInserter.new(@skin, "http://www.example.com/somewhere?foo=bar").filter(:any_source, template)
|
25
|
+
assert_in template, "#wrapper div.report-a-problem-container"
|
26
|
+
assert_in template, "div.report-a-problem-container form input[name=url][value='http://www.example.com/somewhere?foo=bar']"
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_not_add_report_a_problem_form_if_wrapper_element_missing
|
30
|
+
template = as_nokogiri %{
|
31
|
+
<html>
|
32
|
+
<body class="mainstream">
|
33
|
+
<div id="wrapper">
|
34
|
+
</div>
|
35
|
+
</body>
|
36
|
+
</html>
|
37
|
+
}
|
38
|
+
|
39
|
+
@skin.expects(:template).never # Shouldn't fetch template when not inserting block
|
40
|
+
|
41
|
+
Slimmer::Processors::ReportAProblemInserter.new(@skin, "").filter(:any_source, template)
|
42
|
+
assert_not_in template, "div.report-a-problem-container"
|
43
|
+
end
|
44
|
+
end
|
@@ -102,19 +102,4 @@ class SectionInserterTest < MiniTest::Unit::TestCase
|
|
102
102
|
Slimmer::Processors::SectionInserter.new.filter(:any_source, template)
|
103
103
|
assert_not_in template, "nav[role=navigation]"
|
104
104
|
end
|
105
|
-
|
106
|
-
def test_should_not_blow_up_without_an_artefact
|
107
|
-
template = as_nokogiri %{
|
108
|
-
<html>
|
109
|
-
<body>
|
110
|
-
<nav role="navigation">
|
111
|
-
<ol><li><a href="/">Home</a></li></ol>
|
112
|
-
</nav>
|
113
|
-
</body>
|
114
|
-
</html>
|
115
|
-
}
|
116
|
-
|
117
|
-
# assert_nothing_raised do
|
118
|
-
Slimmer::Processors::SectionInserter.new(nil).filter(:any_source, template)
|
119
|
-
end
|
120
105
|
end
|
data/test/test_helper.rb
CHANGED
data/test/typical_usage_test.rb
CHANGED
@@ -246,6 +246,24 @@ module TypicalUsage
|
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
249
|
+
class ReportAProblemTest < SlimmerIntegrationTest
|
250
|
+
given_response 200, %{
|
251
|
+
<html>
|
252
|
+
<body>
|
253
|
+
<div id="wrapper">The body of the page<div id="report-a-problem"></div></div>
|
254
|
+
</body>
|
255
|
+
</html>
|
256
|
+
}
|
257
|
+
|
258
|
+
def test_should_insert_the_report_a_problem_form
|
259
|
+
assert_rendered_in_template "#wrapper .report-a-problem-container"
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_should_add_the_current_url_to_the_form
|
263
|
+
assert_rendered_in_template ".report-a-problem-container input[name=url][value='http://example.org/']"
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
249
267
|
class Error500ResponseTest < SlimmerIntegrationTest
|
250
268
|
include Rack::Test::Methods
|
251
269
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: slimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.
|
5
|
+
version: 2.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ben Griffiths
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-09-10 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: nokogiri
|
@@ -97,7 +97,7 @@ dependencies:
|
|
97
97
|
requirements:
|
98
98
|
- - ~>
|
99
99
|
- !ruby/object:Gem::Version
|
100
|
-
version: 0.
|
100
|
+
version: 0.12.4
|
101
101
|
type: :development
|
102
102
|
prerelease: false
|
103
103
|
version_requirements: *id008
|
@@ -148,44 +148,47 @@ files:
|
|
148
148
|
- README.md
|
149
149
|
- CHANGELOG.md
|
150
150
|
- lib/tasks/slimmer.rake
|
151
|
-
- lib/slimmer
|
151
|
+
- lib/slimmer.rb
|
152
|
+
- lib/slimmer/skin.rb
|
153
|
+
- lib/slimmer/railtie.rb
|
154
|
+
- lib/slimmer/template.rb
|
155
|
+
- lib/slimmer/test_template.rb
|
156
|
+
- lib/slimmer/test.rb
|
157
|
+
- lib/slimmer/app.rb
|
158
|
+
- lib/slimmer/processors/logo_class_inserter.rb
|
152
159
|
- lib/slimmer/processors/body_class_copier.rb
|
160
|
+
- lib/slimmer/processors/tag_mover.rb
|
161
|
+
- lib/slimmer/processors/search_path_setter.rb
|
162
|
+
- lib/slimmer/processors/title_inserter.rb
|
153
163
|
- lib/slimmer/processors/google_analytics_configurator.rb
|
164
|
+
- lib/slimmer/processors/conditional_comment_mover.rb
|
154
165
|
- lib/slimmer/processors/related_items_inserter.rb
|
166
|
+
- lib/slimmer/processors/header_context_inserter.rb
|
155
167
|
- lib/slimmer/processors/body_inserter.rb
|
156
|
-
- lib/slimmer/processors/logo_class_inserter.rb
|
157
|
-
- lib/slimmer/processors/footer_remover.rb
|
158
|
-
- lib/slimmer/processors/conditional_comment_mover.rb
|
159
168
|
- lib/slimmer/processors/admin_title_inserter.rb
|
169
|
+
- lib/slimmer/processors/report_a_problem_inserter.rb
|
160
170
|
- lib/slimmer/processors/section_inserter.rb
|
161
|
-
- lib/slimmer/processors/
|
162
|
-
- lib/slimmer/processors/tag_mover.rb
|
163
|
-
- lib/slimmer/processors/title_inserter.rb
|
164
|
-
- lib/slimmer/processors/header_context_inserter.rb
|
165
|
-
- lib/slimmer/template.rb
|
166
|
-
- lib/slimmer/railtie.rb
|
167
|
-
- lib/slimmer/test.rb
|
168
|
-
- lib/slimmer/skin.rb
|
169
|
-
- lib/slimmer/app.rb
|
171
|
+
- lib/slimmer/processors/footer_remover.rb
|
170
172
|
- lib/slimmer/headers.rb
|
171
|
-
- lib/slimmer/
|
172
|
-
- lib/slimmer.rb
|
173
|
+
- lib/slimmer/version.rb
|
173
174
|
- Rakefile
|
174
|
-
- test/processors/related_items_inserter_test.rb
|
175
|
-
- test/processors/section_inserter_test.rb
|
176
|
-
- test/processors/google_analytics_test.rb
|
177
|
-
- test/processors/header_context_inserter_test.rb
|
178
|
-
- test/processors/body_inserter_test.rb
|
179
|
-
- test/processors/logo_class_inserter_test.rb
|
180
|
-
- test/processors/search_path_setter_test.rb
|
181
|
-
- test/skin_test.rb
|
182
175
|
- test/headers_test.rb
|
183
|
-
- test/
|
184
|
-
- test/typical_usage_test.rb
|
176
|
+
- test/fixtures/related.raw.html.erb
|
185
177
|
- test/fixtures/500.html.erb
|
186
178
|
- test/fixtures/404.html.erb
|
187
|
-
- test/fixtures/related.raw.html.erb
|
188
179
|
- test/fixtures/wrapper.html.erb
|
180
|
+
- test/fixtures/report_a_problem.raw.html.erb
|
181
|
+
- test/skin_test.rb
|
182
|
+
- test/processors/logo_class_inserter_test.rb
|
183
|
+
- test/processors/google_analytics_test.rb
|
184
|
+
- test/processors/report_a_problem_inserter_test.rb
|
185
|
+
- test/processors/body_inserter_test.rb
|
186
|
+
- test/processors/search_path_setter_test.rb
|
187
|
+
- test/processors/section_inserter_test.rb
|
188
|
+
- test/processors/related_items_inserter_test.rb
|
189
|
+
- test/processors/header_context_inserter_test.rb
|
190
|
+
- test/typical_usage_test.rb
|
191
|
+
- test/test_template_dependency_on_static_test.rb
|
189
192
|
- test/test_helper.rb
|
190
193
|
- bin/render_slimmer_error
|
191
194
|
homepage: http://github.com/alphagov/slimmer
|
@@ -201,7 +204,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
204
|
requirements:
|
202
205
|
- - ">="
|
203
206
|
- !ruby/object:Gem::Version
|
204
|
-
hash: -
|
207
|
+
hash: -2259214820452961452
|
205
208
|
segments:
|
206
209
|
- 0
|
207
210
|
version: "0"
|
@@ -210,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
213
|
requirements:
|
211
214
|
- - ">="
|
212
215
|
- !ruby/object:Gem::Version
|
213
|
-
hash: -
|
216
|
+
hash: -2259214820452961452
|
214
217
|
segments:
|
215
218
|
- 0
|
216
219
|
version: "0"
|
@@ -222,19 +225,21 @@ signing_key:
|
|
222
225
|
specification_version: 3
|
223
226
|
summary: Thinner than the skinner
|
224
227
|
test_files:
|
225
|
-
- test/processors/related_items_inserter_test.rb
|
226
|
-
- test/processors/section_inserter_test.rb
|
227
|
-
- test/processors/google_analytics_test.rb
|
228
|
-
- test/processors/header_context_inserter_test.rb
|
229
|
-
- test/processors/body_inserter_test.rb
|
230
|
-
- test/processors/logo_class_inserter_test.rb
|
231
|
-
- test/processors/search_path_setter_test.rb
|
232
|
-
- test/skin_test.rb
|
233
228
|
- test/headers_test.rb
|
234
|
-
- test/
|
235
|
-
- test/typical_usage_test.rb
|
229
|
+
- test/fixtures/related.raw.html.erb
|
236
230
|
- test/fixtures/500.html.erb
|
237
231
|
- test/fixtures/404.html.erb
|
238
|
-
- test/fixtures/related.raw.html.erb
|
239
232
|
- test/fixtures/wrapper.html.erb
|
233
|
+
- test/fixtures/report_a_problem.raw.html.erb
|
234
|
+
- test/skin_test.rb
|
235
|
+
- test/processors/logo_class_inserter_test.rb
|
236
|
+
- test/processors/google_analytics_test.rb
|
237
|
+
- test/processors/report_a_problem_inserter_test.rb
|
238
|
+
- test/processors/body_inserter_test.rb
|
239
|
+
- test/processors/search_path_setter_test.rb
|
240
|
+
- test/processors/section_inserter_test.rb
|
241
|
+
- test/processors/related_items_inserter_test.rb
|
242
|
+
- test/processors/header_context_inserter_test.rb
|
243
|
+
- test/typical_usage_test.rb
|
244
|
+
- test/test_template_dependency_on_static_test.rb
|
240
245
|
- test/test_helper.rb
|