mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-05 22:26:07 +00:00
Remove code and specs related to dynamic checkout workflow, we have a static workflow defines in the Order class
This commit is contained in:
@@ -553,10 +553,6 @@ module Spree
|
||||
line_item_adjustments.destroy_all
|
||||
end
|
||||
|
||||
def has_step?(step)
|
||||
checkout_steps.include?(step)
|
||||
end
|
||||
|
||||
def state_changed(name)
|
||||
state = "#{name}_state"
|
||||
return unless persisted?
|
||||
@@ -803,7 +799,6 @@ module Spree
|
||||
end
|
||||
|
||||
def has_available_shipment
|
||||
return unless has_step?("delivery")
|
||||
return unless address?
|
||||
return unless ship_address&.valid?
|
||||
# errors.add(:base, :no_shipping_methods_available) if available_shipping_methods.empty?
|
||||
|
||||
@@ -9,7 +9,6 @@ module Spree
|
||||
class_attribute :previous_states
|
||||
class_attribute :checkout_flow
|
||||
class_attribute :checkout_steps
|
||||
class_attribute :removed_transitions
|
||||
|
||||
def self.checkout_flow(&block)
|
||||
if block_given?
|
||||
@@ -24,7 +23,6 @@ module Spree
|
||||
self.checkout_steps = {}
|
||||
self.next_event_transitions = []
|
||||
self.previous_states = [:cart]
|
||||
self.removed_transitions = []
|
||||
|
||||
# Build the checkout flow using the checkout_flow defined either
|
||||
# within the Order class, or a decorator for that class.
|
||||
@@ -95,43 +93,6 @@ module Spree
|
||||
end
|
||||
end
|
||||
|
||||
def self.insert_checkout_step(name, options = {})
|
||||
before = options.delete(:before)
|
||||
after = options.delete(:after) unless before
|
||||
after = checkout_steps.keys.last unless before || after
|
||||
|
||||
cloned_steps = checkout_steps.clone
|
||||
cloned_removed_transitions = removed_transitions.clone
|
||||
checkout_flow do
|
||||
cloned_steps.each_pair do |key, value|
|
||||
go_to_state(name, options) if key == before
|
||||
go_to_state(key, value)
|
||||
go_to_state(name, options) if key == after
|
||||
end
|
||||
cloned_removed_transitions.each do |transition|
|
||||
remove_transition(transition)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.remove_checkout_step(name)
|
||||
cloned_steps = checkout_steps.clone
|
||||
cloned_removed_transitions = removed_transitions.clone
|
||||
checkout_flow do
|
||||
cloned_steps.each_pair do |key, value|
|
||||
go_to_state(key, value) unless key == name
|
||||
end
|
||||
cloned_removed_transitions.each do |transition|
|
||||
remove_transition(transition)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.remove_transition(options = {})
|
||||
removed_transitions << options
|
||||
next_event_transitions.delete(find_transition(options))
|
||||
end
|
||||
|
||||
def self.find_transition(options = {})
|
||||
return nil if options.nil? || !options.include?(:from) || !options.include?(:to)
|
||||
|
||||
@@ -173,10 +134,6 @@ module Spree
|
||||
checkout_steps.index(step)
|
||||
end
|
||||
|
||||
def self.removed_transitions
|
||||
@removed_transitions ||= []
|
||||
end
|
||||
|
||||
def can_go_to_state?(state)
|
||||
return false unless self.state.present? &&
|
||||
checkout_step?(state) &&
|
||||
|
||||
@@ -30,16 +30,6 @@ describe Spree::Order::Checkout do
|
||||
expect(Spree::Order.find_transition({ foo: :bar, baz: :dog })).to be_falsy
|
||||
end
|
||||
|
||||
it '.remove_transition' do
|
||||
options = { from: transitions.first.keys.first, to: transitions.first.values.first }
|
||||
allow(Spree::Order).to receive(:next_event_transition).and_return([options])
|
||||
expect(Spree::Order.remove_transition(options)).to be_truthy
|
||||
end
|
||||
|
||||
it '.remove_transition when contract was broken' do
|
||||
expect(Spree::Order.remove_transition(nil)).to be_falsy
|
||||
end
|
||||
|
||||
context "#checkout_steps" do
|
||||
context "when payment not required" do
|
||||
before { allow(order).to receive_messages payment_required?: false }
|
||||
@@ -232,73 +222,6 @@ describe Spree::Order::Checkout do
|
||||
end
|
||||
end
|
||||
|
||||
context "insert checkout step" do
|
||||
before do
|
||||
@old_checkout_flow = Spree::Order.checkout_flow
|
||||
Spree::Order.class_eval do
|
||||
insert_checkout_step :new_step, before: :address
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
Spree::Order.checkout_flow(&@old_checkout_flow)
|
||||
end
|
||||
|
||||
it "should maintain removed transitions" do
|
||||
transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
|
||||
expect(transition).to be_nil
|
||||
end
|
||||
|
||||
context "before" do
|
||||
before do
|
||||
Spree::Order.class_eval do
|
||||
insert_checkout_step :before_address, before: :address
|
||||
end
|
||||
end
|
||||
|
||||
specify do
|
||||
order = Spree::Order.new
|
||||
expect(order.checkout_steps).to eq %w(new_step before_address address delivery complete)
|
||||
end
|
||||
end
|
||||
|
||||
context "after" do
|
||||
before do
|
||||
Spree::Order.class_eval do
|
||||
insert_checkout_step :after_address, after: :address
|
||||
end
|
||||
end
|
||||
|
||||
specify do
|
||||
order = Spree::Order.new
|
||||
expect(order.checkout_steps).to eq %w(new_step address after_address delivery complete)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "remove checkout step" do
|
||||
before do
|
||||
@old_checkout_flow = Spree::Order.checkout_flow
|
||||
Spree::Order.class_eval do
|
||||
remove_checkout_step :address
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
Spree::Order.checkout_flow(&@old_checkout_flow)
|
||||
end
|
||||
|
||||
it "should maintain removed transitions" do
|
||||
transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
|
||||
expect(transition).to be_nil
|
||||
end
|
||||
|
||||
specify do
|
||||
order = Spree::Order.new
|
||||
expect(order.checkout_steps).to eq %w(delivery complete)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'event :restart_checkout' do
|
||||
let(:order) { build_stubbed(:order) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user