Skip to content
This repository was archived by the owner on Apr 29, 2019. It is now read-only.

Commit 8e9879f

Browse files
committed
MAGETWO-89990: Cover the entire flow with integration tests (MAGETWO-84695)
- Covered multiple place order action by integration test
1 parent 94ccd58 commit 8e9879f

15 files changed

+669
-95
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\Quote\Api\Data\AddressInterface;
7+
use Magento\TestFramework\Helper\Bootstrap;
8+
use Magento\TestFramework\ObjectManager;
9+
10+
/**
11+
* @var Magento\Quote\Model\Quote $quote
12+
*/
13+
14+
if (empty($quote)) {
15+
throw new \Exception('$quote should be defined in the parent fixture');
16+
}
17+
18+
$data = [
19+
'firstname' => 'Jonh',
20+
'lastname' => 'Doe',
21+
'telephone' => '0333-233-221',
22+
'street' => ['Third Division 1'],
23+
'city' => 'New York',
24+
'region' => 'NY',
25+
'postcode' => 10029,
26+
'country_id' => 'US',
27+
'email' => '[email protected]',
28+
'address_type' => 'billing',
29+
];
30+
31+
/** @var ObjectManager $objectManager */
32+
$objectManager = Bootstrap::getObjectManager();
33+
34+
/** @var AddressInterface $address */
35+
$address = $objectManager->create(AddressInterface::class, ['data' => $data]);
36+
$quote->setBillingAddress($address);
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\Quote\Model\Quote\Item;
7+
use Magento\TestFramework\Helper\Bootstrap;
8+
use Magento\TestFramework\ObjectManager;
9+
10+
/**
11+
* @var Magento\Quote\Model\Quote $quote
12+
*/
13+
14+
if (empty($quote)) {
15+
throw new \Exception('$quote should be defined in the parent fixture');
16+
}
17+
18+
$productList = [];
19+
require __DIR__ . '/simple_product_10.php';
20+
$productList[] = $product;
21+
22+
require __DIR__ . '/simple_product_20.php';
23+
$productList[] = $product;
24+
25+
require __DIR__ . '/virtual_product_5.php';
26+
$productList[] = $product;
27+
28+
/** @var ObjectManager $objectManager */
29+
$objectManager = Bootstrap::getObjectManager();
30+
31+
foreach ($productList as $product) {
32+
/** @var Item $item */
33+
$item = $objectManager->create(Item::class);
34+
$item->setProduct($product)
35+
->setPrice($product->getPrice())
36+
->setQty(1);
37+
$quote->addItem($item);
38+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
require __DIR__ . '/simple_product_10_rollback.php';
7+
require __DIR__ . '/simple_product_20_rollback.php';
8+
require __DIR__ . '/virtual_product_5_rollback.php';
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\TestFramework\Helper\Bootstrap;
7+
use Magento\TestFramework\ObjectManager;
8+
use Magento\Quote\Api\Data\PaymentInterface;
9+
10+
/**
11+
* @var Magento\Quote\Model\Quote $quote
12+
*/
13+
14+
if (empty($quote)) {
15+
throw new \Exception('$quote should be defined in the parent fixture');
16+
}
17+
18+
/** @var ObjectManager $objectManager */
19+
$objectManager = Bootstrap::getObjectManager();
20+
21+
/** @var PaymentInterface $payment */
22+
$payment = $objectManager->create(PaymentInterface::class);
23+
$payment->setMethod('checkmo');
24+
25+
$quote->setPayment($payment);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\TestFramework\Helper\Bootstrap;
7+
use Magento\TestFramework\ObjectManager;
8+
use Magento\Quote\Model\Quote;
9+
use Magento\Quote\Api\CartRepositoryInterface;
10+
11+
/** @var ObjectManager $objectManager */
12+
$objectManager = Bootstrap::getObjectManager();
13+
14+
/** @var Quote $quote */
15+
$quote = $objectManager->create(Quote::class);
16+
17+
require __DIR__ . '/shipping_address_list.php';
18+
require __DIR__ . '/billing_address.php';
19+
require __DIR__ . '/payment_method.php';
20+
require __DIR__ . '/items.php';
21+
22+
$quote->setReservedOrderId('multishipping_quote_id')
23+
->setCustomerEmail('[email protected]');
24+
25+
/** @var CartRepositoryInterface $quoteRepository */
26+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
27+
$quote->collectTotals();
28+
$quoteRepository->save($quote);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\Framework\Api\SearchCriteriaBuilder;
7+
use Magento\Quote\Api\CartRepositoryInterface;
8+
use Magento\TestFramework\Helper\Bootstrap;
9+
use Magento\TestFramework\ObjectManager;
10+
11+
require __DIR__ . '/items_rollback.php';
12+
13+
/** @var ObjectManager $objectManager */
14+
$objectManager = Bootstrap::getObjectManager();
15+
16+
/** @var SearchCriteriaBuilder $searchCriteriaBuilder */
17+
$searchCriteriaBuilder = $objectManager->get(SearchCriteriaBuilder::class);
18+
$searchCriteria = $searchCriteriaBuilder->addFilter('reserved_order_id', 'multishipping_quote_id')
19+
->create();
20+
21+
/** @var CartRepositoryInterface $quoteRepository */
22+
$quoteRepository = $objectManager->get(CartRepositoryInterface::class);
23+
$items = $quoteRepository->getList($searchCriteria)->getItems();
24+
25+
if (!empty($items)) {
26+
$quote = array_pop($items);
27+
$quoteRepository->delete($quote);
28+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\Quote\Model\Quote;
7+
8+
require __DIR__ . '/quote.php';
9+
10+
/**
11+
* @var Quote $quote
12+
*/
13+
14+
$items = $quote->getAllItems();
15+
$addressList = $quote->getAllShippingAddresses();
16+
17+
foreach ($addressList as $key => $address) {
18+
$item = $items[$key];
19+
// set correct quantity per shipping address
20+
$item->setQty(1);
21+
$address->setTotalQty(1);
22+
$address->addItem($item);
23+
}
24+
25+
// assign virtual product to the billing address
26+
$billingAddress = $quote->getBillingAddress();
27+
$virtualItem = $items[sizeof($items) - 1];
28+
$billingAddress->setTotalQty(1);
29+
$billingAddress->addItem($virtualItem);
30+
31+
// need to recollect totals
32+
$quote->setTotalsCollectedFlag(false);
33+
$quote->collectTotals();
34+
$quoteRepository->save($quote);
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
use Magento\TestFramework\Helper\Bootstrap;
7+
use Magento\TestFramework\ObjectManager;
8+
use Magento\Quote\Api\Data\AddressInterface;
9+
use Magento\Quote\Model\Quote\Address\Rate;
10+
11+
/**
12+
* @var Magento\Quote\Model\Quote $quote
13+
*/
14+
15+
if (empty($quote)) {
16+
throw new \Exception('$quote should be defined in the parent fixture');
17+
}
18+
19+
$addressList = [
20+
[
21+
'firstname' => 'Jonh',
22+
'lastname' => 'Doe',
23+
'telephone' => '0333-233-221',
24+
'street' => ['Main Division 1'],
25+
'city' => 'Culver City',
26+
'region' => 'CA',
27+
'postcode' => 90800,
28+
'country_id' => 'US',
29+
'email' => '[email protected]',
30+
'address_type' => 'shipping',
31+
],
32+
[
33+
'firstname' => 'Antoni',
34+
'lastname' => 'Holmes',
35+
'telephone' => '0333-233-221',
36+
'street' => ['Second Division 2'],
37+
'city' => 'Denver',
38+
'region' => 'CO',
39+
'postcode' => 80203,
40+
'country_id' => 'US',
41+
'email' => '[email protected]',
42+
'address_type' => 'shipping'
43+
]
44+
];
45+
46+
/** @var ObjectManager $objectManager */
47+
$objectManager = Bootstrap::getObjectManager();
48+
49+
$methodCode = 'flatrate_flatrate';
50+
foreach ($addressList as $data) {
51+
/** @var Rate $rate */
52+
$rate = $objectManager->create(Rate::class);
53+
$rate->setCode($methodCode)
54+
->setPrice(5.00);
55+
56+
$address = $objectManager->create(AddressInterface::class, ['data' => $data]);
57+
$address->setShippingMethod($methodCode)
58+
->addShippingRate($rate)
59+
->setShippingAmount(5.00)
60+
->setBaseShippingAmount(5.00);
61+
62+
$quote->addAddress($address);
63+
}
64+
$quote->setIsMultiShipping(1);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\Catalog\Api\ProductRepositoryInterface;
8+
use Magento\Catalog\Model\Product;
9+
use Magento\Catalog\Model\Product\Attribute\Source\Status;
10+
use Magento\Catalog\Model\Product\Type;
11+
use Magento\Catalog\Model\Product\Visibility;
12+
use Magento\CatalogInventory\Api\Data\StockItemInterface;
13+
use Magento\TestFramework\Helper\Bootstrap;
14+
use Magento\TestFramework\ObjectManager;
15+
16+
/** @var ObjectManager $objectManager */
17+
$objectManager = Bootstrap::getObjectManager();
18+
19+
/** @var Product $product */
20+
$product = $objectManager->create(Product::class);
21+
$product->isObjectNew(true);
22+
$product->setTypeId(Type::TYPE_SIMPLE)
23+
->setAttributeSetId(4)
24+
->setWebsiteIds([1])
25+
->setName('Simple Product 10')
26+
->setSku('simple_10')
27+
->setPrice(10)
28+
->setWeight(1)
29+
->setVisibility(Visibility::VISIBILITY_BOTH)
30+
->setStatus(Status::STATUS_ENABLED);
31+
32+
/** @var StockItemInterface $stockItem */
33+
$stockItem = $objectManager->create(StockItemInterface::class);
34+
$stockItem->setQty(100)
35+
->setIsInStock(true);
36+
$extensionAttributes = $product->getExtensionAttributes();
37+
$extensionAttributes->setStockItem($stockItem);
38+
39+
/** @var ProductRepositoryInterface $productRepository */
40+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
41+
$product = $productRepository->save($product);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\Catalog\Api\ProductRepositoryInterface;
8+
use Magento\TestFramework\Helper\Bootstrap;
9+
use Magento\TestFramework\ObjectManager;
10+
11+
/** @var ObjectManager $objectManager */
12+
$objectManager = Bootstrap::getObjectManager();
13+
14+
/** @var ProductRepositoryInterface $productRepository */
15+
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
16+
$productRepository->deleteById('simple_10');

0 commit comments

Comments
 (0)