slimmer 1.1.29 → 1.1.30

Sign up to get free protection for your applications and to get access to all the features.
@@ -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