mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Reduce coupling from controller
This commit is contained in:
committed by
Rob Harrington
parent
4c4969e86b
commit
e087a008c2
@@ -40,7 +40,7 @@ class CheckoutController < Spree::CheckoutController
|
||||
set_default_bill_address
|
||||
set_default_ship_address
|
||||
|
||||
ResetOrderService.new(self).call
|
||||
ResetOrderService.new(self, current_order).call
|
||||
session[:access_token] = current_order.token
|
||||
|
||||
flash[:success] = t(:order_processed_successfully)
|
||||
|
||||
@@ -105,7 +105,7 @@ module CheckoutHelper
|
||||
end
|
||||
|
||||
def reset_order
|
||||
ResetOrderService.new(self).call
|
||||
ResetOrderService.new(self, current_order).call
|
||||
end
|
||||
|
||||
def payment_method_price(method, order)
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
class ResetOrderService < SimpleDelegator
|
||||
def call
|
||||
distributor = current_order.distributor
|
||||
token = current_order.token
|
||||
class ResetOrderService
|
||||
def initialize(controller, order)
|
||||
@controller = controller
|
||||
@distributor = order.distributor
|
||||
@token = order.token
|
||||
end
|
||||
|
||||
def call
|
||||
controller.expire_current_order
|
||||
build_new_order(distributor, token)
|
||||
build_new_order
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def build_new_order(distributor, token)
|
||||
current_order(true)
|
||||
current_order.set_distributor!(distributor)
|
||||
current_order.tokenized_permission.token = token
|
||||
current_order.tokenized_permission.save!
|
||||
end
|
||||
attr_reader :controller, :distributor, :token
|
||||
|
||||
def controller
|
||||
__getobj__
|
||||
def build_new_order
|
||||
new_order = controller.current_order(true)
|
||||
new_order.set_distributor!(distributor)
|
||||
new_order.tokenized_permission.token = token
|
||||
new_order.tokenized_permission.save!
|
||||
end
|
||||
end
|
||||
|
||||
@@ -146,7 +146,7 @@ describe CheckoutController do
|
||||
end
|
||||
|
||||
it "returns order confirmation url on success" do
|
||||
allow(ResetOrderService).to receive(:new).with(controller) { reset_order_service }
|
||||
allow(ResetOrderService).to receive(:new).with(controller, order) { reset_order_service }
|
||||
expect(reset_order_service).to receive(:call)
|
||||
|
||||
order.stub(:update_attributes).and_return true
|
||||
@@ -159,7 +159,7 @@ describe CheckoutController do
|
||||
|
||||
describe "stale object handling" do
|
||||
it "retries when a stale object error is encountered" do
|
||||
allow(ResetOrderService).to receive(:new).with(controller) { reset_order_service }
|
||||
allow(ResetOrderService).to receive(:new).with(controller, order) { reset_order_service }
|
||||
expect(reset_order_service).to receive(:call)
|
||||
|
||||
order.stub(:update_attributes).and_return true
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe ResetOrderService do
|
||||
let(:current_distributor) { double(:distributor) }
|
||||
let(:current_token) { double(:current_token) }
|
||||
let(:current_order) { double(:current_order) }
|
||||
let(:current_distributor) { double(:distributor) }
|
||||
let(:current_order) do
|
||||
double(
|
||||
:current_order,
|
||||
token: current_token,
|
||||
distributor: current_distributor
|
||||
)
|
||||
end
|
||||
let(:tokenized_permission) { double(:tokenized_permission, save!: true) }
|
||||
let(:new_order) do
|
||||
double(
|
||||
:new_order,
|
||||
distributor: current_distributor,
|
||||
token: current_token,
|
||||
set_distributor!: true,
|
||||
tokenized_permission: tokenized_permission,
|
||||
)
|
||||
@@ -21,10 +25,10 @@ describe ResetOrderService do
|
||||
expire_current_order: true
|
||||
)
|
||||
end
|
||||
let(:reset_order_service) { described_class.new(controller) }
|
||||
let(:reset_order_service) { described_class.new(controller, current_order) }
|
||||
|
||||
before do
|
||||
allow(current_order)
|
||||
allow(new_order)
|
||||
.to receive(:tokenized_permission)
|
||||
.and_return(tokenized_permission)
|
||||
|
||||
@@ -48,7 +52,7 @@ describe ResetOrderService do
|
||||
it 'sets the token of the tokenized permissions' do
|
||||
reset_order_service.call
|
||||
|
||||
expect(current_order.tokenized_permission)
|
||||
expect(new_order.tokenized_permission)
|
||||
.to have_received(:token=).with(current_token)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user