@@ -498,31 +498,56 @@ public function multishippingDataProvider(): array
498
498
* @magentoDataFixture Magento/SalesRule/_files/cart_rule_50_percent_off_no_condition.php
499
499
* @magentoDataFixture Magento/SalesRule/_files/cart_fixed_10_discount.php
500
500
* @magentoDataFixture Magento/Checkout/_files/quote_with_simple_products.php
501
+ * @dataProvider discountByPercentDataProvider
501
502
* @return void
502
503
*/
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 );
510
513
$ quote = $ this ->getQuote ('test_quote_with_simple_products ' );
511
514
$ quote ->setCouponCode ('2?ds5!2d ' );
512
515
$ quote ->collectTotals ();
513
516
$ this ->quoteRepository ->save ($ quote );
514
517
$ this ->assertEquals (21.98 , $ quote ->getBaseSubtotal ());
515
- $ this ->assertEquals ($ totalDiscount , $ quote ->getShippingAddress ()->getDiscountAmount ());
518
+ $ this ->assertEquals ($ expectedDiscounts [ ' totalDiscount ' ] , $ quote ->getShippingAddress ()->getDiscountAmount ());
516
519
$ items = $ quote ->getAllItems ();
517
520
$ this ->assertCount (2 , $ items );
518
521
$ item = array_shift ($ items );
519
522
$ this ->assertEquals ('simple1 ' , $ item ->getSku ());
520
523
$ this ->assertEquals (5.99 , $ item ->getPrice ());
521
- $ this ->assertEquals ($ discounts [$ item ->getSku ()], $ item ->getDiscountAmount ());
524
+ $ this ->assertEquals ($ expectedDiscounts [$ item ->getSku ()], $ item ->getDiscountAmount ());
522
525
$ item = array_shift ($ items );
523
526
$ this ->assertEquals ('simple2 ' , $ item ->getSku ());
524
527
$ 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
+ ];
526
551
}
527
552
528
553
/**
0 commit comments