Skip to content

Commit 30c451b

Browse files
committed
Use current order helper instead of instance variable
The API to get the current order in a controller is the helper, not the instance variable.
1 parent 68e9ff7 commit 30c451b

File tree

3 files changed

+17
-16
lines changed

3 files changed

+17
-16
lines changed

lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def self.prepended(base)
2424
private
2525

2626
def handle_subscription_line_items
27-
line_item = @current_order.line_items.find_by(variant_id: params[:variant_id])
27+
line_item = current_order.line_items.find_by(variant_id: params[:variant_id])
2828
create_subscription_line_item(line_item)
2929
end
3030
end

lib/generators/solidus_subscriptions/install/templates/app/controllers/concerns/create_subscription.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module CreateSubscription
1111
private
1212

1313
def handle_subscription_line_items
14-
line_item = @current_order.line_items.find_by(variant_id: params[:variant_id])
14+
line_item = current_order.line_items.find_by(variant_id: params[:variant_id])
1515
create_subscription_line_item(line_item)
1616
end
1717

spec/controllers/concerns/create_subscription_spec.rb

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,14 @@
55
subject(:controller_instance) do
66
Class.new(ApplicationController) do
77
include CreateSubscription
8-
attr_accessor :params, :current_order
9-
10-
def initialize(params = {})
11-
super
12-
end
138
end.new
149
end
1510

1611
let(:variant) { create(:variant) }
1712
let(:order) { create(:order) }
1813

1914
before do
20-
controller_instance.current_order = order
15+
allow(controller_instance).to receive(:current_order).and_return(order)
2116
end
2217

2318
describe '#subscription_line_item_params_present?' do
@@ -49,15 +44,19 @@ def initialize(params = {})
4944
end
5045

5146
describe '#handle_subscription_line_items' do
52-
context 'when subscription params are missing' do
53-
it 'does not invoke handle_subscription_line_items and does not create a subscription line item' do
54-
order.line_items.count
47+
before do
48+
allow(controller_instance).to receive(:params).and_return(params)
49+
end
5550

56-
controller_instance.params = {
51+
context 'when subscription params are missing' do
52+
let(:params) do
53+
{
5754
variant_id: variant.id,
5855
subscription_line_item: {}
5956
}
57+
end
6058

59+
it 'does not invoke handle_subscription_line_items and does not create a subscription line item' do
6160
expect(controller_instance.send(:valid_subscription_line_item_params?)).to be false
6261

6362
expect(controller_instance).not_to receive(:handle_subscription_line_items)
@@ -67,17 +66,19 @@ def initialize(params = {})
6766
end
6867

6968
context 'when subscription params are present' do
70-
it 'calls create_subscription_line_item with the correct line item' do
71-
line_item = create(:line_item, order: order, variant: variant)
72-
73-
controller_instance.params = {
69+
let(:params) do
70+
{
7471
variant_id: variant.id,
7572
subscription_line_item: {
7673
subscribable_id: 1,
7774
quantity: 2,
7875
interval_length: 1
7976
}
8077
}
78+
end
79+
80+
it 'calls create_subscription_line_item with the correct line item' do
81+
line_item = create(:line_item, order: order, variant: variant)
8182

8283
allow(order.line_items).to receive(:find_by).with(variant_id: variant.id).and_return(line_item)
8384

0 commit comments

Comments
 (0)