Skip to content

Commit 47fe6dc

Browse files
committed
MTA-3785: Create auto test to check that shipping rates are reloaded based on City field value
1 parent 3a8df23 commit 47fe6dc

File tree

7 files changed

+300
-0
lines changed

7 files changed

+300
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Checkout\Test\Constraint;
8+
9+
use Magento\Checkout\Test\Page\CheckoutOnepage;
10+
use Magento\Mtf\Constraint\AbstractConstraint;
11+
12+
/**
13+
* Check that Shipping rate changes due to City change.
14+
*/
15+
class AssertCityBasedShippingRateChanged extends AbstractConstraint
16+
{
17+
/**
18+
* Wait element.
19+
*
20+
* @var string
21+
*/
22+
private $waitElement = '.loading-mask';
23+
24+
/**
25+
* @var CheckoutOnepage
26+
*/
27+
private $checkoutOnepage;
28+
29+
/**
30+
* Assert that Shipping rate changed on City change.
31+
*
32+
* @param CheckoutOnepage $checkoutOnepage
33+
* @return void
34+
*/
35+
public function processAssert(CheckoutOnepage $checkoutOnepage)
36+
{
37+
$this->checkoutOnepage = $checkoutOnepage;
38+
$rateChanged = $this->waitLoader();
39+
40+
\PHPUnit_Framework_Assert::assertTrue(
41+
$rateChanged,
42+
'Shipping rate has not been changed.'
43+
);
44+
}
45+
46+
/**
47+
* Wait load block.
48+
*
49+
* @return bool
50+
*/
51+
protected function waitLoader()
52+
{
53+
$shippingBlock = $this->checkoutOnepage->getShippingBlock();
54+
return (bool)$shippingBlock->waitUntil(
55+
function () use ($shippingBlock) {
56+
return $shippingBlock->find($this->waitElement)->isVisible() ? true : null;
57+
}
58+
);
59+
}
60+
61+
/**
62+
* Returns a string representation of successful assertion.
63+
*
64+
* @return string
65+
*/
66+
public function toString()
67+
{
68+
return "Shipping rate has been changed.";
69+
}
70+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Checkout\Test\TestStep;
8+
9+
use Magento\Checkout\Test\Constraint\AssertCityBasedShippingRateChanged;
10+
use Magento\Checkout\Test\Page\CheckoutOnepage;
11+
use Magento\Customer\Test\Fixture\Address;
12+
use Magento\Mtf\Fixture\FixtureFactory;
13+
use Magento\Mtf\TestStep\TestStepInterface;
14+
15+
/**
16+
* Fill shipping addresses step.
17+
*/
18+
class FillShippingAddressesStep implements TestStepInterface
19+
{
20+
/**
21+
* Onepage checkout page.
22+
*
23+
* @var CheckoutOnepage
24+
*/
25+
protected $checkoutOnepage;
26+
27+
/**
28+
* Address fixture.
29+
*
30+
* @var Address
31+
*/
32+
protected $shippingAddresses;
33+
34+
/**
35+
*
36+
* Assert City based Shipping rate.
37+
* @var
38+
*/
39+
protected $assertRate;
40+
41+
/**
42+
* @constructor
43+
* @param CheckoutOnepage $checkoutOnepage
44+
* @param FixtureFactory $fixtureFactory
45+
* @param AssertCityBasedShippingRateChanged $assertRate
46+
* @param array $shippingAddresses
47+
*/
48+
public function __construct(
49+
CheckoutOnepage $checkoutOnepage,
50+
FixtureFactory $fixtureFactory,
51+
AssertCityBasedShippingRateChanged $assertRate,
52+
array $shippingAddresses = []
53+
) {
54+
$this->checkoutOnepage = $checkoutOnepage;
55+
$this->assertRate = $assertRate;
56+
57+
foreach ($shippingAddresses as $address) {
58+
$this->shippingAddresses[] = $fixtureFactory->createByCode('address', ['dataset' => $address['dataset']]);
59+
}
60+
}
61+
62+
/**
63+
* Fill shipping address.
64+
*
65+
* @return void
66+
*/
67+
public function run()
68+
{
69+
foreach ($this->shippingAddresses as $shippingAddress) {
70+
$this->checkoutOnepage->getShippingBlock()->fill($shippingAddress);
71+
$this->assertRate->processAssert($this->checkoutOnepage);
72+
}
73+
}
74+
}

dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.xml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,5 +227,39 @@
227227
<field name="region_id" xsi:type="string">Berlin</field>
228228
<field name="telephone" xsi:type="string">333-33-333-33</field>
229229
</dataset>
230+
231+
<dataset name="DE_address_Frankfurt">
232+
<field name="firstname" xsi:type="string">Jan</field>
233+
<field name="lastname" xsi:type="string">Jansen</field>
234+
<field name="company" xsi:type="string">Magento %isolation%</field>
235+
<field name="city" xsi:type="string">Frankfurt</field>
236+
<field name="street" xsi:type="string">Marzellenstrasse 13-17</field>
237+
<field name="postcode" xsi:type="string">10789</field>
238+
<field name="country_id" xsi:type="string">Germany</field>
239+
<field name="region_id" xsi:type="string">Hessen</field>
240+
<field name="telephone" xsi:type="string">333-33-333-33</field>
241+
</dataset>
242+
243+
<dataset name="KE_Nairobi">
244+
<field name="firstname" xsi:type="string">John</field>
245+
<field name="lastname" xsi:type="string">Doe</field>
246+
<field name="company" xsi:type="string">Magento %isolation%</field>
247+
<field name="city" xsi:type="string">Nairobi</field>
248+
<field name="street" xsi:type="string">6161 West Centinela Avenue</field>
249+
<field name="telephone" xsi:type="string">555-55-555-55</field>
250+
<field name="country_id" xsi:type="string">Kenya</field>
251+
<field name="postcode" xsi:type="string">12345</field>
252+
</dataset>
253+
254+
<dataset name="KE_Mombasa">
255+
<field name="firstname" xsi:type="string">John</field>
256+
<field name="lastname" xsi:type="string">Doe</field>
257+
<field name="company" xsi:type="string">Magento %isolation%</field>
258+
<field name="city" xsi:type="string">Mombasa</field>
259+
<field name="street" xsi:type="string">6161 West Centinela Avenue</field>
260+
<field name="telephone" xsi:type="string">555-55-555-55</field>
261+
<field name="country_id" xsi:type="string">Kenya</field>
262+
<field name="postcode" xsi:type="string">12345</field>
263+
</dataset>
230264
</repository>
231265
</config>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
/**
4+
* Copyright © 2016 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
9+
<testCase name="Magento\Shipping\Test\TestCase\CityBasedShippingRateTest" summary="OnePageCheckout within Offline Payment Method and Fedex shipping method">
10+
<variation name="CityBasedShippingRateTestVariation2" summary="Use DHL International (EU) Online Shipping Carrier on Checkout as a Registered Customer" ticketId="MAGETWO-12850">
11+
<data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
12+
<data name="products/0" xsi:type="string">catalogProductSimple::default</data>
13+
<data name="checkoutMethod" xsi:type="string">login</data>
14+
<data name="customer/dataset" xsi:type="string">default</data>
15+
<data name="address/dataset" xsi:type="string">DE_address</data>
16+
<data name="shippingAddresses/0/dataset" xsi:type="string">DE_address</data>
17+
<data name="shippingAddresses/1/dataset" xsi:type="string">DE_address_Frankfurt</data>
18+
<data name="shipping/shipping_service" xsi:type="string">DHL</data>
19+
<data name="shipping/shipping_method" xsi:type="string">Express easy</data>
20+
<data name="cart/data/shipping_method" xsi:type="string">Express easy</data>
21+
<data name="payment/method" xsi:type="string">checkmo</data>
22+
<data name="configData" xsi:type="string">checkmo, dhl_eu, shipping_origin_CH, config_base_currency_ch</data>
23+
</variation>
24+
</testCase>
25+
</config>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
/**
4+
* Copyright © 2016 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
9+
<testCase name="Magento\Shipping\Test\TestCase\CityBasedShippingRateTest" summary="OnePageCheckout within Offline Payment Method and Fedex shipping method">
10+
<!--<variation name="CityBasedShippingRateTestVariation1" summary="Use FedEx Shipping rates are reloaded based on City field value" ticketId="MAGETWO-56124">
11+
<data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
12+
<data name="products/0" xsi:type="string">catalogProductSimple::default</data>
13+
<data name="checkoutMethod" xsi:type="string">login</data>
14+
<data name="customer/dataset" xsi:type="string">default</data>
15+
<data name="addresses/address/dataset" xsi:type="string">US_address_1</data>
16+
<data name="shippingAddresses/0/dataset" xsi:type="string">KE_Nairobi</data>
17+
<data name="shippingAddresses/1/dataset" xsi:type="string">KE_Mombasa</data>
18+
<data name="shipping/shipping_service" xsi:type="string">Federal Express</data>
19+
<data name="shipping/shipping_method" xsi:type="string">Ground</data>
20+
<data name="cart/data/shipping_method" xsi:type="string">Ground</data>
21+
<data name="payment/method" xsi:type="string">checkmo</data>
22+
<data name="configData" xsi:type="string">checkmo, fedex, shipping_origin_US_CA</data>
23+
</variation>-->
24+
</testCase>
25+
</config>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Shipping\Test\TestCase;
8+
9+
use Magento\Mtf\TestCase\Scenario;
10+
11+
/**
12+
* Preconditions:
13+
* 1. Configure shipping method.
14+
* 2. Configure payment method.
15+
* 3. Create products.
16+
* 4. Create and setup customer.
17+
* 5. Create sales rule according to dataset.
18+
*
19+
* Steps:
20+
* 1. Go to Frontend.
21+
* 2. Add products to the cart.
22+
* 3. Apply discounts in shopping cart according to dataset.
23+
* 4. In 'Estimate Shipping and Tax' section specify destination using values from Test Data.
24+
* 5. Click the 'Get a Quote' button.
25+
* 6. In the section appeared select Shipping method, click the 'Update Total' button.
26+
* 7. Click the 'Proceed to Checkout' button.
27+
* 8. Select checkout method according to dataset.
28+
* 9. Fill billing information and select the 'Ship to this address' option.
29+
* 10. Select shipping method.
30+
* 11. Select payment method (use reward points and store credit if available).
31+
* 12. Verify order total on review step.
32+
* 13. Place order.
33+
* 14. Perform assertions.
34+
*
35+
* @group Order_Management
36+
* @ZephyrId MAGETWO-56124
37+
*/
38+
class CityBasedShippingRateTest extends Scenario
39+
{
40+
/* tags */
41+
const MVP = 'yes';
42+
const TEST_TYPE = '3rd_party_test';
43+
/* end tags */
44+
45+
/**
46+
* Runs City Based Shipping Rate test.
47+
*
48+
* @return void
49+
*/
50+
public function test()
51+
{
52+
$this->executeScenario();
53+
}
54+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © 2016 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/Magento/Mtf/TestCase/etc/testcase.xsd">
9+
<scenario name="CityBasedShippingRateTest" firstStep="setupConfiguration">
10+
<step name="setupConfiguration" module="Magento_Config" next="createProducts" />
11+
<step name="createProducts" module="Magento_Catalog" next="addProductsToTheCart" />
12+
<step name="addProductsToTheCart" module="Magento_Checkout" next="proceedToCheckout" />
13+
<step name="proceedToCheckout" module="Magento_Checkout" next="createCustomer" />
14+
<step name="createCustomer" module="Magento_Customer" next="selectCheckoutMethod" />
15+
<step name="selectCheckoutMethod" module="Magento_Checkout" next="fillShippingAddresses" />
16+
<step name="fillShippingAddresses" module="Magento_Checkout" />
17+
</scenario>
18+
</config>

0 commit comments

Comments
 (0)