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.
- data/lib/slimmer/app.rb +23 -5
- data/lib/slimmer/related_items_inserter.rb +1 -1
- data/lib/slimmer/skin.rb +1 -1
- data/lib/slimmer/version.rb +1 -1
- data/test/test_helper.rb +11 -4
- data/test/typical_usage_test.rb +44 -5
- metadata +5 -5
data/lib/slimmer/app.rb
CHANGED
@@ -23,15 +23,32 @@ module Slimmer
|
|
23
23
|
|
24
24
|
def call(env)
|
25
25
|
logger.debug "Slimmer: capturing response"
|
26
|
-
|
27
|
-
|
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
|
-
|
33
|
+
return backend_response
|
30
34
|
else
|
31
|
-
rewrite_response(env,
|
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}"
|
data/lib/slimmer/skin.rb
CHANGED
@@ -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
|
data/lib/slimmer/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -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={}
|
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(:
|
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").
|
data/test/typical_usage_test.rb
CHANGED
@@ -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
|
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
|
-
}, {}
|
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 & ensure that 2>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
|
-
}, {}
|
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
|
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.
|
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-
|
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:
|
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:
|
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.
|
212
|
+
rubygems_version: 1.8.13
|
213
213
|
signing_key:
|
214
214
|
specification_version: 3
|
215
215
|
summary: Thinner than the skinner
|