draper 3.0.0.pre1 → 3.0.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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +16 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- data/.rubocop.yml +11 -0
- data/.travis.yml +3 -2
- data/CHANGELOG.md +20 -0
- data/Guardfile +5 -5
- data/README.md +27 -5
- data/Rakefile +1 -2
- data/draper.gemspec +1 -0
- data/lib/draper.rb +7 -2
- data/lib/draper/automatic_delegation.rb +5 -3
- data/lib/draper/collection_decorator.rb +1 -11
- data/lib/draper/compatibility/api_only.rb +23 -0
- data/lib/draper/configuration.rb +15 -0
- data/lib/draper/decoratable.rb +2 -2
- data/lib/draper/decorator.rb +4 -12
- data/lib/draper/finders.rb +0 -0
- data/lib/draper/helper_proxy.rb +1 -8
- data/lib/draper/railtie.rb +12 -13
- data/lib/draper/tasks/test.rake +1 -1
- data/lib/draper/test/devise_helper.rb +1 -8
- data/lib/draper/test/minitest_integration.rb +0 -0
- data/lib/draper/test/rspec_integration.rb +0 -0
- data/lib/draper/undecorate.rb +8 -0
- data/lib/draper/version.rb +1 -1
- data/lib/draper/view_context.rb +3 -19
- data/lib/draper/view_context/build_strategy.rb +11 -2
- data/lib/generators/controller_override.rb +2 -2
- data/lib/generators/draper/install_generator.rb +14 -0
- data/lib/generators/draper/templates/application_decorator.rb +8 -0
- data/lib/generators/mini_test/decorator_generator.rb +1 -1
- data/lib/generators/rails/decorator_generator.rb +1 -8
- data/lib/generators/rspec/templates/decorator_spec.rb +1 -1
- data/spec/draper/collection_decorator_spec.rb +11 -26
- data/spec/draper/configuration_spec.rb +25 -0
- data/spec/draper/decoratable_spec.rb +28 -13
- data/spec/draper/decorated_association_spec.rb +9 -9
- data/spec/draper/decorates_assigned_spec.rb +6 -6
- data/spec/draper/decorator_spec.rb +104 -89
- data/spec/draper/draper_spec.rb +24 -0
- data/spec/draper/factory_spec.rb +24 -24
- data/spec/draper/finders_spec.rb +21 -21
- data/spec/draper/helper_proxy_spec.rb +2 -2
- data/spec/draper/lazy_helpers_spec.rb +2 -2
- data/spec/draper/undecorate_chain_spec.rb +20 -0
- data/spec/draper/view_context/build_strategy_spec.rb +26 -10
- data/spec/draper/view_context_spec.rb +49 -21
- data/spec/dummy/app/controllers/base_controller.rb +4 -0
- data/spec/dummy/app/controllers/posts_controller.rb +2 -2
- data/spec/dummy/app/decorators/post_decorator.rb +0 -0
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/initializers/draper.rb +3 -0
- data/spec/dummy/db/schema.rb +4 -4
- data/spec/dummy/fast_spec/post_decorator_spec.rb +1 -1
- data/spec/dummy/lib/tasks/test.rake +1 -1
- data/spec/dummy/spec/decorators/devise_spec.rb +0 -9
- data/spec/dummy/spec/decorators/post_decorator_spec.rb +2 -2
- data/spec/dummy/test/decorators/minitest/devise_test.rb +0 -9
- data/spec/dummy/test/decorators/minitest/view_context_test.rb +3 -3
- data/spec/dummy/test/decorators/test_unit/devise_test.rb +0 -9
- data/spec/generators/controller/controller_generator_spec.rb +3 -3
- data/spec/generators/decorator/decorator_generator_spec.rb +11 -10
- data/spec/generators/install/install_generator_spec.rb +19 -0
- data/spec/spec_helper.rb +4 -3
- data/spec/support/shared_examples/view_helpers.rb +8 -8
- metadata +38 -7
- data/spec/dummy/app/controllers/application_controller.rb +0 -4
@@ -7,7 +7,7 @@ module Draper
|
|
7
7
|
let(:controller) { Class.new(base) { include ViewContext } }
|
8
8
|
|
9
9
|
it "saves the superclass's view context" do
|
10
|
-
ViewContext.
|
10
|
+
expect(ViewContext).to receive(:current=).with(:controller_view_context)
|
11
11
|
controller.new.view_context
|
12
12
|
end
|
13
13
|
|
@@ -18,7 +18,7 @@ module Draper
|
|
18
18
|
|
19
19
|
describe ".controller" do
|
20
20
|
it "returns the stored controller from RequestStore" do
|
21
|
-
RequestStore.
|
21
|
+
allow(RequestStore).to receive_messages store: {current_controller: :stored_controller}
|
22
22
|
|
23
23
|
expect(ViewContext.controller).to be :stored_controller
|
24
24
|
end
|
@@ -27,34 +27,62 @@ module Draper
|
|
27
27
|
describe ".controller=" do
|
28
28
|
it "stores a controller in RequestStore" do
|
29
29
|
store = {}
|
30
|
-
RequestStore.
|
30
|
+
allow(RequestStore).to receive_messages store: store
|
31
31
|
|
32
32
|
ViewContext.controller = :stored_controller
|
33
33
|
expect(store[:current_controller]).to be :stored_controller
|
34
34
|
end
|
35
|
+
|
36
|
+
it "cleans context when controller changes" do
|
37
|
+
store = {
|
38
|
+
current_controller: :stored_controller,
|
39
|
+
current_view_context: :stored_view_context
|
40
|
+
}
|
41
|
+
|
42
|
+
allow(RequestStore).to receive_messages store: store
|
43
|
+
|
44
|
+
ViewContext.controller = :other_stored_controller
|
45
|
+
|
46
|
+
expect(store).to include(current_controller: :other_stored_controller)
|
47
|
+
expect(store).not_to include(:current_view_context)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "doesn't clean context when controller is the same" do
|
51
|
+
store = {
|
52
|
+
current_controller: :stored_controller,
|
53
|
+
current_view_context: :stored_view_context
|
54
|
+
}
|
55
|
+
|
56
|
+
allow(RequestStore).to receive_messages store: store
|
57
|
+
|
58
|
+
ViewContext.controller = :stored_controller
|
59
|
+
|
60
|
+
expect(store).to include(current_controller: :stored_controller)
|
61
|
+
expect(store).to include(current_view_context: :stored_view_context)
|
62
|
+
end
|
35
63
|
end
|
36
64
|
|
37
65
|
describe ".current" do
|
38
66
|
it "returns the stored view context from RequestStore" do
|
39
|
-
RequestStore.
|
67
|
+
allow(RequestStore).to receive_messages store: {current_view_context: :stored_view_context}
|
40
68
|
|
41
69
|
expect(ViewContext.current).to be :stored_view_context
|
42
70
|
end
|
43
71
|
|
44
72
|
context "when no view context is stored" do
|
45
73
|
it "builds a view context" do
|
46
|
-
RequestStore.
|
47
|
-
ViewContext.
|
48
|
-
HelperProxy.
|
74
|
+
allow(RequestStore).to receive_messages store: {}
|
75
|
+
allow(ViewContext).to receive_messages build_strategy: ->{ :new_view_context }
|
76
|
+
allow(HelperProxy).to receive(:new).with(:new_view_context).and_return(:new_helper_proxy)
|
49
77
|
|
50
78
|
expect(ViewContext.current).to be :new_helper_proxy
|
51
79
|
end
|
52
80
|
|
53
81
|
it "stores the built view context" do
|
54
82
|
store = {}
|
55
|
-
RequestStore.
|
56
|
-
ViewContext.
|
57
|
-
HelperProxy.
|
83
|
+
allow(RequestStore).to receive_messages store: store
|
84
|
+
allow(ViewContext).to receive_messages build_strategy: ->{ :new_view_context }
|
85
|
+
allow(HelperProxy).to receive(:new).with(:new_view_context).and_return(:new_helper_proxy)
|
58
86
|
|
59
87
|
ViewContext.current
|
60
88
|
expect(store[:current_view_context]).to be :new_helper_proxy
|
@@ -65,8 +93,8 @@ module Draper
|
|
65
93
|
describe ".current=" do
|
66
94
|
it "stores a helper proxy for the view context in RequestStore" do
|
67
95
|
store = {}
|
68
|
-
RequestStore.
|
69
|
-
HelperProxy.
|
96
|
+
allow(RequestStore).to receive_messages store: store
|
97
|
+
allow(HelperProxy).to receive(:new).with(:stored_view_context).and_return(:stored_helper_proxy)
|
70
98
|
|
71
99
|
ViewContext.current = :stored_view_context
|
72
100
|
expect(store[:current_view_context]).to be :stored_helper_proxy
|
@@ -76,7 +104,7 @@ module Draper
|
|
76
104
|
describe ".clear!" do
|
77
105
|
it "clears the stored controller and view controller" do
|
78
106
|
store = {current_controller: :stored_controller, current_view_context: :stored_view_context}
|
79
|
-
RequestStore.
|
107
|
+
allow(RequestStore).to receive_messages store: store
|
80
108
|
|
81
109
|
ViewContext.clear!
|
82
110
|
expect(store).not_to have_key :current_controller
|
@@ -86,7 +114,7 @@ module Draper
|
|
86
114
|
|
87
115
|
describe ".build" do
|
88
116
|
it "returns a new view context using the build strategy" do
|
89
|
-
ViewContext.
|
117
|
+
allow(ViewContext).to receive_messages build_strategy: ->{ :new_view_context }
|
90
118
|
|
91
119
|
expect(ViewContext.build).to be :new_view_context
|
92
120
|
end
|
@@ -94,17 +122,17 @@ module Draper
|
|
94
122
|
|
95
123
|
describe ".build!" do
|
96
124
|
it "returns a helper proxy for the new view context" do
|
97
|
-
ViewContext.
|
98
|
-
HelperProxy.
|
125
|
+
allow(ViewContext).to receive_messages build_strategy: ->{ :new_view_context }
|
126
|
+
allow(HelperProxy).to receive(:new).with(:new_view_context).and_return(:new_helper_proxy)
|
99
127
|
|
100
128
|
expect(ViewContext.build!).to be :new_helper_proxy
|
101
129
|
end
|
102
130
|
|
103
131
|
it "stores the helper proxy" do
|
104
132
|
store = {}
|
105
|
-
RequestStore.
|
106
|
-
ViewContext.
|
107
|
-
HelperProxy.
|
133
|
+
allow(RequestStore).to receive_messages store: store
|
134
|
+
allow(ViewContext).to receive_messages build_strategy: ->{ :new_view_context }
|
135
|
+
allow(HelperProxy).to receive(:new).with(:new_view_context).and_return(:new_helper_proxy)
|
108
136
|
|
109
137
|
ViewContext.build!
|
110
138
|
expect(store[:current_view_context]).to be :new_helper_proxy
|
@@ -131,7 +159,7 @@ module Draper
|
|
131
159
|
end
|
132
160
|
|
133
161
|
it "passes a block to the strategy" do
|
134
|
-
ViewContext::BuildStrategy::Fast.
|
162
|
+
allow(ViewContext::BuildStrategy::Fast).to receive(:new) { |&block| block.call }
|
135
163
|
|
136
164
|
expect(ViewContext.test_strategy(:fast){:passed}).to be :passed
|
137
165
|
end
|
@@ -144,7 +172,7 @@ module Draper
|
|
144
172
|
end
|
145
173
|
|
146
174
|
it "passes a block to the strategy" do
|
147
|
-
ViewContext::BuildStrategy::Full.
|
175
|
+
allow(ViewContext::BuildStrategy::Full).to receive(:new) { |&block| block.call }
|
148
176
|
|
149
177
|
expect(ViewContext.test_strategy(:full){:passed}).to be :passed
|
150
178
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class PostsController <
|
1
|
+
class PostsController < BaseController
|
2
2
|
decorates_assigned :post
|
3
3
|
|
4
4
|
def show
|
@@ -8,7 +8,7 @@ class PostsController < ApplicationController
|
|
8
8
|
def mail
|
9
9
|
post = Post.find(params[:id])
|
10
10
|
email = PostMailer.decorated_email(post).deliver
|
11
|
-
render
|
11
|
+
render html: email.body.to_s.html_safe
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
File without changes
|
data/spec/dummy/config/boot.rb
CHANGED
data/spec/dummy/db/schema.rb
CHANGED
@@ -11,11 +11,11 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:
|
14
|
+
ActiveRecord::Schema.define(version: 20121019115657) do
|
15
15
|
|
16
|
-
create_table "posts", :
|
17
|
-
t.datetime "created_at", :
|
18
|
-
t.datetime "updated_at", :
|
16
|
+
create_table "posts", force: true do |t|
|
17
|
+
t.datetime "created_at", null: false
|
18
|
+
t.datetime "updated_at", null: false
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
@@ -51,14 +51,5 @@ if defined?(Devise)
|
|
51
51
|
|
52
52
|
expect(helper.current_user).to be_nil
|
53
53
|
end
|
54
|
-
|
55
|
-
it "is backwards-compatible" do
|
56
|
-
user = double("User")
|
57
|
-
ActiveSupport::Deprecation.silence do
|
58
|
-
sign_in user
|
59
|
-
end
|
60
|
-
|
61
|
-
expect(helper.current_user).to be user
|
62
|
-
end
|
63
54
|
end
|
64
55
|
end
|
@@ -58,7 +58,7 @@ describe PostDecorator do
|
|
58
58
|
expect(xml).to have_css "post > updated-at", text: "overridden"
|
59
59
|
end
|
60
60
|
|
61
|
-
it "uses a test view context from
|
62
|
-
expect(Draper::ViewContext.current.controller).to be_an
|
61
|
+
it "uses a test view context from BaseController" do
|
62
|
+
expect(Draper::ViewContext.current.controller).to be_an BaseController
|
63
63
|
end
|
64
64
|
end
|
@@ -51,14 +51,5 @@ if defined?(Devise)
|
|
51
51
|
|
52
52
|
assert helper.current_user.nil?
|
53
53
|
end
|
54
|
-
|
55
|
-
it "is backwards-compatible" do
|
56
|
-
user = Object.new
|
57
|
-
ActiveSupport::Deprecation.silence do
|
58
|
-
sign_in user
|
59
|
-
end
|
60
|
-
|
61
|
-
assert_same user, helper.current_user
|
62
|
-
end
|
63
54
|
end
|
64
55
|
end
|
@@ -13,12 +13,12 @@ describe "A decorator test" do
|
|
13
13
|
it_does_not_leak_view_context
|
14
14
|
end
|
15
15
|
|
16
|
-
describe "A controller test" do
|
17
|
-
subject{ Class.new(ActionController::Base) }
|
16
|
+
describe "A controller decorator test" do
|
17
|
+
subject { Class.new(ActionController::Base) }
|
18
18
|
|
19
19
|
it_does_not_leak_view_context
|
20
20
|
end
|
21
21
|
|
22
|
-
describe "A mailer test" do
|
22
|
+
describe "A mailer decorator test" do
|
23
23
|
it_does_not_leak_view_context
|
24
24
|
end
|
@@ -51,14 +51,5 @@ if defined?(Devise)
|
|
51
51
|
|
52
52
|
assert helper.current_user.nil?
|
53
53
|
end
|
54
|
-
|
55
|
-
def test_backwards_compatibility
|
56
|
-
user = Object.new
|
57
|
-
ActiveSupport::Deprecation.silence do
|
58
|
-
sign_in user
|
59
|
-
end
|
60
|
-
|
61
|
-
assert_same user, helper.current_user
|
62
|
-
end
|
63
54
|
end
|
64
55
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require '
|
2
|
+
require 'dummy/config/environment'
|
3
3
|
require 'ammeter/init'
|
4
4
|
require 'generators/controller_override'
|
5
5
|
require 'generators/rails/decorator_generator'
|
@@ -16,7 +16,7 @@ describe Rails::Generators::ControllerGenerator do
|
|
16
16
|
describe "naming" do
|
17
17
|
before { run_generator %w(YourModels) }
|
18
18
|
|
19
|
-
it {
|
19
|
+
it { is_expected.to contain "class YourModelDecorator" }
|
20
20
|
end
|
21
21
|
end
|
22
|
-
end
|
22
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require '
|
2
|
+
require 'dummy/config/environment'
|
3
3
|
require 'ammeter/init'
|
4
4
|
require 'generators/rails/decorator_generator'
|
5
5
|
|
@@ -15,31 +15,32 @@ describe Rails::Generators::DecoratorGenerator do
|
|
15
15
|
describe "naming" do
|
16
16
|
before { run_generator %w(YourModel) }
|
17
17
|
|
18
|
-
it {
|
18
|
+
it { is_expected.to contain "class YourModelDecorator" }
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "namespacing" do
|
22
22
|
subject { file("app/decorators/namespace/your_model_decorator.rb") }
|
23
23
|
before { run_generator %w(Namespace::YourModel) }
|
24
24
|
|
25
|
-
it {
|
25
|
+
it { is_expected.to contain "class Namespace::YourModelDecorator" }
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "inheritance" do
|
29
29
|
context "by default" do
|
30
30
|
before { run_generator %w(YourModel) }
|
31
31
|
|
32
|
-
it {
|
32
|
+
it { is_expected.to contain "class YourModelDecorator < Draper::Decorator" }
|
33
33
|
end
|
34
34
|
|
35
35
|
context "with the --parent option" do
|
36
36
|
before { run_generator %w(YourModel --parent=FooDecorator) }
|
37
37
|
|
38
|
-
it {
|
38
|
+
it { is_expected.to contain "class YourModelDecorator < FooDecorator" }
|
39
39
|
end
|
40
40
|
|
41
41
|
context "with an ApplicationDecorator" do
|
42
42
|
before do
|
43
|
+
allow_any_instance_of(Object).to receive(:require)
|
43
44
|
allow_any_instance_of(Object).to receive(:require).with("application_decorator").and_return(
|
44
45
|
stub_const "ApplicationDecorator", Class.new
|
45
46
|
)
|
@@ -47,7 +48,7 @@ describe Rails::Generators::DecoratorGenerator do
|
|
47
48
|
|
48
49
|
before { run_generator %w(YourModel) }
|
49
50
|
|
50
|
-
it {
|
51
|
+
it { is_expected.to contain "class YourModelDecorator < ApplicationDecorator" }
|
51
52
|
end
|
52
53
|
end
|
53
54
|
end
|
@@ -59,14 +60,14 @@ describe Rails::Generators::DecoratorGenerator do
|
|
59
60
|
describe "naming" do
|
60
61
|
before { run_generator %w(YourModel -t=rspec) }
|
61
62
|
|
62
|
-
it {
|
63
|
+
it { is_expected.to contain "describe YourModelDecorator" }
|
63
64
|
end
|
64
65
|
|
65
66
|
describe "namespacing" do
|
66
67
|
subject { file("spec/decorators/namespace/your_model_decorator_spec.rb") }
|
67
68
|
before { run_generator %w(Namespace::YourModel -t=rspec) }
|
68
69
|
|
69
|
-
it {
|
70
|
+
it { is_expected.to contain "describe Namespace::YourModelDecorator" }
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
@@ -78,14 +79,14 @@ describe Rails::Generators::DecoratorGenerator do
|
|
78
79
|
describe "naming" do
|
79
80
|
before { run_generator %w(YourModel -t=test_unit) }
|
80
81
|
|
81
|
-
it {
|
82
|
+
it { is_expected.to contain "class YourModelDecoratorTest < Draper::TestCase" }
|
82
83
|
end
|
83
84
|
|
84
85
|
describe "namespacing" do
|
85
86
|
subject { file("test/decorators/namespace/your_model_decorator_test.rb") }
|
86
87
|
before { run_generator %w(Namespace::YourModel -t=test_unit) }
|
87
88
|
|
88
|
-
it {
|
89
|
+
it { is_expected.to contain "class Namespace::YourModelDecoratorTest < Draper::TestCase" }
|
89
90
|
end
|
90
91
|
end
|
91
92
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dummy/config/environment'
|
3
|
+
require 'ammeter/init'
|
4
|
+
require 'generators/draper/install_generator'
|
5
|
+
|
6
|
+
describe Draper::Generators::InstallGenerator do
|
7
|
+
destination File.expand_path('../tmp', __FILE__)
|
8
|
+
|
9
|
+
before { prepare_destination }
|
10
|
+
after(:all) { FileUtils.rm_rf destination_root }
|
11
|
+
|
12
|
+
describe 'the application decorator' do
|
13
|
+
subject { file('app/decorators/application_decorator.rb') }
|
14
|
+
|
15
|
+
before { run_generator }
|
16
|
+
|
17
|
+
it { is_expected.to contain 'class ApplicationDecorator' }
|
18
|
+
end
|
19
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -19,17 +19,18 @@ class Other < Model; end
|
|
19
19
|
class ProductDecorator < Draper::Decorator; end
|
20
20
|
class ProductsDecorator < Draper::CollectionDecorator; end
|
21
21
|
|
22
|
-
class ProductPresenter < Draper::Decorator; end
|
23
|
-
|
24
22
|
class OtherDecorator < Draper::Decorator; end
|
25
23
|
|
26
24
|
module Namespaced
|
27
25
|
class Product < Model; end
|
28
26
|
class ProductDecorator < Draper::Decorator; end
|
29
|
-
|
27
|
+
ProductsDecorator = Class.new(Draper::CollectionDecorator)
|
30
28
|
class OtherDecorator < Draper::Decorator; end
|
31
29
|
end
|
32
30
|
|
31
|
+
ApplicationController = Class.new(ActionController::Base)
|
32
|
+
CustomController = Class.new(ActionController::Base)
|
33
|
+
|
33
34
|
# After each example, revert changes made to the class
|
34
35
|
def protect_class(klass)
|
35
36
|
before { stub_const klass.name, Class.new(klass) }
|
@@ -1,38 +1,38 @@
|
|
1
1
|
shared_examples_for "view helpers" do |subject|
|
2
2
|
describe "#helpers" do
|
3
3
|
it "returns the current view context" do
|
4
|
-
Draper::ViewContext.
|
4
|
+
allow(Draper::ViewContext).to receive_messages current: :current_view_context
|
5
5
|
expect(subject.helpers).to be :current_view_context
|
6
6
|
end
|
7
7
|
|
8
8
|
it "is aliased to #h" do
|
9
|
-
Draper::ViewContext.
|
9
|
+
allow(Draper::ViewContext).to receive_messages current: :current_view_context
|
10
10
|
expect(subject.h).to be :current_view_context
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "#localize" do
|
15
15
|
it "delegates to #helpers" do
|
16
|
-
subject.
|
17
|
-
subject.helpers.
|
16
|
+
allow(subject).to receive(:helpers).and_return(double)
|
17
|
+
expect(subject.helpers).to receive(:localize).with(:an_object, some: "parameter")
|
18
18
|
subject.localize(:an_object, some: "parameter")
|
19
19
|
end
|
20
20
|
|
21
21
|
it "is aliased to #l" do
|
22
|
-
subject.
|
23
|
-
subject.helpers.
|
22
|
+
allow(subject).to receive_messages helpers: double
|
23
|
+
expect(subject.helpers).to receive(:localize).with(:an_object, some: "parameter")
|
24
24
|
subject.l(:an_object, some: "parameter")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe ".helpers" do
|
29
29
|
it "returns the current view context" do
|
30
|
-
Draper::ViewContext.
|
30
|
+
allow(Draper::ViewContext).to receive_messages current: :current_view_context
|
31
31
|
expect(subject.class.helpers).to be :current_view_context
|
32
32
|
end
|
33
33
|
|
34
34
|
it "is aliased to .h" do
|
35
|
-
Draper::ViewContext.
|
35
|
+
allow(Draper::ViewContext).to receive(:current).and_return(:current_view_context)
|
36
36
|
expect(subject.class.h).to be :current_view_context
|
37
37
|
end
|
38
38
|
end
|