draper 0.12.1 → 0.17.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,19 +1,30 @@
1
1
  require 'spec_helper'
2
+ require 'draper/test/view_context'
2
3
 
3
4
  describe Draper::ViewContext do
5
+ before(:each) do
6
+ Thread.current[:current_view_context] = nil
7
+ end
8
+
4
9
  let(:app_controller) { ApplicationController }
5
10
  let(:app_controller_instance) { app_controller.new }
6
11
 
7
- it "implements #set_current_view_context" do
8
- app_controller_instance.should respond_to(:set_current_view_context)
12
+ it "provides a method to create a view context while testing" do
13
+ Draper::ViewContext.should respond_to(:infect!)
9
14
  end
10
15
 
11
- it "calls #before_filter with #set_current_view_context" do
12
- app_controller.before_filters.should include(:set_current_view_context)
16
+ it "copies the controller's view context to draper" do
17
+ ctx = app_controller_instance.view_context
18
+ Draper::ViewContext.current.should == ctx
13
19
  end
14
20
 
15
- it "raises an exception if the view_context is fetched without being set" do
16
- Draper::ViewContext.current = nil
17
- expect {app_controller.current_view_context}.should raise_exception(Exception)
21
+ describe "view_context priming" do
22
+ let(:app_controller_instance) { double(ApplicationController, :view_context => view_context) }
23
+ let(:view_context) { double("ApplicationController#view_context") }
24
+
25
+ it "primes the view_context when nil" do
26
+ app_controller.should_receive(:new).and_return(app_controller_instance)
27
+ Draper::ViewContext.current.should == view_context
28
+ end
18
29
  end
19
30
  end
@@ -45,6 +45,10 @@ describe Rails::Generators::DecoratorGenerator do
45
45
  run_generator ["YourModel"]
46
46
  end
47
47
 
48
+ after do
49
+ Object.send(:remove_const, :ApplicationDecorator)
50
+ end
51
+
48
52
  subject { file('app/decorators/your_model_decorator.rb') }
49
53
  it { should exist }
50
54
  it { should contain "class YourModelDecorator < ApplicationDecorator" }
data/spec/spec_helper.rb CHANGED
@@ -1,26 +1,36 @@
1
- require 'rubygems'
2
1
  require 'bundler/setup'
3
2
  require 'ammeter/init'
4
3
  require 'rails'
5
4
 
5
+ require 'action_view'
6
+ require './spec/support/samples/application_controller'
7
+
6
8
  Bundler.require
7
9
 
8
10
  require './spec/support/samples/active_model'
9
11
  require './spec/support/samples/active_record'
10
- require './spec/support/samples/application_controller'
11
12
  require './spec/support/samples/application_helper'
12
13
  require './spec/support/samples/decorator'
13
14
  require './spec/support/samples/decorator_with_allows'
14
15
  require './spec/support/samples/decorator_with_multiple_allows'
15
16
  require './spec/support/samples/decorator_with_application_helper'
16
17
  require './spec/support/samples/decorator_with_denies'
18
+ require './spec/support/samples/decorator_with_denies_all'
19
+ require './spec/support/samples/decorator_with_special_methods'
17
20
  require './spec/support/samples/namespaced_product'
18
21
  require './spec/support/samples/namespaced_product_decorator'
19
22
  require './spec/support/samples/non_active_model_product'
20
23
  require './spec/support/samples/product'
21
24
  require './spec/support/samples/product_decorator'
25
+ require './spec/support/samples/sequel_product'
22
26
  require './spec/support/samples/specific_product_decorator'
23
27
  require './spec/support/samples/some_thing'
24
28
  require './spec/support/samples/some_thing_decorator'
25
29
  require './spec/support/samples/widget'
26
30
  require './spec/support/samples/widget_decorator'
31
+
32
+ module ActionController
33
+ class Base
34
+ Draper::System.setup(self)
35
+ end
36
+ end
@@ -1,7 +1,16 @@
1
1
  require './spec/support/samples/application_helper'
2
2
 
3
3
  module ActionController
4
- class Base
4
+ class AbstractController
5
+ def view_context
6
+ @view_context ||= ApplicationController
7
+ end
8
+
9
+ def view_context=(input)
10
+ @view_context = input
11
+ end
12
+ end
13
+ class Base < AbstractController
5
14
  @@before_filters = []
6
15
  def self.before_filters
7
16
  @@before_filters
@@ -12,22 +21,12 @@ module ActionController
12
21
  end
13
22
  end
14
23
 
15
- Draper::System.setup(:action_controller)
16
-
17
24
  class ApplicationController < ActionController::Base
18
25
  extend ActionView::Helpers
19
26
  extend ActionView::Helpers::TagHelper
20
27
  extend ActionView::Helpers::UrlHelper
21
28
  extend ApplicationHelper
22
29
 
23
- def view_context
24
- @view_context ||= ApplicationController
25
- end
26
-
27
- def view_context=(input)
28
- @view_context = input
29
- end
30
-
31
30
  def self.hello
32
31
  "Hello!"
33
32
  end
@@ -1,4 +1,7 @@
1
+ require 'active_support/core_ext/string/output_safety.rb'
1
2
  module ApplicationHelper
3
+ include ERB::Util
4
+
2
5
  def hello_world
3
6
  "Hello, World!"
4
7
  end
File without changes
@@ -18,4 +18,8 @@ class DecoratorWithApplicationHelper < Draper::Base
18
18
  def length
19
19
  "overridden"
20
20
  end
21
+
22
+ def sample_html_escaped_text
23
+ h.html_escape '<script>danger</script>'
24
+ end
21
25
  end
@@ -0,0 +1,3 @@
1
+ class DecoratorWithDeniesAll < Draper::Base
2
+ denies_all
3
+ end
@@ -0,0 +1,13 @@
1
+ class DecoratorWithSpecialMethods < Draper::Base
2
+ def to_param
3
+ "foo"
4
+ end
5
+
6
+ def id
7
+ 1337
8
+ end
9
+
10
+ def errors
11
+ ["omg errors!"]
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Sequel
2
+ class Model
3
+ def each
4
+ end
5
+ end
6
+ end
7
+
8
+ class SequelProduct < Sequel::Model
9
+ def some_attribute
10
+ "hello"
11
+ end
12
+ end
13
+
metadata CHANGED
@@ -1,188 +1,126 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: draper
3
- version: !ruby/object:Gem::Version
4
- hash: 45
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.17.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 12
9
- - 1
10
- version: 0.12.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jeff Casimir
14
9
  - Steve Klabnik
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2012-05-12 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
13
+ date: 2012-08-21 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: activesupport
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 2
32
- - 3
33
- - 10
34
- version: 2.3.10
35
- type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
- prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
49
- type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: rspec
53
- prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
55
18
  none: false
56
- requirements:
19
+ requirements:
57
20
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 2
62
- - 0
63
- version: "2.0"
21
+ - !ruby/object:Gem::Version
22
+ version: '3.2'
64
23
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: activesupport
68
24
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
70
26
  none: false
71
- requirements:
27
+ requirements:
72
28
  - - ~>
73
- - !ruby/object:Gem::Version
74
- hash: 5
75
- segments:
76
- - 3
77
- - 1
78
- - 3
79
- version: 3.1.3
80
- type: :runtime
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
29
+ - !ruby/object:Gem::Version
30
+ version: '3.2'
31
+ - !ruby/object:Gem::Dependency
83
32
  name: actionpack
84
- prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
86
34
  none: false
87
- requirements:
35
+ requirements:
88
36
  - - ~>
89
- - !ruby/object:Gem::Version
90
- hash: 5
91
- segments:
92
- - 3
93
- - 1
94
- - 3
95
- version: 3.1.3
37
+ - !ruby/object:Gem::Version
38
+ version: '3.2'
96
39
  type: :runtime
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
99
- name: ammeter
100
40
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
102
42
  none: false
103
- requirements:
43
+ requirements:
104
44
  - - ~>
105
- - !ruby/object:Gem::Version
106
- hash: 19
107
- segments:
108
- - 0
109
- - 2
110
- - 2
45
+ - !ruby/object:Gem::Version
46
+ version: '3.2'
47
+ - !ruby/object:Gem::Dependency
48
+ name: ammeter
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
111
54
  version: 0.2.2
112
55
  type: :development
113
- version_requirements: *id006
114
- - !ruby/object:Gem::Dependency
115
- name: guard
116
56
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - '='
61
+ - !ruby/object:Gem::Version
62
+ version: 0.2.2
63
+ - !ruby/object:Gem::Dependency
64
+ name: rake
65
+ requirement: !ruby/object:Gem::Requirement
118
66
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 3
123
- segments:
124
- - 0
125
- version: "0"
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: 0.9.2
126
71
  type: :development
127
- version_requirements: *id007
128
- - !ruby/object:Gem::Dependency
129
- name: guard-rspec
130
72
  prerelease: false
131
- requirement: &id008 !ruby/object:Gem::Requirement
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 0.9.2
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec
81
+ requirement: !ruby/object:Gem::Requirement
132
82
  none: false
133
- requirements:
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- hash: 3
137
- segments:
138
- - 0
139
- version: "0"
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: '2.10'
140
87
  type: :development
141
- version_requirements: *id008
142
- - !ruby/object:Gem::Dependency
143
- name: launchy
144
88
  prerelease: false
145
- requirement: &id009 !ruby/object:Gem::Requirement
89
+ version_requirements: !ruby/object:Gem::Requirement
146
90
  none: false
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- hash: 3
151
- segments:
152
- - 0
153
- version: "0"
154
- type: :development
155
- version_requirements: *id009
156
- - !ruby/object:Gem::Dependency
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '2.10'
95
+ - !ruby/object:Gem::Dependency
157
96
  name: yard
158
- prerelease: false
159
- requirement: &id010 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
160
98
  none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 0
167
- version: "0"
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
168
103
  type: :development
169
- version_requirements: *id010
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
170
111
  description: Draper implements a decorator or presenter pattern for Rails applications.
171
- email:
112
+ email:
172
113
  - jeff@casimircreative.com
173
114
  - steve@steveklabnik.com
174
115
  executables: []
175
-
176
116
  extensions: []
177
-
178
117
  extra_rdoc_files: []
179
-
180
- files:
118
+ files:
181
119
  - .gitignore
182
120
  - .rspec
183
121
  - .travis.yml
184
122
  - .yardopts
185
- - CHANGELOG.txt
123
+ - CHANGELOG.markdown
186
124
  - Gemfile
187
125
  - Guardfile
188
126
  - Rakefile
@@ -219,6 +157,9 @@ files:
219
157
  - lib/draper/railtie.rb
220
158
  - lib/draper/rspec_integration.rb
221
159
  - lib/draper/system.rb
160
+ - lib/draper/test/minitest_integration.rb
161
+ - lib/draper/test/rspec_integration.rb
162
+ - lib/draper/test/view_context.rb
222
163
  - lib/draper/version.rb
223
164
  - lib/draper/view_context.rb
224
165
  - lib/generators/decorator/decorator_generator.rb
@@ -246,12 +187,15 @@ files:
246
187
  - spec/support/samples/decorator_with_allows.rb
247
188
  - spec/support/samples/decorator_with_application_helper.rb
248
189
  - spec/support/samples/decorator_with_denies.rb
190
+ - spec/support/samples/decorator_with_denies_all.rb
249
191
  - spec/support/samples/decorator_with_multiple_allows.rb
192
+ - spec/support/samples/decorator_with_special_methods.rb
250
193
  - spec/support/samples/namespaced_product.rb
251
194
  - spec/support/samples/namespaced_product_decorator.rb
252
195
  - spec/support/samples/non_active_model_product.rb
253
196
  - spec/support/samples/product.rb
254
197
  - spec/support/samples/product_decorator.rb
198
+ - spec/support/samples/sequel_product.rb
255
199
  - spec/support/samples/some_thing.rb
256
200
  - spec/support/samples/some_thing_decorator.rb
257
201
  - spec/support/samples/specific_product_decorator.rb
@@ -259,38 +203,35 @@ files:
259
203
  - spec/support/samples/widget_decorator.rb
260
204
  homepage: http://github.com/jcasimir/draper
261
205
  licenses: []
262
-
263
206
  post_install_message:
264
207
  rdoc_options: []
265
-
266
- require_paths:
208
+ require_paths:
267
209
  - lib
268
- required_ruby_version: !ruby/object:Gem::Requirement
210
+ required_ruby_version: !ruby/object:Gem::Requirement
269
211
  none: false
270
- requirements:
271
- - - ">="
272
- - !ruby/object:Gem::Version
273
- hash: 3
274
- segments:
212
+ requirements:
213
+ - - ! '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ segments:
275
217
  - 0
276
- version: "0"
277
- required_rubygems_version: !ruby/object:Gem::Requirement
218
+ hash: 26927068821793701
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
278
220
  none: false
279
- requirements:
280
- - - ">="
281
- - !ruby/object:Gem::Version
282
- hash: 3
283
- segments:
221
+ requirements:
222
+ - - ! '>='
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ segments:
284
226
  - 0
285
- version: "0"
227
+ hash: 26927068821793701
286
228
  requirements: []
287
-
288
229
  rubyforge_project: draper
289
230
  rubygems_version: 1.8.24
290
231
  signing_key:
291
232
  specification_version: 3
292
233
  summary: Decorator pattern implementation for Rails.
293
- test_files:
234
+ test_files:
294
235
  - spec/draper/base_spec.rb
295
236
  - spec/draper/helper_support_spec.rb
296
237
  - spec/draper/model_support_spec.rb
@@ -305,12 +246,15 @@ test_files:
305
246
  - spec/support/samples/decorator_with_allows.rb
306
247
  - spec/support/samples/decorator_with_application_helper.rb
307
248
  - spec/support/samples/decorator_with_denies.rb
249
+ - spec/support/samples/decorator_with_denies_all.rb
308
250
  - spec/support/samples/decorator_with_multiple_allows.rb
251
+ - spec/support/samples/decorator_with_special_methods.rb
309
252
  - spec/support/samples/namespaced_product.rb
310
253
  - spec/support/samples/namespaced_product_decorator.rb
311
254
  - spec/support/samples/non_active_model_product.rb
312
255
  - spec/support/samples/product.rb
313
256
  - spec/support/samples/product_decorator.rb
257
+ - spec/support/samples/sequel_product.rb
314
258
  - spec/support/samples/some_thing.rb
315
259
  - spec/support/samples/some_thing_decorator.rb
316
260
  - spec/support/samples/specific_product_decorator.rb
data/CHANGELOG.txt DELETED
@@ -1,23 +0,0 @@
1
- = Draper Changelog
2
-
3
- = Master
4
-
5
- == 0.12.1
6
-
7
- * Added Changelog
8
-
9
- * Prevented double decoration, see #173
10
-
11
- * ActiveModel::Errors support, 19496f0c
12
-
13
- * Fixed autoloading issue, see #188
14
-
15
- * Re-did generators, see 9155e58f
16
-
17
- * Added capybara integration, see 57c8678e
18
-
19
- * Fixed a few bugs with the DecoratedEnumerableProxy
20
-
21
- == 0.11.1
22
-
23
- * Fixed regression, we don't want to introduce a hard dependency on Rails. #107