From 6e5c8650d08a534ef1baf9a41eee4860ce15a5f6 Mon Sep 17 00:00:00 2001 From: Mateusz Zalewski Date: Fri, 6 Apr 2018 12:57:49 +0200 Subject: [PATCH 1/2] Inject adjustment types that shall be cleared --- .../config/services/order_processing.xml | 8 ++++++++ .../OrderProcessing/OrderAdjustmentsClearer.php | 15 +++++++-------- .../OrderAdjustmentsClearerSpec.php | 11 +++++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Sylius/Bundle/CoreBundle/Resources/config/services/order_processing.xml b/src/Sylius/Bundle/CoreBundle/Resources/config/services/order_processing.xml index c389be19c25..87fa2ecc958 100644 --- a/src/Sylius/Bundle/CoreBundle/Resources/config/services/order_processing.xml +++ b/src/Sylius/Bundle/CoreBundle/Resources/config/services/order_processing.xml @@ -14,6 +14,14 @@ + + Sylius\Component\Core\Model\AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT + Sylius\Component\Core\Model\AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT + Sylius\Component\Core\Model\AdjustmentInterface::ORDER_SHIPPING_PROMOTION_ADJUSTMENT + Sylius\Component\Core\Model\AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT + Sylius\Component\Core\Model\AdjustmentInterface::SHIPPING_ADJUSTMENT + Sylius\Component\Core\Model\AdjustmentInterface::TAX_ADJUSTMENT + diff --git a/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php b/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php index 28978a90378..54d1dd13257 100644 --- a/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php +++ b/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php @@ -22,20 +22,19 @@ final class OrderAdjustmentsClearer implements OrderProcessorInterface /** * @var array */ - private static $adjustmentsToRemove = [ - AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT, - AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, - AdjustmentInterface::ORDER_SHIPPING_PROMOTION_ADJUSTMENT, - AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT, - AdjustmentInterface::TAX_ADJUSTMENT, - ]; + private $adjustmentsToRemove; + + public function __construct(array $adjustmentsToRemove = []) + { + $this->adjustmentsToRemove = $adjustmentsToRemove; + } /** * {@inheritdoc} */ public function process(OrderInterface $order): void { - foreach (self::$adjustmentsToRemove as $type) { + foreach ($this->adjustmentsToRemove as $type) { $order->removeAdjustmentsRecursively($type); } } diff --git a/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php b/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php index 422c39870d9..ac366efd7d4 100644 --- a/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php +++ b/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php @@ -20,6 +20,17 @@ final class OrderAdjustmentsClearerSpec extends ObjectBehavior { + function let() + { + $this->beConstructedWith([ + AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_SHIPPING_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT, + AdjustmentInterface::TAX_ADJUSTMENT, + ]); + } + function it_is_an_order_processor(): void { $this->shouldImplement(OrderProcessorInterface::class); From e7f020eb79389e75bfa0828b0f6223ac4ed72f4a Mon Sep 17 00:00:00 2001 From: Mateusz Zalewski Date: Fri, 6 Apr 2018 13:57:58 +0200 Subject: [PATCH 2/2] Default adjustments types and deprecation error --- .../OrderAdjustmentsClearer.php | 15 +++++++++++ .../OrderAdjustmentsClearerSpec.php | 26 ++++++++++--------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php b/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php index 54d1dd13257..826ac0e1ec1 100644 --- a/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php +++ b/src/Sylius/Component/Core/OrderProcessing/OrderAdjustmentsClearer.php @@ -26,6 +26,21 @@ final class OrderAdjustmentsClearer implements OrderProcessorInterface public function __construct(array $adjustmentsToRemove = []) { + if (0 === func_num_args()) { + @trigger_error( + 'Not passing adjustments types explicitly is deprecated since 1.2 and will be prohibited in 2.0', + E_USER_DEPRECATED + ); + + $adjustmentsToRemove = [ + AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_SHIPPING_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT, + AdjustmentInterface::TAX_ADJUSTMENT, + ]; + } + $this->adjustmentsToRemove = $adjustmentsToRemove; } diff --git a/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php b/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php index ac366efd7d4..ae3dc8db2f2 100644 --- a/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php +++ b/src/Sylius/Component/Core/spec/OrderProcessing/OrderAdjustmentsClearerSpec.php @@ -20,23 +20,12 @@ final class OrderAdjustmentsClearerSpec extends ObjectBehavior { - function let() - { - $this->beConstructedWith([ - AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT, - AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, - AdjustmentInterface::ORDER_SHIPPING_PROMOTION_ADJUSTMENT, - AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT, - AdjustmentInterface::TAX_ADJUSTMENT, - ]); - } - function it_is_an_order_processor(): void { $this->shouldImplement(OrderProcessorInterface::class); } - function it_removes_adjustments_from_order_recursively(OrderInterface $order): void + function it_removes_adjustments_with_default_types_from_order_recursively(OrderInterface $order): void { $order->removeAdjustmentsRecursively(AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT)->shouldBeCalled(); $order->removeAdjustmentsRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->shouldBeCalled(); @@ -46,4 +35,17 @@ function it_removes_adjustments_from_order_recursively(OrderInterface $order): v $this->process($order); } + + function it_removes_adjustments_with_specified_types_from_order_recursively(OrderInterface $order): void + { + $this->beConstructedWith([ + AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT, + AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT, + ]); + + $order->removeAdjustmentsRecursively(AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT)->shouldBeCalled(); + $order->removeAdjustmentsRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->shouldBeCalled(); + + $this->process($order); + } }