Skip to content

Commit c20ad8e

Browse files
author
Oleksandr Osadchyi
committed
Merge branch 'MAGETWO-63403' into BUGS
2 parents e4e0d79 + f6eb218 commit c20ad8e

File tree

8 files changed

+122
-10
lines changed

8 files changed

+122
-10
lines changed

app/code/Magento/SalesRule/Model/ResourceModel/Rule/Collection.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,19 @@ public function setValidationFilter(
165165
\Magento\SalesRule\Model\Rule::COUPON_TYPE_NO_COUPON
166166
);
167167

168-
$orWhereConditions = [
168+
$autoGeneratedCouponCondition = [
169169
$connection->quoteInto(
170-
'(main_table.coupon_type = ? AND rule_coupons.type = 0)',
170+
"main_table.coupon_type = ?",
171171
\Magento\SalesRule\Model\Rule::COUPON_TYPE_AUTO
172172
),
173+
$connection->quoteInto(
174+
"rule_coupons.type = ?",
175+
\Magento\SalesRule\Api\Data\CouponInterface::TYPE_GENERATED
176+
),
177+
];
178+
179+
$orWhereConditions = [
180+
"(" . implode($autoGeneratedCouponCondition, " AND ") . ")",
173181
$connection->quoteInto(
174182
'(main_table.coupon_type = ? AND main_table.use_auto_generation = 1 AND rule_coupons.type = 1)',
175183
\Magento\SalesRule\Model\Rule::COUPON_TYPE_SPECIFIC

dev/tests/functional/tests/app/Magento/SalesRule/Test/Block/Adminhtml/Promo/Quote/Edit/PromoQuoteForm.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,9 @@
8080
<selector>[data-index="labels"]</selector>
8181
<strategy>css selector</strategy>
8282
</labels>
83+
<manage_coupon_code>
84+
<class>\Magento\SalesRule\Test\Block\Adminhtml\Promo\Quote\Edit\Section\ManageCouponCode</class>
85+
<selector>[data-index="block_promo_sales_rule_edit_tab_coupons"]</selector>
86+
<strategy>css selector</strategy>
87+
</manage_coupon_code>
8388
</sections>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\SalesRule\Test\Block\Adminhtml\Promo\Quote\Edit\Section;
7+
8+
use Magento\Mtf\Client\Locator;
9+
use Magento\Ui\Test\Block\Adminhtml\Section;
10+
11+
/**
12+
* Backend sales rule label section.
13+
*/
14+
class ManageCouponCode extends Section
15+
{
16+
const GENERATE_CODES_BUTTON_CSS_SELECTOR = ".action-default.scalable.generate";
17+
18+
const LAST_GENERATED_COUPON_CODE_SELECTOR = "//*[@id=\"couponCodesGrid_table\"]/tbody/tr/td[2]";
19+
20+
const SPINNER = ".loading-mask";
21+
22+
/**
23+
* Click on generate button in order to generate coupon codes
24+
*
25+
* @return void
26+
*/
27+
public function generateCouponCodes()
28+
{
29+
$button = $this->_rootElement->find(self::GENERATE_CODES_BUTTON_CSS_SELECTOR);
30+
$button->click();
31+
}
32+
33+
/**
34+
* Retrieve last generated coupon code
35+
*
36+
* @return string
37+
*/
38+
public function getGeneratedCouponCode()
39+
{
40+
$this->waitForSpinner();
41+
$column = $this->_rootElement->find(self::LAST_GENERATED_COUPON_CODE_SELECTOR, Locator::SELECTOR_XPATH);
42+
return $column->getText();
43+
}
44+
45+
private function waitForSpinner()
46+
{
47+
$this->waitForElementNotVisible(self::SPINNER);
48+
sleep(1);
49+
}
50+
}

dev/tests/functional/tests/app/Magento/SalesRule/Test/Constraint/AssertCartPriceRuleApplying.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ public function processAssert(
156156
Customer $customer = null,
157157
Address $address = null,
158158
$isLoggedIn = null,
159+
$couponCode = null,
159160
array $shipping = [],
160161
array $cartPrice = []
161162
) {
@@ -179,10 +180,15 @@ public function processAssert(
179180
$this->checkoutCart->getShippingBlock()->fillEstimateShippingAndTax($address);
180181
$this->checkoutCart->getShippingBlock()->selectShippingMethod($shipping);
181182
}
182-
if ($salesRule->getCouponCode() || $salesRuleOrigin->getCouponCode()) {
183-
$this->checkoutCart->getDiscountCodesBlock()->applyCouponCode(
184-
$salesRule->getCouponCode() ? $salesRule->getCouponCode() : $salesRuleOrigin->getCouponCode()
185-
);
183+
184+
if ($salesRule->getCouponCode()) {
185+
$couponCode = $salesRule->getCouponCode();
186+
} elseif ($salesRuleOrigin->getCouponCode()) {
187+
$couponCode = $salesRuleOrigin->getCouponCode();
188+
}
189+
190+
if ($salesRule->getCouponCode() || $salesRuleOrigin->getCouponCode() || $couponCode) {
191+
$this->checkoutCart->getDiscountCodesBlock()->applyCouponCode($couponCode);
186192
}
187193
$this->assert();
188194
}

dev/tests/functional/tests/app/Magento/SalesRule/Test/Repository/SalesRule.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
<field name="discount_amount" xsi:type="string">50</field>
9696
<field name="stop_rules_processing" xsi:type="string">Yes</field>
9797
</dataset>
98-
9998
<dataset name="active_sales_rule_with_complex_conditions">
10099
<field name="name" xsi:type="string">Cart Price Rule with with complex conditions %isolation%</field>
101100
<field name="description" xsi:type="string">Cart Price Rule with with complex conditions</field>

dev/tests/functional/tests/app/Magento/SalesRule/Test/TestCase/CreateSalesRuleEntityTest.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
namespace Magento\SalesRule\Test\TestCase;
88

9+
use Magento\SalesRule\Test\Block\Adminhtml\Promo\Quote\Edit\Section\ManageCouponCode;
910
use Magento\SalesRule\Test\Fixture\SalesRule;
1011
use Magento\SalesRule\Test\Page\Adminhtml\PromoQuoteEdit;
1112
use Magento\SalesRule\Test\Page\Adminhtml\PromoQuoteIndex;
@@ -107,7 +108,8 @@ public function testCreateSalesRule(
107108
CatalogProductSimple $productForSalesRule1,
108109
CatalogProductSimple $productForSalesRule2 = null,
109110
Customer $customer = null,
110-
$conditionEntity = null
111+
$conditionEntity = null,
112+
SalesRule $salesRuleEdit = null
111113
) {
112114
$replace = null;
113115
$this->salesRuleName = $salesRule->getName();
@@ -127,7 +129,22 @@ public function testCreateSalesRule(
127129
// Steps
128130
$this->promoQuoteNew->open();
129131
$this->promoQuoteNew->getSalesRuleForm()->fill($salesRule, null, $replace);
130-
$this->promoQuoteNew->getFormPageActions()->save();
132+
133+
if ($salesRule->getCouponType() == "Auto") {
134+
$this->promoQuoteNew->getFormPageActions()->saveAndContinue();
135+
$form = $this->promoQuoteEdit->getSalesRuleForm();
136+
$form->openSection('manage_coupon_code');
137+
/** @var ManageCouponCode $section */
138+
$section = $form->getSection('manage_coupon_code');
139+
$section->fill($salesRuleEdit);
140+
$section->generateCouponCodes();
141+
$couponCode = $section->getGeneratedCouponCode();
142+
$this->promoQuoteEdit->getFormPageActions()->save();
143+
144+
return ["couponCode" => $couponCode];
145+
} else {
146+
$this->promoQuoteNew->getFormPageActions()->save();
147+
}
131148
}
132149

133150
/**

dev/tests/functional/tests/app/Magento/SalesRule/Test/TestCase/CreateSalesRuleEntityTest.xml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,5 +424,32 @@
424424
<constraint name="Magento\SalesRule\Test\Constraint\AssertCartPriceRuleConditionIsApplied" />
425425
<constraint name="Magento\SalesRule\Test\Constraint\AssertCartPriceRuleFreeShippingIsApplied" />
426426
</variation>
427+
<variation name="CreateSalesRuleEntityTestVariation17">
428+
<data name="address/data/country_id" xsi:type="string">United States</data>
429+
<data name="address/data/region_id" xsi:type="string">California</data>
430+
<data name="address/data/postcode" xsi:type="string">95814</data>
431+
<data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
432+
<data name="shipping/shipping_method" xsi:type="string">Fixed</data>
433+
<data name="salesRule/data/name" xsi:type="string">Cart Price Rule2 %isolation%</data>
434+
<data name="salesRule/data/description" xsi:type="string">Cart Price Rule Description %isolation%</data>
435+
<data name="salesRule/data/is_active" xsi:type="string">Yes</data>
436+
<data name="salesRule/data/website_ids/0" xsi:type="string">Main Website</data>
437+
<data name="salesRule/data/customer_group_ids/0" xsi:type="string">NOT LOGGED IN</data>
438+
<data name="salesRule/data/coupon_type" xsi:type="string">Auto</data>
439+
<data name="salesRule/data/simple_action" xsi:type="string">Fixed amount discount</data>
440+
<data name="salesRule/data/discount_amount" xsi:type="string">35</data>
441+
<data name="salesRule/data/apply_to_shipping" xsi:type="string">No</data>
442+
<data name="salesRule/data/simple_free_shipping" xsi:type="string">No</data>
443+
<data name="salesRule/data/store_labels/0" xsi:type="string">Coupon code+fixed amount discount</data>
444+
<data name="salesRuleEdit/data/qty" xsi:type="string">1</data>
445+
<data name="productForSalesRule1/dataset" xsi:type="string">simple_for_salesrule_1</data>
446+
<data name="productQuantity/productForSalesRule1" xsi:type="string">2</data>
447+
<data name="cartPrice/sub_total" xsi:type="string">200.00</data>
448+
<data name="cartPrice/grand_total" xsi:type="string">140.00</data>
449+
<data name="cartPrice/discount" xsi:type="string">70.00</data>
450+
<constraint name="Magento\SalesRule\Test\Constraint\AssertCartPriceRuleSuccessSaveMessage" />
451+
<constraint name="Magento\SalesRule\Test\Constraint\AssertCartPriceRuleForm" />
452+
<constraint name="Magento\SalesRule\Test\Constraint\AssertCartPriceRuleConditionIsApplied" />
453+
</variation>
427454
</testCase>
428455
</config>

dev/tests/integration/testsuite/Magento/SalesRule/_files/coupons.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@
2727

2828
// type AUTO
2929
$coupon = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\SalesRule\Model\Coupon::class);
30-
$coupon->setRuleId($items[3]->getId())->setCode('coupon_code_auto')->setType(0)->save();
30+
$coupon->setRuleId($items[3]->getId())->setCode('coupon_code_auto')->setType(1)->save();

0 commit comments

Comments
 (0)