slimmer 5.0.0 → 5.0.1

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,8 @@
1
+ # 5.0.1
2
+
3
+ * Fix MetaViewportRemover to not raise an exception if there is no meta
4
+ viewport tag. Issue became apparent in 4.3.1.
5
+
1
6
  # 5.0.0
2
7
 
3
8
  This release contains breaking changes.
data/lib/slimmer.rb CHANGED
@@ -1,8 +1,3 @@
1
- #.....................................................
2
- #"""""" Look, Gradiented-Rounded corners.... """""
3
- #////////////////////////////////////////////////////////////////
4
- ###################################################################
5
-
6
1
  require 'nokogiri'
7
2
  require 'erb'
8
3
  require 'plek'
@@ -52,8 +47,3 @@ module Slimmer
52
47
  class TemplateNotFoundException < StandardError; end
53
48
  class CouldNotRetrieveTemplate < StandardError; end
54
49
  end
55
-
56
- ######################################################################
57
- #///////////////////////////////////////////////////////////////////
58
- #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
59
- #.......................................................
data/lib/slimmer/app.rb CHANGED
@@ -94,6 +94,8 @@ module Slimmer
94
94
  @skin.success request, response, s(response.body)
95
95
  when 404
96
96
  @skin.error '404', s(response.body), request.env
97
+ when 410
98
+ @skin.error '410', s(response.body), request.env
97
99
  else
98
100
  @skin.error '500', s(response.body), request.env
99
101
  end
@@ -1,13 +1,19 @@
1
1
  module Slimmer::Processors
2
2
  class MetaViewportRemover
3
- def initialize(response)
4
- @response = response
3
+ def initialize(skin, headers)
4
+ @skin = skin
5
+ @headers = headers
5
6
  end
6
7
 
7
- def filter(src, dest)
8
- if @response.headers[Slimmer::Headers::REMOVE_META_VIEWPORT] == "true"
9
- dest.at_xpath('//head//meta[@name="viewport"]').remove
8
+ def filter(content_document, page_template)
9
+ if should_remove_meta_viewport?
10
+ viewport = page_template.at_xpath('//head//meta[@name="viewport"]')
11
+ viewport.remove if viewport
10
12
  end
11
13
  end
14
+
15
+ def should_remove_meta_viewport?
16
+ !! @headers[Slimmer::Headers::REMOVE_META_VIEWPORT]
17
+ end
12
18
  end
13
19
  end
data/lib/slimmer/skin.rb CHANGED
@@ -126,7 +126,7 @@ module Slimmer
126
126
  source_request.url,
127
127
  response.headers,
128
128
  wrapper_id),
129
- Processors::MetaViewportRemover.new(response),
129
+ Processors::MetaViewportRemover.new(self, response.headers),
130
130
  Processors::BetaNoticeInserter.new(self, response.headers),
131
131
  Processors::BetaLabelInserter.new(self, response.headers),
132
132
  Processors::AlphaLabelInserter.new(self, response.headers),
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '5.0.0'
2
+ VERSION = '5.0.1'
3
3
  end
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Slimmer, yay!</title>
5
+ </head>
6
+ <body>
7
+ <div class="content">
8
+ <header><h1>That's gone now, sorry.</h1></header>
9
+ <div id="wrapper" class="group">
10
+ </div>
11
+ </div>
12
+ </body>
13
+ </html>
@@ -12,12 +12,26 @@ class MetaViewportRemover < SlimmerIntegrationTest
12
12
  </html>
13
13
  END
14
14
 
15
+ NO_VIEWPORT_TEMPLATE = <<-END
16
+ <html>
17
+ <head>
18
+ </head>
19
+ <body>
20
+ <div><div id="wrapper"></div></div>
21
+ </body>
22
+ </html>
23
+ END
24
+
15
25
  def test_should_leave_all_content_as_it_is_if_there_is_not_a_meta_viewport_header_set
16
26
  given_response 200, TEMPLATE, {}
17
27
  assert_equal "<meta name=\"viewport\" content=\"width=device-width, intial-scale=1\">",
18
28
  Nokogiri::HTML.parse(last_response.body).at_xpath('//head//meta[@name="viewport"]').to_s
19
29
  end
20
30
 
31
+ def test_should_not_fail_if_there_is_no_viewport_meta
32
+ given_response 200, NO_VIEWPORT_TEMPLATE, {Slimmer::Headers::REMOVE_META_VIEWPORT => "true"}
33
+ end
34
+
21
35
  def test_should_remove_the_meta_viewport_if_the_relevant_header_is_set
22
36
  given_response 200, TEMPLATE, {Slimmer::Headers::REMOVE_META_VIEWPORT => "true"}
23
37
  assert_nil Nokogiri::HTML.parse(last_response.body).at_xpath('//head//meta[@name="viewport"]')
data/test/test_helper.rb CHANGED
@@ -85,6 +85,7 @@ class SlimmerIntegrationTest < MiniTest::Test
85
85
  template_name = case code
86
86
  when 200 then 'wrapper'
87
87
  when 404 then '404'
88
+ when 410 then '410'
88
89
  else '500'
89
90
  end
90
91
 
@@ -114,6 +115,7 @@ class SlimmerIntegrationTest < MiniTest::Test
114
115
  refute_match /#{Regexp.escape(content)}/, last_response.body
115
116
  end
116
117
 
118
+ # content can be a string or a Regexp
117
119
  def assert_rendered_in_template(selector, content=nil, message=nil)
118
120
  unless message
119
121
  if content
@@ -127,12 +129,9 @@ class SlimmerIntegrationTest < MiniTest::Test
127
129
  assert matched_elements.length > 0, message + ", but selector not found."
128
130
 
129
131
  if content
130
- if content.is_a?(Regexp)
131
- found_match = matched_elements.inject(false) { |had_match, element| had_match || element.inner_html.match(content) }
132
- else
133
- found_match = matched_elements.inject(false) { |had_match, element| had_match || element.inner_html == content }
134
- end
135
- assert found_match, message + ". The selector was found but not with \"#{content}\"."
132
+ inner_htmls = matched_elements.map(&:inner_html)
133
+ found_match = inner_htmls.grep(content).any? # grep matches strings or Regexps
134
+ assert found_match, message + ". The selector was found but with different content: \"#{inner_htmls.join('", ')}\""
136
135
  end
137
136
  end
138
137
 
@@ -284,8 +284,6 @@ module TypicalUsage
284
284
  end
285
285
 
286
286
  class Error500ResponseTest < SlimmerIntegrationTest
287
- include Rack::Test::Methods
288
-
289
287
  given_response 500, %{
290
288
  <html>
291
289
  <head><title>500 Error</title>
@@ -313,8 +311,6 @@ module TypicalUsage
313
311
  end
314
312
 
315
313
  class Error404ResponseTest < SlimmerIntegrationTest
316
- include Rack::Test::Methods
317
-
318
314
  given_response 404, %{
319
315
  <html>
320
316
  <head><title>404 Missing</title>
@@ -342,8 +338,6 @@ module TypicalUsage
342
338
  end
343
339
 
344
340
  class Error406ResponseTest < SlimmerIntegrationTest
345
- include Rack::Test::Methods
346
-
347
341
  given_response 406, %{
348
342
  <html>
349
343
  <head><title>406 Not Acceptable</title>
@@ -370,6 +364,33 @@ module TypicalUsage
370
364
  end
371
365
  end
372
366
 
367
+ class Error410ResponseTest < SlimmerIntegrationTest
368
+ given_response 410, %{
369
+ <html>
370
+ <head><title>410 Gone</title>
371
+ <meta name="something" content="yes">
372
+ <script src="blah.js"></script>
373
+ <link href="app.css" rel="stylesheet" type="text/css">
374
+ </head>
375
+ <body class="body_class">
376
+ <div id="wrapper"><p class='message'>Something bad happened</p></div>
377
+ </body>
378
+ </html>
379
+ }
380
+
381
+ def test_should_not_replace_the_wrapper_using_the_app_response
382
+ assert_not_rendered_in_template "Something bad happened"
383
+ end
384
+
385
+ def test_should_include_default_410_error_message
386
+ assert_rendered_in_template "body .content header h1", "That's gone now, sorry."
387
+ end
388
+
389
+ def test_should_replace_the_title_using_the_app_response
390
+ assert_rendered_in_template "head title", "410 Gone"
391
+ end
392
+ end
393
+
373
394
  class ArbitraryWrapperIdTest < SlimmerIntegrationTest
374
395
 
375
396
  given_response 200, %{
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: 5.0.0
4
+ version: 5.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-09-01 00:00:00.000000000 Z
13
+ date: 2014-11-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
17
- requirement: &12577020 !ruby/object:Gem::Requirement
17
+ requirement: &7909580 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.5.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *12577020
25
+ version_requirements: *7909580
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rack
28
- requirement: &12591820 !ruby/object:Gem::Requirement
28
+ requirement: &7937280 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,21 +33,21 @@ dependencies:
33
33
  version: 1.3.5
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *12591820
36
+ version_requirements: *7937280
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: plek
39
- requirement: &12590680 !ruby/object:Gem::Requirement
39
+ requirement: &7936200 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
43
43
  - !ruby/object:Gem::Version
44
- version: 0.1.8
44
+ version: 1.1.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *12590680
47
+ version_requirements: *7936200
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: json
50
- requirement: &12590040 !ruby/object:Gem::Requirement
50
+ requirement: &7934600 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *12590040
58
+ version_requirements: *7934600
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: null_logger
61
- requirement: &12588580 !ruby/object:Gem::Requirement
61
+ requirement: &7933600 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *12588580
69
+ version_requirements: *7933600
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rest-client
72
- requirement: &12587020 !ruby/object:Gem::Requirement
72
+ requirement: &7931940 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *12587020
80
+ version_requirements: *7931940
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activesupport
83
- requirement: &12584640 !ruby/object:Gem::Requirement
83
+ requirement: &7931220 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *12584640
91
+ version_requirements: *7931220
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: minitest
94
- requirement: &12597700 !ruby/object:Gem::Requirement
94
+ requirement: &7943920 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '5.4'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *12597700
102
+ version_requirements: *7943920
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
- requirement: &12596600 !ruby/object:Gem::Requirement
105
+ requirement: &7942880 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 0.9.2.2
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *12596600
113
+ version_requirements: *7942880
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rack-test
116
- requirement: &12595940 !ruby/object:Gem::Requirement
116
+ requirement: &7940820 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 0.6.1
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *12595940
124
+ version_requirements: *7940820
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: mocha
127
- requirement: &12595260 !ruby/object:Gem::Requirement
127
+ requirement: &7939500 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: '1.1'
133
133
  type: :development
134
134
  prerelease: false
135
- version_requirements: *12595260
135
+ version_requirements: *7939500
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: webmock
138
- requirement: &12594540 !ruby/object:Gem::Requirement
138
+ requirement: &7938000 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - =
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: 1.18.0
144
144
  type: :development
145
145
  prerelease: false
146
- version_requirements: *12594540
146
+ version_requirements: *7938000
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: therubyracer
149
- requirement: &12593820 !ruby/object:Gem::Requirement
149
+ requirement: &7965480 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ~>
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: 0.10.2
155
155
  type: :development
156
156
  prerelease: false
157
- version_requirements: *12593820
157
+ version_requirements: *7965480
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: gem_publisher
160
- requirement: &12593040 !ruby/object:Gem::Requirement
160
+ requirement: &7963760 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ~>
@@ -165,10 +165,10 @@ dependencies:
165
165
  version: 1.1.1
166
166
  type: :development
167
167
  prerelease: false
168
- version_requirements: *12593040
168
+ version_requirements: *7963760
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: gds-api-adapters
171
- requirement: &12607680 !ruby/object:Gem::Requirement
171
+ requirement: &7962140 !ruby/object:Gem::Requirement
172
172
  none: false
173
173
  requirements:
174
174
  - - =
@@ -176,10 +176,10 @@ dependencies:
176
176
  version: 2.7.1
177
177
  type: :development
178
178
  prerelease: false
179
- version_requirements: *12607680
179
+ version_requirements: *7962140
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: timecop
182
- requirement: &12606600 !ruby/object:Gem::Requirement
182
+ requirement: &7961060 !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
185
185
  - - ~>
@@ -187,7 +187,7 @@ dependencies:
187
187
  version: 0.5.1
188
188
  type: :development
189
189
  prerelease: false
190
- version_requirements: *12606600
190
+ version_requirements: *7961060
191
191
  description: Rack middleware for skinning pages using a specific template
192
192
  email:
193
193
  - bengriffiths@gmail.com
@@ -248,6 +248,7 @@ files:
248
248
  - test/fixtures/wrapper.html.erb
249
249
  - test/fixtures/500.html.erb
250
250
  - test/fixtures/proposition_menu.html.erb
251
+ - test/fixtures/410.html.erb
251
252
  - test/fixtures/alpha_label.html.erb
252
253
  - test/fixtures/404.html.erb
253
254
  - test/fixtures/report_a_problem.raw.html.erb
@@ -287,7 +288,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
288
  version: '0'
288
289
  segments:
289
290
  - 0
290
- hash: 4596273305865996013
291
+ hash: 4210104477749647125
291
292
  required_rubygems_version: !ruby/object:Gem::Requirement
292
293
  none: false
293
294
  requirements:
@@ -296,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
297
  version: '0'
297
298
  segments:
298
299
  - 0
299
- hash: 4596273305865996013
300
+ hash: 4210104477749647125
300
301
  requirements: []
301
302
  rubyforge_project: slimmer
302
303
  rubygems_version: 1.8.11
@@ -313,6 +314,7 @@ test_files:
313
314
  - test/fixtures/wrapper.html.erb
314
315
  - test/fixtures/500.html.erb
315
316
  - test/fixtures/proposition_menu.html.erb
317
+ - test/fixtures/410.html.erb
316
318
  - test/fixtures/alpha_label.html.erb
317
319
  - test/fixtures/404.html.erb
318
320
  - test/fixtures/report_a_problem.raw.html.erb