From 12cf62c2ff19035cf8d645965b22980145a115e7 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Tue, 29 Oct 2024 11:31:14 +1100 Subject: [PATCH] Refactor, add OrderManagement::Order::Updater#update_voucher Move the logic to update a voucher and associated order to `OrderManagement` --- app/controllers/spree/orders_controller.rb | 3 +-- .../voucher_adjustments_controller.rb | 3 +-- .../order_management/order/updater.rb | 5 +++++ .../order_management/order/updater_spec.rb | 20 +++++++++++++++++++ spec/controllers/checkout_controller_spec.rb | 3 +-- .../reports/sales_tax_totals_by_order_spec.rb | 3 +-- spec/requests/spree/admin/payments_spec.rb | 3 +-- .../vine/voucher_redeemer_service_spec.rb | 3 +-- .../admin/reports/revenues_by_hub_spec.rb | 4 +--- spec/system/consumer/checkout/payment_spec.rb | 3 +-- spec/system/consumer/checkout/summary_spec.rb | 3 +-- 11 files changed, 34 insertions(+), 19 deletions(-) diff --git a/app/controllers/spree/orders_controller.rb b/app/controllers/spree/orders_controller.rb index af0738b17e..a7a25700a2 100644 --- a/app/controllers/spree/orders_controller.rb +++ b/app/controllers/spree/orders_controller.rb @@ -70,8 +70,7 @@ module Spree @order.recreate_all_fees! # Enterprise fees on line items and on the order itself # Re apply the voucher - VoucherAdjustmentsService.new(@order).update - @order.update_totals_and_states + OrderManagement::Order::Updater.new(@order).update_voucher if @order.complete? @order.update_payment_fees! diff --git a/app/controllers/voucher_adjustments_controller.rb b/app/controllers/voucher_adjustments_controller.rb index 9fa62257b2..40001a7dd2 100644 --- a/app/controllers/voucher_adjustments_controller.rb +++ b/app/controllers/voucher_adjustments_controller.rb @@ -72,8 +72,7 @@ class VoucherAdjustmentsController < BaseController # calculate_voucher_adjustment clear_payments - VoucherAdjustmentsService.new(@order).update - @order.update_totals_and_states + OrderManagement::Order::Updater.new(@order).update_voucher true end diff --git a/engines/order_management/app/services/order_management/order/updater.rb b/engines/order_management/app/services/order_management/order/updater.rb index c31e2b929d..5fb1d59461 100644 --- a/engines/order_management/app/services/order_management/order/updater.rb +++ b/engines/order_management/app/services/order_management/order/updater.rb @@ -161,6 +161,11 @@ module OrderManagement persist_totals end + def update_voucher + VoucherAdjustmentsService.new(order).update + update_totals_and_states + end + private def cancel_payments_requiring_auth diff --git a/engines/order_management/spec/services/order_management/order/updater_spec.rb b/engines/order_management/spec/services/order_management/order/updater_spec.rb index 458bb785ce..17f4c7dc55 100644 --- a/engines/order_management/spec/services/order_management/order/updater_spec.rb +++ b/engines/order_management/spec/services/order_management/order/updater_spec.rb @@ -460,6 +460,26 @@ module OrderManagement end end + describe "#update_voucher" do + let(:voucher_service) { instance_double(VoucherAdjustmentsService) } + + it "calls VoucherAdjustmentsService" do + expect(VoucherAdjustmentsService).to receive(:new).and_return(voucher_service) + expect(voucher_service).to receive(:update) + + updater.update_voucher + end + + it "calls update_totals_and_states" do + allow(VoucherAdjustmentsService).to receive(:new).and_return(voucher_service) + allow(voucher_service).to receive(:update) + + expect(updater).to receive(:update_totals_and_states) + + updater.update_voucher + end + end + def update_order_quantity(order) order.line_items.first.update_attribute(:quantity, 2) end diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index 9ae4a16b43..2b29e58250 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -507,8 +507,7 @@ RSpec.describe CheckoutController, type: :controller do before do # Adding voucher to the order vine_voucher.create_adjustment(vine_voucher.code, order) - VoucherAdjustmentsService.new(order).update - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher allow(Vine::VoucherRedeemerService).to receive(:new).and_return(vine_voucher_redeemer) end diff --git a/spec/lib/reports/sales_tax_totals_by_order_spec.rb b/spec/lib/reports/sales_tax_totals_by_order_spec.rb index 603331788a..e8003da3a9 100644 --- a/spec/lib/reports/sales_tax_totals_by_order_spec.rb +++ b/spec/lib/reports/sales_tax_totals_by_order_spec.rb @@ -272,8 +272,7 @@ RSpec.describe "Reporting::Reports::SalesTax::SalesTaxTotalsByOrder" do def add_voucher(order, voucher) # Add voucher to the order voucher.create_adjustment(voucher.code, order) - VoucherAdjustmentsService.new(order).update - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher Orders::WorkflowService.new(order).complete! end diff --git a/spec/requests/spree/admin/payments_spec.rb b/spec/requests/spree/admin/payments_spec.rb index 6fb898f520..195611995a 100644 --- a/spec/requests/spree/admin/payments_spec.rb +++ b/spec/requests/spree/admin/payments_spec.rb @@ -366,7 +366,6 @@ RSpec.describe Spree::Admin::PaymentsController, type: :request do def add_voucher_to_order(voucher, order) voucher.create_adjustment(voucher.code, order) - VoucherAdjustmentsService.new(order).update - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher end end diff --git a/spec/services/vine/voucher_redeemer_service_spec.rb b/spec/services/vine/voucher_redeemer_service_spec.rb index 5dd83da12b..fbfc4c3df1 100644 --- a/spec/services/vine/voucher_redeemer_service_spec.rb +++ b/spec/services/vine/voucher_redeemer_service_spec.rb @@ -261,8 +261,7 @@ RSpec.describe Vine::VoucherRedeemerService, feature: :connected_apps do def add_voucher(voucher) voucher.create_adjustment(voucher.code, order) - VoucherAdjustmentsService.new(order).update - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher end def mock_api_response(success:, data: nil, status: 200) diff --git a/spec/system/admin/reports/revenues_by_hub_spec.rb b/spec/system/admin/reports/revenues_by_hub_spec.rb index 114ec2e411..079a94d2fa 100644 --- a/spec/system/admin/reports/revenues_by_hub_spec.rb +++ b/spec/system/admin/reports/revenues_by_hub_spec.rb @@ -154,8 +154,6 @@ RSpec.describe "Revenues By Hub Reports" do order.update_shipping_fees! order.update_order! - VoucherAdjustmentsService.new(order).update - - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher end end diff --git a/spec/system/consumer/checkout/payment_spec.rb b/spec/system/consumer/checkout/payment_spec.rb index 5c7c7ba1e7..d53e9c8908 100644 --- a/spec/system/consumer/checkout/payment_spec.rb +++ b/spec/system/consumer/checkout/payment_spec.rb @@ -383,7 +383,6 @@ RSpec.describe "As a consumer, I want to checkout my order" do def add_voucher_to_order(voucher, order) voucher.create_adjustment(voucher.code, order) - VoucherAdjustmentsService.new(order).update - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher end end diff --git a/spec/system/consumer/checkout/summary_spec.rb b/spec/system/consumer/checkout/summary_spec.rb index 313c133947..bd9192d4ad 100644 --- a/spec/system/consumer/checkout/summary_spec.rb +++ b/spec/system/consumer/checkout/summary_spec.rb @@ -479,8 +479,7 @@ RSpec.describe "As a consumer, I want to checkout my order" do def add_voucher_to_order(voucher, order) voucher.create_adjustment(voucher.code, order) - VoucherAdjustmentsService.new(order).update - order.update_totals_and_states + OrderManagement::Order::Updater.new(order).update_voucher end def set_up_order(balance, state)