slimmer 1.1.29 → 1.1.30

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.
@@ -23,15 +23,32 @@ module Slimmer
23
23
 
24
24
  def call(env)
25
25
  logger.debug "Slimmer: capturing response"
26
- response_array = @app.call(env)
27
- if response_array[1][SKIP_HEADER]
26
+ backend_response = @app.call(env)
27
+
28
+ if in_development? and skip_slimmer_param?(env)
29
+ logger.debug "Slimmer: Asked to skip slimmer via skip_slimmer param"
30
+ return backend_response
31
+ elsif skip_slimmer_header?(backend_response)
28
32
  logger.debug "Slimmer: Asked to skip slimmer via HTTP header"
29
- response_array
33
+ return backend_response
30
34
  else
31
- rewrite_response(env, response_array)
35
+ rewrite_response(env, backend_response)
32
36
  end
33
37
  end
34
-
38
+
39
+ def in_development?
40
+ ENV['RAILS_ENV'] == 'development'
41
+ end
42
+
43
+ def skip_slimmer_param?(env)
44
+ skip = Rack::Request.new(env).params['skip_slimmer']
45
+ skip and skip.to_i > 0
46
+ end
47
+
48
+ def skip_slimmer_header?(backend_response)
49
+ !! backend_response[1][SKIP_HEADER]
50
+ end
51
+
35
52
  def on_success(source_request, request, body)
36
53
  @skin.success(source_request, request, body)
37
54
  end
@@ -68,6 +85,7 @@ module Slimmer
68
85
  logger.debug "Slimmer: constructing request headers object"
69
86
  request = Rack::Request.new(headers)
70
87
  content_type = headers['Content-Type'] || headers['content-type']
88
+
71
89
  logger.debug "Slimmer: Content-Type: #{content_type}"
72
90
  if content_type =~ /text\/html/
73
91
  logger.debug "Slimmer: Status code = #{status}"
@@ -1,6 +1,6 @@
1
1
  require 'gds_api/helpers'
2
2
 
3
- class RelatedItemsInserter
3
+ class Slimmer::RelatedItemsInserter
4
4
  include GdsApi::Helpers
5
5
  include ERB::Util
6
6
 
@@ -170,7 +170,7 @@ module Slimmer
170
170
  GoogleAnalyticsConfigurator.new(request.env),
171
171
  RelatedItemsInserter.new(template('related.raw'), source_request),
172
172
  ]
173
-
173
+
174
174
  template_name = request.env.has_key?(TEMPLATE_HEADER) ? request.env[TEMPLATE_HEADER] : 'wrapper'
175
175
  process(processors,body,template(template_name))
176
176
  end
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '1.1.29'
2
+ VERSION = '1.1.30'
3
3
  end
@@ -27,7 +27,7 @@ end
27
27
  class SlimmerIntegrationTest < MiniTest::Unit::TestCase
28
28
  include Rack::Test::Methods
29
29
 
30
- def self.given_response(code, body, headers={}, url="/")
30
+ def self.given_response(code, body, headers={})
31
31
  define_method(:app) do
32
32
  inner_app = proc { |env|
33
33
  [code, headers.merge("Content-Type" => "text/html"), body]
@@ -39,8 +39,7 @@ class SlimmerIntegrationTest < MiniTest::Unit::TestCase
39
39
  WebMock.reset!
40
40
  end
41
41
 
42
- define_method(:setup) do
43
- additional_setup if self.class.method_defined? :additional_setup
42
+ define_method(:setup_template) do
44
43
  template_name = case code
45
44
  when 200 then 'wrapper'
46
45
  when 404 then '404'
@@ -49,10 +48,18 @@ class SlimmerIntegrationTest < MiniTest::Unit::TestCase
49
48
 
50
49
  use_template(template_name)
51
50
  use_template('related.raw')
52
- get url
53
51
  end
54
52
  end
55
53
 
54
+ def setup
55
+ setup_template if respond_to? :setup_template
56
+ fetch_page
57
+ end
58
+
59
+ def fetch_page
60
+ get "/"
61
+ end
62
+
56
63
  def use_template(template_name)
57
64
  template = File.read File.dirname(__FILE__) + "/fixtures/#{template_name}.html.erb"
58
65
  stub_request(:get, "http://template.local/templates/#{template_name}.html.erb").
@@ -10,6 +10,35 @@ module TypicalUsage
10
10
  assert_equal "Don't template me", last_response.body
11
11
  end
12
12
  end
13
+
14
+ class SkipUsingQueryParamTest < SlimmerIntegrationTest
15
+ given_response 200, %{<html><body><div id='unskinned'>Unskinned</div><div id="wrapper">Don't template me</div></body></html>}, {}
16
+
17
+ def fetch_page; end
18
+
19
+ def with_rails_env(new_env, &block)
20
+ old_env, ENV['RAILS_ENV'] = ENV['RAILS_ENV'], new_env
21
+ begin
22
+ yield
23
+ ensure
24
+ ENV['RAILS_ENV'] = old_env
25
+ end
26
+ end
27
+
28
+ def test_should_return_the_response_as_is_in_development
29
+ with_rails_env('development') do
30
+ get "/some-slug?skip_slimmer=1"
31
+ end
32
+ assert_rendered_in_template '#unskinned', "Unskinned"
33
+ end
34
+
35
+ def test_not_skip_slimmer_in_production
36
+ with_rails_env('production') do
37
+ get "/some-slug?skip_slimmer=1"
38
+ end
39
+ assert_rendered_in_template '#wrapper', "Don't template me"
40
+ end
41
+ end
13
42
 
14
43
  class ContentLengthTest < SlimmerIntegrationTest
15
44
  given_response 200, %{
@@ -82,7 +111,7 @@ module TypicalUsage
82
111
  class ResponseWithRelatedItemsTest < SlimmerIntegrationTest
83
112
  include GdsApi::TestHelpers::Panopticon
84
113
 
85
- def additional_setup
114
+ def setup
86
115
  panopticon_has_metadata(
87
116
  'slug' => 'some-slug',
88
117
  'title' => 'Example document',
@@ -96,6 +125,7 @@ module TypicalUsage
96
125
  }
97
126
  ]
98
127
  )
128
+ super
99
129
  end
100
130
  end
101
131
 
@@ -106,7 +136,11 @@ module TypicalUsage
106
136
  <div id="wrapper">The body of the page<div id="related-items"></div></div>
107
137
  </body>
108
138
  </html>
109
- }, {}, "/some-slug"
139
+ }, {}
140
+
141
+ def fetch_page
142
+ get "/some-slug"
143
+ end
110
144
 
111
145
  def test_should_insert_related_items_block
112
146
  assert_rendered_in_template "div.related nav li.guide a", "How to test computer software automatically &amp; ensure that 2&gt;1"
@@ -121,7 +155,11 @@ module TypicalUsage
121
155
  <div id="wrapper">The body of the page<div id="related-items"></div></div>
122
156
  </body>
123
157
  </html>
124
- }, {}, "/some-slug"
158
+ }, {}
159
+
160
+ def fetch_page
161
+ get "/some-slug"
162
+ end
125
163
 
126
164
  def test_should_not_insert_related_items_block
127
165
  assert_rendered_in_template "div#related-items", ""
@@ -262,8 +300,9 @@ module TypicalUsage
262
300
  </html>
263
301
  }
264
302
 
265
- def additional_setup
266
- RelatedItemsInserter.any_instance.stubs(:metadata_from_panopticon).raises(GdsApi::TimedOutException)
303
+ def setup
304
+ ::Slimmer::RelatedItemsInserter.any_instance.stubs(:metadata_from_panopticon).raises(GdsApi::TimedOutException)
305
+ super
267
306
  end
268
307
 
269
308
  def test_should_return_503_if_an_API_call_times_out
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.1.29
5
+ version: 1.1.30
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-01-31 00:00:00 Z
14
+ date: 2012-02-02 00:00:00 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: nokogiri
@@ -193,7 +193,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
193
  requirements:
194
194
  - - ">="
195
195
  - !ruby/object:Gem::Version
196
- hash: 582425073
196
+ hash: -400948941029337357
197
197
  segments:
198
198
  - 0
199
199
  version: "0"
@@ -202,14 +202,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  requirements:
203
203
  - - ">="
204
204
  - !ruby/object:Gem::Version
205
- hash: 582425073
205
+ hash: -400948941029337357
206
206
  segments:
207
207
  - 0
208
208
  version: "0"
209
209
  requirements: []
210
210
 
211
211
  rubyforge_project: slimmer
212
- rubygems_version: 1.8.12
212
+ rubygems_version: 1.8.13
213
213
  signing_key:
214
214
  specification_version: 3
215
215
  summary: Thinner than the skinner