@@ -498,31 +498,56 @@ public function multishippingDataProvider(): array
498498 * @magentoDataFixture Magento/SalesRule/_files/cart_rule_50_percent_off_no_condition.php
499499 * @magentoDataFixture Magento/SalesRule/_files/cart_fixed_10_discount.php
500500 * @magentoDataFixture Magento/Checkout/_files/quote_with_simple_products.php
501+ * @dataProvider discountByPercentDataProvider
501502 * @return void
502503 */
503- public function testDiscountsWhenByPercentRuleAppliedFirstAndCartFixedRuleSecond (): void
504- {
505- $ totalDiscount = -20.99 ;
506- $ discounts = [
507- 'simple1 ' => 5.72 ,
508- 'simple2 ' => 15.27 ,
509- ];
504+ public function testDiscountsWhenByPercentRuleAppliedFirstAndCartFixedRuleSecond (
505+ $ percentDiscount ,
506+ $ expectedDiscounts
507+ ): void {
508+ //Update rule discount
509+ /** @var \Magento\SalesRule\Model\Rule $rule */
510+ $ rule = $ this ->getRule ('50% off - July 4 ' );
511+ $ rule ->setDiscountAmount ($ percentDiscount );
512+ $ this ->saveRule ($ rule );
510513 $ quote = $ this ->getQuote ('test_quote_with_simple_products ' );
511514 $ quote ->setCouponCode ('2?ds5!2d ' );
512515 $ quote ->collectTotals ();
513516 $ this ->quoteRepository ->save ($ quote );
514517 $ this ->assertEquals (21.98 , $ quote ->getBaseSubtotal ());
515- $ this ->assertEquals ($ totalDiscount , $ quote ->getShippingAddress ()->getDiscountAmount ());
518+ $ this ->assertEquals ($ expectedDiscounts [ ' totalDiscount ' ] , $ quote ->getShippingAddress ()->getDiscountAmount ());
516519 $ items = $ quote ->getAllItems ();
517520 $ this ->assertCount (2 , $ items );
518521 $ item = array_shift ($ items );
519522 $ this ->assertEquals ('simple1 ' , $ item ->getSku ());
520523 $ this ->assertEquals (5.99 , $ item ->getPrice ());
521- $ this ->assertEquals ($ discounts [$ item ->getSku ()], $ item ->getDiscountAmount ());
524+ $ this ->assertEquals ($ expectedDiscounts [$ item ->getSku ()], $ item ->getDiscountAmount ());
522525 $ item = array_shift ($ items );
523526 $ this ->assertEquals ('simple2 ' , $ item ->getSku ());
524527 $ this ->assertEquals (15.99 , $ item ->getPrice ());
525- $ this ->assertEquals ($ discounts [$ item ->getSku ()], $ item ->getDiscountAmount ());
528+ $ this ->assertEquals ($ expectedDiscounts [$ item ->getSku ()], $ item ->getDiscountAmount ());
529+ }
530+
531+ public function discountByPercentDataProvider ()
532+ {
533+ return [
534+ [
535+ 'percentDiscount ' => 0 ,
536+ 'expectedDiscounts ' => ['simple1 ' => 2.73 , 'simple2 ' => 7.27 , 'totalDiscount ' => -10 ]
537+ ],
538+ [
539+ 'percentDiscount ' => 15.5 ,
540+ 'expectedDiscounts ' => ['simple1 ' => 3.65 , 'simple2 ' => 9.76 , 'totalDiscount ' => -13.41 ]
541+ ],
542+ [
543+ 'percentDiscount ' => 50 ,
544+ 'expectedDiscounts ' => ['simple1 ' => 5.72 , 'simple2 ' => 15.27 , 'totalDiscount ' => -20.99 ]
545+ ],
546+ [
547+ 'percentDiscount ' => 100 ,
548+ 'expectedDiscounts ' => ['simple1 ' => 5.99 , 'simple2 ' => 15.99 , 'totalDiscount ' => -21.98 ]
549+ ],
550+ ];
526551 }
527552
528553 /**
0 commit comments