From 5be23a6321bfb49dc7140394cbc887d139931f57 Mon Sep 17 00:00:00 2001 From: Gabi Udrescu Date: Sun, 16 Oct 2016 13:32:25 +0300 Subject: [PATCH 1/4] added taxons filters --- ...nitFixedDiscountPromotionActionCommand.php | 8 ++--- ...rcentageDiscountPromotionActionCommand.php | 8 ++--- ...ixedDiscountPromotionActionCommandSpec.php | 8 ++--- ...tageDiscountPromotionActionCommandSpec.php | 33 +++++++++++++++++-- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php b/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php index 8f5db513636c..fa10cc9305af 100644 --- a/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php +++ b/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php @@ -38,8 +38,8 @@ final class UnitFixedDiscountPromotionActionCommand extends UnitDiscountPromotio /** * @param FactoryInterface $adjustmentFactory - * @param FilterInterface $priceRangeFilter - * @param FilterInterface $taxonFilter + * @param FilterInterface $priceRangeFilter + * @param FilterInterface $taxonFilter */ public function __construct( FactoryInterface $adjustmentFactory, @@ -78,12 +78,12 @@ public function execute(PromotionSubjectInterface $subject, array $configuration */ public function getConfigurationFormType() { - return 'sylius_promotion_action_fixed_discount_configuration'; + return 'sylius_promotion_action_unit_fixed_discount_configuration'; } /** * @param OrderItemInterface $item - * @param int $amount + * @param int $amount * @param PromotionInterface $promotion */ private function setUnitsAdjustments(OrderItemInterface $item, $amount, PromotionInterface $promotion) diff --git a/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php b/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php index 326d3b15f228..924aa1c46b00 100644 --- a/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php +++ b/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php @@ -38,8 +38,8 @@ final class UnitPercentageDiscountPromotionActionCommand extends UnitDiscountPro /** * @param FactoryInterface $adjustmentFactory - * @param FilterInterface $priceRangeFilter - * @param FilterInterface $taxonFilter + * @param FilterInterface $priceRangeFilter + * @param FilterInterface $taxonFilter */ public function __construct( FactoryInterface $adjustmentFactory, @@ -75,12 +75,12 @@ public function execute(PromotionSubjectInterface $subject, array $configuration */ public function getConfigurationFormType() { - return 'sylius_promotion_action_percentage_discount_configuration'; + return 'sylius_promotion_action_unit_percentage_discount_configuration'; } /** * @param OrderItemInterface $item - * @param int $promotionAmount + * @param int $promotionAmount * @param PromotionInterface $promotion */ private function setUnitsAdjustments(OrderItemInterface $item, $promotionAmount, PromotionInterface $promotion) diff --git a/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php b/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php index e2a8ac268a6d..7abf11eca5b0 100644 --- a/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php +++ b/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php @@ -31,7 +31,7 @@ */ final class UnitFixedDiscountPromotionActionCommandSpec extends ObjectBehavior { - function let( + public function let( FactoryInterface $adjustmentFactory, FilterInterface $priceRangeFilter, FilterInterface $taxonFilter @@ -39,7 +39,7 @@ function let( $this->beConstructedWith($adjustmentFactory, $priceRangeFilter, $taxonFilter); } - function it_is_initializable() + public function it_is_initializable() { $this->shouldHaveType(UnitFixedDiscountPromotionActionCommand::class); } @@ -232,8 +232,8 @@ function it_throws_an_exception_if_passed_subject_to_revert_is_not_order( ; } - function it_has_a_configuration_form_type() + public function it_has_configuration_form_type() { - $this->getConfigurationFormType()->shouldReturn('sylius_promotion_action_fixed_discount_configuration'); + $this->getConfigurationFormType()->shouldReturn('sylius_promotion_action_unit_fixed_discount_configuration'); } } diff --git a/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php b/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php index 1d51aa3212c5..bea09199c0b4 100644 --- a/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php +++ b/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php @@ -30,7 +30,7 @@ */ final class UnitPercentageDiscountPromotionActionCommandSpec extends ObjectBehavior { - function let( + public function let( FactoryInterface $adjustmentFactory, FilterInterface $priceRangeFilter, FilterInterface $taxonFilter @@ -38,20 +38,31 @@ function let( $this->beConstructedWith($adjustmentFactory, $priceRangeFilter, $taxonFilter); } - function it_is_initializable() + public function it_is_initializable() { $this->shouldHaveType(UnitPercentageDiscountPromotionActionCommand::class); } +<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_is_an_item_discount_action() +======= + public function it_is_item_discount_action() +>>>>>>> added taxons filters { $this->shouldHaveType(UnitDiscountPromotionActionCommand::class); } +<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_applies_percentage_discount_on_every_unit_in_order( FactoryInterface $adjustmentFactory, FilterInterface $priceRangeFilter, FilterInterface $taxonFilter, +======= + public function it_applies_percentage_discount_on_every_unit_in_order( + $adjustmentFactory, + $priceRangeFilter, + $taxonFilter, +>>>>>>> added taxons filters AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, Collection $originalItems, @@ -105,7 +116,11 @@ function it_applies_percentage_discount_on_every_unit_in_order( $this->execute($order, ['percentage' => 0.2, 'filters' => ['taxons' => ['testTaxon']]], $promotion); } +<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_throws_an_exception_if_passed_subject_is_not_order( +======= + public function it_throws_exception_if_passed_subject_is_not_order( +>>>>>>> added taxons filters PromotionSubjectInterface $subject, PromotionInterface $promotion ) { @@ -115,7 +130,11 @@ function it_throws_an_exception_if_passed_subject_is_not_order( ; } +<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_reverts_a_proper_promotion_adjustment_from_all_units( +======= + public function it_reverts_proper_promotion_adjustment_from_all_units( +>>>>>>> added taxons filters AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, Collection $items, @@ -149,7 +168,11 @@ function it_reverts_a_proper_promotion_adjustment_from_all_units( $this->revert($order, ['percentage' => 0.2], $promotion); } +<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_throws_an_exception_if_passed_subject_to_revert_is_not_order( +======= + public function it_throws_exception_if_passed_subject_to_revert_is_not_order( +>>>>>>> added taxons filters PromotionSubjectInterface $subject, PromotionInterface $promotion ) { @@ -159,8 +182,12 @@ function it_throws_an_exception_if_passed_subject_to_revert_is_not_order( ; } +<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_has_a_configuration_form_type() +======= + public function it_has_configuration_form_type() +>>>>>>> added taxons filters { - $this->getConfigurationFormType()->shouldReturn('sylius_promotion_action_percentage_discount_configuration'); + $this->getConfigurationFormType()->shouldReturn('sylius_promotion_action_unit_percentage_discount_configuration'); } } From bfe2fd517abd2b851402506474273bcac5e7e9bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Wed, 19 Oct 2016 11:01:33 +0200 Subject: [PATCH 2/4] CS fixes --- ...nitFixedDiscountPromotionActionCommand.php | 6 ++-- ...rcentageDiscountPromotionActionCommand.php | 6 ++-- ...ixedDiscountPromotionActionCommandSpec.php | 6 ++-- ...tageDiscountPromotionActionCommandSpec.php | 31 ++----------------- 4 files changed, 11 insertions(+), 38 deletions(-) diff --git a/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php b/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php index fa10cc9305af..9a89509cb9d3 100644 --- a/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php +++ b/Promotion/Action/UnitFixedDiscountPromotionActionCommand.php @@ -38,8 +38,8 @@ final class UnitFixedDiscountPromotionActionCommand extends UnitDiscountPromotio /** * @param FactoryInterface $adjustmentFactory - * @param FilterInterface $priceRangeFilter - * @param FilterInterface $taxonFilter + * @param FilterInterface $priceRangeFilter + * @param FilterInterface $taxonFilter */ public function __construct( FactoryInterface $adjustmentFactory, @@ -83,7 +83,7 @@ public function getConfigurationFormType() /** * @param OrderItemInterface $item - * @param int $amount + * @param int $amount * @param PromotionInterface $promotion */ private function setUnitsAdjustments(OrderItemInterface $item, $amount, PromotionInterface $promotion) diff --git a/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php b/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php index 924aa1c46b00..de8d5b3ffad4 100644 --- a/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php +++ b/Promotion/Action/UnitPercentageDiscountPromotionActionCommand.php @@ -38,8 +38,8 @@ final class UnitPercentageDiscountPromotionActionCommand extends UnitDiscountPro /** * @param FactoryInterface $adjustmentFactory - * @param FilterInterface $priceRangeFilter - * @param FilterInterface $taxonFilter + * @param FilterInterface $priceRangeFilter + * @param FilterInterface $taxonFilter */ public function __construct( FactoryInterface $adjustmentFactory, @@ -80,7 +80,7 @@ public function getConfigurationFormType() /** * @param OrderItemInterface $item - * @param int $promotionAmount + * @param int $promotionAmount * @param PromotionInterface $promotion */ private function setUnitsAdjustments(OrderItemInterface $item, $promotionAmount, PromotionInterface $promotion) diff --git a/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php b/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php index 7abf11eca5b0..43e33eae9e99 100644 --- a/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php +++ b/spec/Promotion/Action/UnitFixedDiscountPromotionActionCommandSpec.php @@ -31,7 +31,7 @@ */ final class UnitFixedDiscountPromotionActionCommandSpec extends ObjectBehavior { - public function let( + function let( FactoryInterface $adjustmentFactory, FilterInterface $priceRangeFilter, FilterInterface $taxonFilter @@ -39,7 +39,7 @@ public function let( $this->beConstructedWith($adjustmentFactory, $priceRangeFilter, $taxonFilter); } - public function it_is_initializable() + function it_is_initializable() { $this->shouldHaveType(UnitFixedDiscountPromotionActionCommand::class); } @@ -232,7 +232,7 @@ function it_throws_an_exception_if_passed_subject_to_revert_is_not_order( ; } - public function it_has_configuration_form_type() + function it_has_a_configuration_form_type() { $this->getConfigurationFormType()->shouldReturn('sylius_promotion_action_unit_fixed_discount_configuration'); } diff --git a/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php b/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php index bea09199c0b4..3436e3af4d8c 100644 --- a/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php +++ b/spec/Promotion/Action/UnitPercentageDiscountPromotionActionCommandSpec.php @@ -30,7 +30,7 @@ */ final class UnitPercentageDiscountPromotionActionCommandSpec extends ObjectBehavior { - public function let( + function let( FactoryInterface $adjustmentFactory, FilterInterface $priceRangeFilter, FilterInterface $taxonFilter @@ -38,31 +38,20 @@ public function let( $this->beConstructedWith($adjustmentFactory, $priceRangeFilter, $taxonFilter); } - public function it_is_initializable() + function it_is_initializable() { $this->shouldHaveType(UnitPercentageDiscountPromotionActionCommand::class); } -<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_is_an_item_discount_action() -======= - public function it_is_item_discount_action() ->>>>>>> added taxons filters { $this->shouldHaveType(UnitDiscountPromotionActionCommand::class); } -<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_applies_percentage_discount_on_every_unit_in_order( FactoryInterface $adjustmentFactory, FilterInterface $priceRangeFilter, FilterInterface $taxonFilter, -======= - public function it_applies_percentage_discount_on_every_unit_in_order( - $adjustmentFactory, - $priceRangeFilter, - $taxonFilter, ->>>>>>> added taxons filters AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, Collection $originalItems, @@ -116,11 +105,7 @@ public function it_applies_percentage_discount_on_every_unit_in_order( $this->execute($order, ['percentage' => 0.2, 'filters' => ['taxons' => ['testTaxon']]], $promotion); } -<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_throws_an_exception_if_passed_subject_is_not_order( -======= - public function it_throws_exception_if_passed_subject_is_not_order( ->>>>>>> added taxons filters PromotionSubjectInterface $subject, PromotionInterface $promotion ) { @@ -130,11 +115,7 @@ public function it_throws_exception_if_passed_subject_is_not_order( ; } -<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_reverts_a_proper_promotion_adjustment_from_all_units( -======= - public function it_reverts_proper_promotion_adjustment_from_all_units( ->>>>>>> added taxons filters AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, Collection $items, @@ -168,11 +149,7 @@ public function it_reverts_proper_promotion_adjustment_from_all_units( $this->revert($order, ['percentage' => 0.2], $promotion); } -<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_throws_an_exception_if_passed_subject_to_revert_is_not_order( -======= - public function it_throws_exception_if_passed_subject_to_revert_is_not_order( ->>>>>>> added taxons filters PromotionSubjectInterface $subject, PromotionInterface $promotion ) { @@ -182,11 +159,7 @@ public function it_throws_exception_if_passed_subject_to_revert_is_not_order( ; } -<<<<<<< 79e1ae723f64dd234dbbb0a1b0829f58988422ab function it_has_a_configuration_form_type() -======= - public function it_has_configuration_form_type() ->>>>>>> added taxons filters { $this->getConfigurationFormType()->shouldReturn('sylius_promotion_action_unit_percentage_discount_configuration'); } From 9807b6ec9fb764a617834ad44fb8a0d08ddf6745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Thu, 20 Oct 2016 15:33:29 +0200 Subject: [PATCH 3/4] [Promotion] Add filter suffix to price range --- Promotion/Filter/PriceRangeFilter.php | 4 ++-- spec/Promotion/Filter/PriceRangeFilterSpec.php | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Promotion/Filter/PriceRangeFilter.php b/Promotion/Filter/PriceRangeFilter.php index 2e56f4bfb4e2..bd6dee83f95e 100644 --- a/Promotion/Filter/PriceRangeFilter.php +++ b/Promotion/Filter/PriceRangeFilter.php @@ -29,7 +29,7 @@ public function filter(array $items, array $configuration) $filteredItems = []; foreach ($items as $item) { - if ($this->isItemVariantInPriceRange($item->getVariant(), $configuration['filters']['price_range'])) { + if ($this->isItemVariantInPriceRange($item->getVariant(), $configuration['filters']['price_range_filter'])) { $filteredItems[] = $item; } } @@ -61,6 +61,6 @@ private function isItemVariantInPriceRange(ProductVariantInterface $variant, arr */ private function isConfigured(array $configuration) { - return isset($configuration['filters']['price_range']['min']); + return isset($configuration['filters']['price_range_filter']['min']); } } diff --git a/spec/Promotion/Filter/PriceRangeFilterSpec.php b/spec/Promotion/Filter/PriceRangeFilterSpec.php index f443b2ea55e6..5177f87698e0 100644 --- a/spec/Promotion/Filter/PriceRangeFilterSpec.php +++ b/spec/Promotion/Filter/PriceRangeFilterSpec.php @@ -49,7 +49,7 @@ function it_filters_items_which_has_product_with_price_that_fits_in_configured_r $item3Variant->getPrice()->willReturn(15000); $this - ->filter([$item1, $item2, $item3], ['filters' => ['price_range' => ['min' => 1000, 'max' => 10000]]]) + ->filter([$item1, $item2, $item3], ['filters' => ['price_range_filter' => ['min' => 1000, 'max' => 10000]]]) ->shouldReturn([$item2]) ; } @@ -67,7 +67,7 @@ function it_filters_items_which_has_product_with_price_equal_to_minimum_criteria $item2Variant->getPrice()->willReturn(15000); $this - ->filter([$item1, $item2], ['filters' => ['price_range' => ['min' => 1000, 'max' => 10000]]]) + ->filter([$item1, $item2], ['filters' => ['price_range_filter' => ['min' => 1000, 'max' => 10000]]]) ->shouldReturn([$item1]) ; } @@ -85,7 +85,7 @@ function it_filters_items_which_has_product_with_price_equal_to_maximum_criteria $item2Variant->getPrice()->willReturn(10000); $this - ->filter([$item1, $item2], ['filters' => ['price_range' => ['min' => 1000, 'max' => 10000]]]) + ->filter([$item1, $item2], ['filters' => ['price_range_filter' => ['min' => 1000, 'max' => 10000]]]) ->shouldReturn([$item2]) ; } @@ -107,7 +107,7 @@ function it_filters_items_which_has_product_with_price_that_is_bigger_than_confi $item3Variant->getPrice()->willReturn(10000); $this - ->filter([$item1, $item2, $item3], ['filters' => ['price_range' => ['min' => 1000]]]) + ->filter([$item1, $item2, $item3], ['filters' => ['price_range_filter' => ['min' => 1000]]]) ->shouldReturn([$item2, $item3]) ; } @@ -125,7 +125,7 @@ function it_filters_items_which_has_product_with_price_equal_to_configured_minim $item2Variant->getPrice()->willReturn(1000); $this - ->filter([$item1, $item2], ['filters' => ['price_range' => ['min' => 1000]]]) + ->filter([$item1, $item2], ['filters' => ['price_range_filter' => ['min' => 1000]]]) ->shouldReturn([$item2]) ; } @@ -133,6 +133,6 @@ function it_filters_items_which_has_product_with_price_equal_to_configured_minim function it_returns_all_items_if_configuration_is_invalid(OrderItemInterface $item1, OrderItemInterface $item2) { $this->filter([$item1, $item2], [])->shouldReturn([$item1, $item2]); - $this->filter([$item1, $item2], ['filters' => ['price_range' => ['max' => 10000]]])->shouldReturn([$item1, $item2]); + $this->filter([$item1, $item2], ['filters' => ['price_range_filter' => ['max' => 10000]]])->shouldReturn([$item1, $item2]); } } From c4aeea8b6502c9d93dfad1ee2fdea9cde0d59198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Thu, 20 Oct 2016 15:35:52 +0200 Subject: [PATCH 4/4] [Promotion] Add taxon filter --- Promotion/Filter/TaxonFilter.php | 4 ++-- spec/Promotion/Filter/TaxonFilterSpec.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Promotion/Filter/TaxonFilter.php b/Promotion/Filter/TaxonFilter.php index 5356503cdc93..8d6846017838 100644 --- a/Promotion/Filter/TaxonFilter.php +++ b/Promotion/Filter/TaxonFilter.php @@ -23,13 +23,13 @@ final class TaxonFilter implements FilterInterface */ public function filter(array $items, array $configuration) { - if (!isset($configuration['filters']['taxons'])) { + if (!isset($configuration['filters']['taxons_filter'])) { return $items; } $filteredItems = []; foreach ($items as $item) { - if ($this->hasProductValidTaxon($item->getProduct(), $configuration['filters']['taxons'])) { + if ($this->hasProductValidTaxon($item->getProduct(), $configuration['filters']['taxons_filter']['taxons'])) { $filteredItems[] = $item; } } diff --git a/spec/Promotion/Filter/TaxonFilterSpec.php b/spec/Promotion/Filter/TaxonFilterSpec.php index ec7bef48e952..31e910700675 100644 --- a/spec/Promotion/Filter/TaxonFilterSpec.php +++ b/spec/Promotion/Filter/TaxonFilterSpec.php @@ -49,7 +49,7 @@ function it_filters_passed_order_items_with_given_configuration( $product2->getTaxons()->willReturn([$taxon2]); $taxon2->getCode()->willReturn('taxon2'); - $this->filter([$item1, $item2], ['filters' => ['taxons' => ['taxon1']]])->shouldReturn([$item1]); + $this->filter([$item1, $item2], ['filters' => ['taxons_filter' => ['taxons' => ['taxon1']]]])->shouldReturn([$item1]); } function it_returns_all_items_if_configuration_is_invalid(OrderItemInterface $item)