draper 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.travis.yml +0 -1
  2. data/Gemfile +3 -3
  3. data/Rakefile +8 -8
  4. data/Readme.markdown +41 -22
  5. data/doc/css/full_list.css +2 -2
  6. data/doc/css/style.css +30 -30
  7. data/doc/js/app.js +10 -10
  8. data/doc/js/full_list.js +8 -8
  9. data/draper.gemspec +2 -2
  10. data/lib/draper.rb +1 -1
  11. data/lib/draper/base.rb +65 -22
  12. data/lib/draper/decorated_enumerable_proxy.rb +6 -1
  13. data/lib/draper/model_support.rb +2 -2
  14. data/lib/draper/railtie.rb +19 -0
  15. data/lib/draper/system.rb +7 -4
  16. data/lib/draper/version.rb +1 -1
  17. data/lib/generators/draper/decorator/decorator_generator.rb +26 -4
  18. data/lib/generators/draper/decorator/templates/decorator.rb +2 -2
  19. data/lib/generators/{rspec → draper/decorator}/templates/decorator_spec.rb +1 -1
  20. data/lib/generators/{test_unit → draper/decorator}/templates/decorator_test.rb +1 -1
  21. data/lib/generators/draper/install/install_generator.rb +6 -6
  22. data/lib/generators/rails/decorator_generator.rb +3 -3
  23. data/performance/bechmark.rb +5 -5
  24. data/performance/decorators.rb +4 -4
  25. data/performance/models.rb +2 -2
  26. data/spec/draper/base_spec.rb +176 -10
  27. data/spec/draper/helper_support_spec.rb +1 -1
  28. data/spec/draper/model_support_spec.rb +23 -14
  29. data/spec/draper/view_context_spec.rb +4 -4
  30. data/spec/generators/draper/decorator/decorator_generator_spec.rb +81 -1
  31. data/spec/generators/draper/install/install_generator_spec.rb +5 -5
  32. data/spec/spec_helper.rb +3 -0
  33. data/spec/support/samples/application_controller.rb +8 -11
  34. data/spec/support/samples/decorator_with_allows.rb +1 -1
  35. data/spec/support/samples/decorator_with_application_helper.rb +5 -5
  36. data/spec/support/samples/decorator_with_denies.rb +1 -1
  37. data/spec/support/samples/decorator_with_multiple_allows.rb +4 -0
  38. data/spec/support/samples/product.rb +28 -7
  39. data/spec/support/samples/some_thing.rb +2 -0
  40. data/spec/support/samples/some_thing_decorator.rb +3 -0
  41. metadata +62 -37
  42. data/lib/generators/rspec/decorator_generator.rb +0 -11
  43. data/lib/generators/test_unit/decorator_generator.rb +0 -11
  44. data/spec/generators/rspec/decorator_generator_spec.rb +0 -22
  45. data/spec/generators/test_unit/decorator_generator_spec.rb +0 -22
@@ -19,24 +19,24 @@ describe Draper::InstallGenerator do
19
19
  it { should contain "class ApplicationDecorator < Draper::Base" }
20
20
  end
21
21
  end
22
-
22
+
23
23
  describe 'spec/decorators/application_decorator_spec.rb' do
24
24
  subject { file('spec/decorators/application_decorator_spec.rb') }
25
25
  it { should exist }
26
26
  it { should contain "describe ApplicationDecorator do" }
27
27
  end
28
28
  end
29
-
29
+
30
30
  context "using test_unit" do
31
31
  before { run_generator ["", "-t=test_unit"] }
32
-
32
+
33
33
  it_should_behave_like "ApplicationDecoratorGenerator"
34
-
34
+
35
35
  describe 'spec/decorators/application_decorator_spec.rb' do
36
36
  subject { file('spec/decorators/application_decorator_spec.rb') }
37
37
  it { should_not exist }
38
38
  end
39
-
39
+
40
40
  describe 'spec/decorators/application_decorator_test.rb' do
41
41
  subject { file('test/decorators/application_decorator_test.rb') }
42
42
  it { should exist }
@@ -7,6 +7,7 @@ require './spec/support/samples/application_controller.rb'
7
7
  require './spec/support/samples/application_helper.rb'
8
8
  require './spec/support/samples/decorator.rb'
9
9
  require './spec/support/samples/decorator_with_allows.rb'
10
+ require './spec/support/samples/decorator_with_multiple_allows.rb'
10
11
  require './spec/support/samples/decorator_with_application_helper.rb'
11
12
  require './spec/support/samples/decorator_with_denies.rb'
12
13
  require './spec/support/samples/namespaced_product.rb'
@@ -14,5 +15,7 @@ require './spec/support/samples/namespaced_product_decorator.rb'
14
15
  require './spec/support/samples/product.rb'
15
16
  require './spec/support/samples/product_decorator.rb'
16
17
  require './spec/support/samples/specific_product_decorator.rb'
18
+ require './spec/support/samples/some_thing.rb'
19
+ require './spec/support/samples/some_thing_decorator.rb'
17
20
  require './spec/support/samples/widget.rb'
18
21
  require './spec/support/samples/widget_decorator.rb'
@@ -9,38 +9,35 @@ module ActionController
9
9
  def self.before_filter(name)
10
10
  @@before_filters << name
11
11
  end
12
- def self.helper(mod)
13
- extend mod
14
- end
15
12
  end
16
13
  end
17
14
 
15
+ Draper::System.setup(:action_controller)
16
+
18
17
  class ApplicationController < ActionController::Base
19
18
  extend ActionView::Helpers
20
19
  extend ActionView::Helpers::TagHelper
21
20
  extend ActionView::Helpers::UrlHelper
22
- extend ApplicationHelper
23
-
21
+ extend ApplicationHelper
22
+
24
23
  def view_context
25
24
  @view_context ||= ApplicationController
26
25
  end
27
-
26
+
28
27
  def view_context=(input)
29
28
  @view_context = input
30
29
  end
31
-
30
+
32
31
  def self.hello
33
32
  "Hello!"
34
33
  end
35
-
34
+
36
35
  def self.capture(&block)
37
36
  @@capture = true
38
37
  block.call
39
38
  end
40
-
39
+
41
40
  def self.capture_triggered
42
41
  @@capture ||= false
43
42
  end
44
43
  end
45
-
46
- Draper::System.setup
@@ -1,3 +1,3 @@
1
- class DecoratorWithAllows < Draper::Base
1
+ class DecoratorWithAllows < Draper::Base
2
2
  allows :goodnight_moon
3
3
  end
@@ -1,20 +1,20 @@
1
- class DecoratorWithApplicationHelper < Draper::Base
1
+ class DecoratorWithApplicationHelper < Draper::Base
2
2
  def uses_hello_world
3
3
  h.hello_world
4
4
  end
5
-
5
+
6
6
  def sample_content
7
7
  h.content_tag :span, "Hello, World!"
8
8
  end
9
-
9
+
10
10
  def sample_link
11
11
  h.link_to "Hello", "/World"
12
12
  end
13
-
13
+
14
14
  def sample_truncate
15
15
  h.truncate("Once upon a time", :length => 7)
16
16
  end
17
-
17
+
18
18
  def length
19
19
  "overridden"
20
20
  end
@@ -1,3 +1,3 @@
1
- class DecoratorWithDenies < Draper::Base
1
+ class DecoratorWithDenies < Draper::Base
2
2
  denies :goodnight_moon, :title
3
3
  end
@@ -0,0 +1,4 @@
1
+ class DecoratorWithMultipleAllows < Draper::Base
2
+ allows :goodnight_moon
3
+ allows :hello_world
4
+ end
@@ -1,6 +1,10 @@
1
1
  class Product < ActiveRecord::Base
2
2
  include Draper::ModelSupport
3
3
 
4
+ def self.find_by_name(name)
5
+ @@dummy ||= Product.new
6
+ end
7
+
4
8
  def self.first
5
9
  @@first ||= Product.new
6
10
  end
@@ -8,7 +12,7 @@ class Product < ActiveRecord::Base
8
12
  def self.last
9
13
  @@last ||= Product.new
10
14
  end
11
-
15
+
12
16
  def self.all
13
17
  [Product.new, Product.new]
14
18
  end
@@ -24,29 +28,33 @@ class Product < ActiveRecord::Base
24
28
  def self.find(id)
25
29
  return Product.new
26
30
  end
27
-
31
+
28
32
  def self.sample_class_method
29
33
  "sample class method"
30
34
  end
31
-
35
+
32
36
  def hello_world
33
37
  "Hello, World"
34
38
  end
35
-
39
+
36
40
  def goodnight_moon
37
41
  "Goodnight, Moon"
38
42
  end
39
-
43
+
40
44
  def title
41
45
  "Sample Title"
42
46
  end
43
-
47
+
48
+ def some_action
49
+ self.nonexistant_method
50
+ end
51
+
44
52
  def block
45
53
  yield
46
54
  end
47
55
 
48
56
  def self.reflect_on_association(association_symbol)
49
- OpenStruct.new(:klass => self)
57
+ association_symbol.to_s.starts_with?("poro") ? nil : OpenStruct.new(:klass => self)
50
58
  end
51
59
 
52
60
  def similar_products
@@ -56,4 +64,17 @@ class Product < ActiveRecord::Base
56
64
  def previous_version
57
65
  Product.new
58
66
  end
67
+
68
+ def thing
69
+ SomeThing.new
70
+ end
71
+
72
+ def poro_similar_products
73
+ [Product.new, Product.new]
74
+ end
75
+
76
+ def poro_previous_version
77
+ Product.new
78
+ end
79
+
59
80
  end
@@ -0,0 +1,2 @@
1
+ class SomeThing < Product
2
+ end
@@ -0,0 +1,3 @@
1
+ class SomeThingDecorator < Draper::Base
2
+ decorates :some_thing
3
+ end
metadata CHANGED
@@ -1,34 +1,50 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: draper
3
- version: !ruby/object:Gem::Version
4
- version: 0.10.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 51
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 11
9
+ - 0
10
+ version: 0.11.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jeff Casimir
14
+ - Steve Klabnik
9
15
  autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
- date: 2012-01-16 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2012-03-14 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: activesupport
16
- requirement: &70130732077940 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 2
32
+ - 3
33
+ - 10
21
34
  version: 2.3.10
22
35
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70130732077940
36
+ version_requirements: *id001
25
37
  description: Draper implements a decorator or presenter pattern for Rails applications.
26
- email:
38
+ email:
27
39
  - jeff@casimircreative.com
40
+ - steve@steveklabnik.com
28
41
  executables: []
42
+
29
43
  extensions: []
44
+
30
45
  extra_rdoc_files: []
31
- files:
46
+
47
+ files:
32
48
  - .gitignore
33
49
  - .rspec
34
50
  - .travis.yml
@@ -65,6 +81,7 @@ files:
65
81
  - lib/draper/helper_support.rb
66
82
  - lib/draper/lazy_helpers.rb
67
83
  - lib/draper/model_support.rb
84
+ - lib/draper/railtie.rb
68
85
  - lib/draper/rspec_integration.rb
69
86
  - lib/draper/system.rb
70
87
  - lib/draper/version.rb
@@ -72,15 +89,13 @@ files:
72
89
  - lib/generators/draper/decorator/USAGE
73
90
  - lib/generators/draper/decorator/decorator_generator.rb
74
91
  - lib/generators/draper/decorator/templates/decorator.rb
92
+ - lib/generators/draper/decorator/templates/decorator_spec.rb
93
+ - lib/generators/draper/decorator/templates/decorator_test.rb
75
94
  - lib/generators/draper/install/install_generator.rb
76
95
  - lib/generators/draper/install/templates/application_decorator.rb
77
96
  - lib/generators/draper/install/templates/application_decorator_spec.rb
78
97
  - lib/generators/draper/install/templates/application_decorator_test.rb
79
98
  - lib/generators/rails/decorator_generator.rb
80
- - lib/generators/rspec/decorator_generator.rb
81
- - lib/generators/rspec/templates/decorator_spec.rb
82
- - lib/generators/test_unit/decorator_generator.rb
83
- - lib/generators/test_unit/templates/decorator_test.rb
84
99
  - performance/active_record.rb
85
100
  - performance/bechmark.rb
86
101
  - performance/decorators.rb
@@ -91,8 +106,6 @@ files:
91
106
  - spec/draper/view_context_spec.rb
92
107
  - spec/generators/draper/decorator/decorator_generator_spec.rb
93
108
  - spec/generators/draper/install/install_generator_spec.rb
94
- - spec/generators/rspec/decorator_generator_spec.rb
95
- - spec/generators/test_unit/decorator_generator_spec.rb
96
109
  - spec/spec_helper.rb
97
110
  - spec/support/samples/active_record.rb
98
111
  - spec/support/samples/application_controller.rb
@@ -101,46 +114,56 @@ files:
101
114
  - spec/support/samples/decorator_with_allows.rb
102
115
  - spec/support/samples/decorator_with_application_helper.rb
103
116
  - spec/support/samples/decorator_with_denies.rb
117
+ - spec/support/samples/decorator_with_multiple_allows.rb
104
118
  - spec/support/samples/namespaced_product.rb
105
119
  - spec/support/samples/namespaced_product_decorator.rb
106
120
  - spec/support/samples/product.rb
107
121
  - spec/support/samples/product_decorator.rb
122
+ - spec/support/samples/some_thing.rb
123
+ - spec/support/samples/some_thing_decorator.rb
108
124
  - spec/support/samples/specific_product_decorator.rb
109
125
  - spec/support/samples/widget.rb
110
126
  - spec/support/samples/widget_decorator.rb
111
127
  homepage: http://github.com/jcasimir/draper
112
128
  licenses: []
129
+
113
130
  post_install_message:
114
131
  rdoc_options: []
115
- require_paths:
132
+
133
+ require_paths:
116
134
  - lib
117
- required_ruby_version: !ruby/object:Gem::Requirement
135
+ required_ruby_version: !ruby/object:Gem::Requirement
118
136
  none: false
119
- requirements:
120
- - - ! '>='
121
- - !ruby/object:Gem::Version
122
- version: '0'
123
- required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
145
  none: false
125
- requirements:
126
- - - ! '>='
127
- - !ruby/object:Gem::Version
128
- version: '0'
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
129
153
  requirements: []
154
+
130
155
  rubyforge_project: draper
131
- rubygems_version: 1.8.10
156
+ rubygems_version: 1.8.15
132
157
  signing_key:
133
158
  specification_version: 3
134
159
  summary: Decorator pattern implementation for Rails.
135
- test_files:
160
+ test_files:
136
161
  - spec/draper/base_spec.rb
137
162
  - spec/draper/helper_support_spec.rb
138
163
  - spec/draper/model_support_spec.rb
139
164
  - spec/draper/view_context_spec.rb
140
165
  - spec/generators/draper/decorator/decorator_generator_spec.rb
141
166
  - spec/generators/draper/install/install_generator_spec.rb
142
- - spec/generators/rspec/decorator_generator_spec.rb
143
- - spec/generators/test_unit/decorator_generator_spec.rb
144
167
  - spec/spec_helper.rb
145
168
  - spec/support/samples/active_record.rb
146
169
  - spec/support/samples/application_controller.rb
@@ -149,11 +172,13 @@ test_files:
149
172
  - spec/support/samples/decorator_with_allows.rb
150
173
  - spec/support/samples/decorator_with_application_helper.rb
151
174
  - spec/support/samples/decorator_with_denies.rb
175
+ - spec/support/samples/decorator_with_multiple_allows.rb
152
176
  - spec/support/samples/namespaced_product.rb
153
177
  - spec/support/samples/namespaced_product_decorator.rb
154
178
  - spec/support/samples/product.rb
155
179
  - spec/support/samples/product_decorator.rb
180
+ - spec/support/samples/some_thing.rb
181
+ - spec/support/samples/some_thing_decorator.rb
156
182
  - spec/support/samples/specific_product_decorator.rb
157
183
  - spec/support/samples/widget.rb
158
184
  - spec/support/samples/widget_decorator.rb
159
- has_rdoc:
@@ -1,11 +0,0 @@
1
- module Rspec
2
- class DecoratorGenerator < ::Rails::Generators::NamedBase
3
- source_root File.expand_path('../templates', __FILE__)
4
-
5
- SPEC_ROOT = 'spec/decorators/'
6
-
7
- def build_model_and_application_decorator_specs
8
- template 'decorator_spec.rb', "#{SPEC_ROOT}#{singular_name}_decorator_spec.rb"
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- module TestUnit
2
- class DecoratorGenerator < ::Rails::Generators::NamedBase
3
- source_root File.expand_path('../templates', __FILE__)
4
-
5
- TEST_ROOT = 'test/decorators/'
6
-
7
- def build_model_decorator_tests
8
- template 'decorator_test.rb', "#{TEST_ROOT}#{singular_name}_decorator_test.rb"
9
- end
10
- end
11
- end
@@ -1,22 +0,0 @@
1
- require 'spec_helper'
2
-
3
- # Generators are not automatically loaded by Rails
4
- require 'generators/rspec/decorator_generator'
5
-
6
- describe Rspec::DecoratorGenerator do
7
- # Tell the generator where to put its output (what it thinks of as Rails.root)
8
- destination File.expand_path("../../../../tmp", __FILE__)
9
-
10
- before { prepare_destination }
11
-
12
- describe 'no arguments' do
13
- before { run_generator %w(products) }
14
-
15
- describe 'spec/decorators/products_decorator_spec.rb' do
16
- subject { file('spec/decorators/products_decorator_spec.rb') }
17
- it { should exist }
18
- it { should contain "describe ProductsDecorator" }
19
- end
20
-
21
- end
22
- end