Skip to content

Commit 25c9fc8

Browse files
author
Oleksandr Dubovyk
committed
Merge remote-tracking branch 'local/MC-37729' into PR17november
2 parents 2cf0433 + 78f8285 commit 25c9fc8

File tree

4 files changed

+158
-0
lines changed

4 files changed

+158
-0
lines changed

app/code/Magento/SalesRule/Model/Rule/Condition/Address.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public function loadAttributeOptions()
6262
{
6363
$attributes = [
6464
'base_subtotal_with_discount' => __('Subtotal (Excl. Tax)'),
65+
'base_subtotal_total_incl_tax' => __('Subtotal (Incl. Tax)'),
6566
'base_subtotal' => __('Subtotal'),
6667
'total_qty' => __('Total Items Quantity'),
6768
'weight' => __('Total Weight'),
@@ -99,6 +100,7 @@ public function getInputType()
99100
{
100101
switch ($this->getAttribute()) {
101102
case 'base_subtotal':
103+
case 'base_subtotal_total_incl_tax':
102104
case 'weight':
103105
case 'total_qty':
104106
return 'numeric';

app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleAddressConditionsData.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
1111
<entity name="SalesRuleAddressConditions" type="SalesRuleConditionAttribute">
1212
<data key="subtotal">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</data>
13+
<data key="base_subtotal_total_incl_tax">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal_total_incl_tax</data>
1314
<data key="totalItemsQty">Magento\SalesRule\Model\Rule\Condition\Address|total_qty</data>
1415
<data key="totalWeight">Magento\SalesRule\Model\Rule\Condition\Address|weight</data>
1516
<data key="shippingMethod">Magento\SalesRule\Model\Rule\Condition\Address|shipping_method</data>
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminCreateCartPriceRuleWithSubtotalInclTaxTest">
11+
<annotations>
12+
<stories value="Create Sales Rule"/>
13+
<title value="Create Cart Price Rule with Subtotal Incl Tax"/>
14+
<description value="Test that cart price rule with Subtotal Incl Tax works correctly"/>
15+
<severity value="CRITICAL"/>
16+
<useCaseId value="MC-37729"/>
17+
<testCaseId value="MC-38971"/>
18+
<group value="SalesRule"/>
19+
</annotations>
20+
<before>
21+
<!--Login to backend-->
22+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
23+
<!--Create tax rate for US-CA-*-->
24+
<createData entity="defaultTaxRate" stepKey="taxRate"/>
25+
<!--Create tax rule-->
26+
<actionGroup ref="AdminCreateTaxRuleActionGroup" stepKey="createTaxRule">
27+
<argument name="taxRate" value="$$taxRate$$"/>
28+
<argument name="taxRule" value="SimpleTaxRule"/>
29+
</actionGroup>
30+
<!--Create simple product-->
31+
<createData entity="SimpleProduct2" stepKey="product">
32+
<field key="price">100</field>
33+
</createData>
34+
<!--Create cart price rule with no coupon and 50% discount-->
35+
<createData entity="ApiCartRule" stepKey="createCartPriceRule"/>
36+
<!--Add "subtotal incl tax > 100" condition to cart price rule-->
37+
<amOnPage url="{{AdminCartPriceRuleEditPage.url($$createCartPriceRule.rule_id$$)}}" stepKey="openEditRule"/>
38+
<actionGroup ref="SetCartAttributeConditionForCartPriceRuleActionGroup" stepKey="setCartAttributeConditionForCartPriceRule">
39+
<argument name="attributeName" value="{{SalesRuleAddressConditions.base_subtotal_total_incl_tax}}"/>
40+
<argument name="operatorType" value="greater than"/>
41+
<argument name="value" value="100"/>
42+
</actionGroup>
43+
</before>
44+
<after>
45+
<!--Delete tax rule-->
46+
<actionGroup ref="AdminDeleteTaxRule" stepKey="deleteTaxRule">
47+
<argument name="taxRuleCode" value="{{SimpleTaxRule.code}}" />
48+
</actionGroup>
49+
<!--Delete tax rate-->
50+
<deleteData createDataKey="taxRate" stepKey="deleteTaxRate"/>
51+
<!--Delete product-->
52+
<deleteData createDataKey="product" stepKey="deleteProduct"/>
53+
<!--Delete cart price rule-->
54+
<deleteData createDataKey="createCartPriceRule" stepKey="deleteCartPriceRule"/>
55+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
56+
</after>
57+
58+
<!--Open product -->
59+
<actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="openProduct2Page">
60+
<argument name="product" value="$$product$$"/>
61+
</actionGroup>
62+
<!--Add to cart -->
63+
<actionGroup ref="StorefrontAddToTheCartActionGroup" stepKey="product2AddToCart"/>
64+
<!--Click on mini cart-->
65+
<actionGroup ref="StorefrontClickOnMiniCartActionGroup" stepKey="clickOnMiniCart"/>
66+
<!--Click on view and edit cart link-->
67+
<actionGroup ref="ClickViewAndEditCartFromMiniCartActionGroup" stepKey="goToShoppingCartFromMinicart"/>
68+
<waitForPageLoad stepKey="waitForViewAndEditCartToOpen"/>
69+
<!--Assert that tax and discount are not applied by default-->
70+
<actionGroup ref="StorefrontCheckCartActionGroup" stepKey="AssertTaxAndDiscountIsNotApplied">
71+
<argument name="subtotal" value="$100.00"/>
72+
<argument name="shipping" value="$5.00"/>
73+
<argument name="shippingMethod" value="Flat Rate - Fixed"/>
74+
<argument name="total" value="$105.00"/>
75+
</actionGroup>
76+
<dontSee selector="{{CheckoutCartSummarySection.discountAmount}}" stepKey="assertDiscountIsNotApplied"/>
77+
<!--Open "Estimate Shipping and Tax" section and fill US-CA address -->
78+
<actionGroup ref="StorefrontCartEstimateShippingAndTaxActionGroup" stepKey="fillEstimateShippingAndTaxSection">
79+
<argument name="estimateAddress" value="EstimateAddressCalifornia"/>
80+
</actionGroup>
81+
<!--Assert that tax and discount are applied by to total amount-->
82+
<actionGroup ref="StorefrontCheckCartActionGroup" stepKey="AssertTaxAndDiscountIsApplied">
83+
<argument name="subtotal" value="$100.00"/>
84+
<argument name="shipping" value="$5.00"/>
85+
<argument name="shippingMethod" value="Flat Rate - Fixed"/>
86+
<argument name="total" value="$60.00"/>
87+
</actionGroup>
88+
<see selector="{{CheckoutCartSummarySection.discountAmount}}" userInput="-$50.00" stepKey="assertDiscountIsApplied"/>
89+
</test>
90+
</tests>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\SalesRule\Test\Unit\Model\Rule\Condition;
9+
10+
use Magento\SalesRule\Model\Rule\Condition\Address;
11+
use PHPUnit\Framework\TestCase;
12+
13+
/**
14+
* Test for address rule condition
15+
*/
16+
class AddressTest extends TestCase
17+
{
18+
/**
19+
* @var Address
20+
*/
21+
private $model;
22+
23+
/**
24+
* @inheritDoc
25+
*/
26+
protected function setUp(): void
27+
{
28+
parent::setUp();
29+
$context = $this->createMock(\Magento\Rule\Model\Condition\Context::class);
30+
$directoryCountry = $this->createMock(\Magento\Directory\Model\Config\Source\Country::class);
31+
$directoryAllregion = $this->createMock(\Magento\Directory\Model\Config\Source\Allregion::class);
32+
$shippingAllmethods = $this->createMock(\Magento\Shipping\Model\Config\Source\Allmethods::class);
33+
$paymentAllmethods = $this->createMock(\Magento\Payment\Model\Config\Source\Allmethods::class);
34+
$this->model = new Address(
35+
$context,
36+
$directoryCountry,
37+
$directoryAllregion,
38+
$shippingAllmethods,
39+
$paymentAllmethods
40+
);
41+
}
42+
43+
/**
44+
* Test that all attributes are present in options list
45+
*/
46+
public function testLoadAttributeOptions(): void
47+
{
48+
$attributes = [
49+
'base_subtotal_with_discount',
50+
'base_subtotal_total_incl_tax',
51+
'base_subtotal',
52+
'total_qty',
53+
'weight',
54+
'payment_method',
55+
'shipping_method',
56+
'postcode',
57+
'region',
58+
'region_id',
59+
'country_id',
60+
];
61+
62+
$this->model->loadAttributeOptions();
63+
$this->assertEquals($attributes, array_keys($this->model->getAttributeOption()));
64+
}
65+
}

0 commit comments

Comments
 (0)