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.
@@ -1,8 +1,8 @@
1
1
  class Slimmer::Processors::RelatedItemsInserter
2
2
  include ERB::Util
3
3
 
4
- def initialize(related_block_template, artefact)
5
- @related_block_template = related_block_template
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
- html = ERB.new(@related_block_template).result(binding)
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(template('related.raw'), artefact),
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 == 'related.raw'
9
- %{<div id="test-related-items"></div>}
8
+ if name =~ /\A(.*)\.raw\z/
9
+ %{<div id="test-#{$1}"></div>}
10
10
  else
11
11
  Slimmer::TestTemplate::TEMPLATE
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
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(@related_template, @artefact).filter(source, template)
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
- Slimmer::Processors::RelatedItemsInserter.new(@related_template, @artefact).filter(source, template)
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
@@ -68,6 +68,7 @@ class SlimmerIntegrationTest < MiniTest::Unit::TestCase
68
68
 
69
69
  use_template(template_name)
70
70
  use_template('related.raw')
71
+ use_template('report_a_problem.raw')
71
72
 
72
73
  fetch_page
73
74
  end
@@ -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.0.0
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-08-24 00:00:00 Z
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.9.12
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/version.rb
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/search_path_setter.rb
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/test_template.rb
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/test_template_dependency_on_static_test.rb
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: -3192498978421929573
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: -3192498978421929573
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/test_template_dependency_on_static_test.rb
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