Skip to content

Commit 844427e

Browse files
author
Sergey Semenov
committed
Merge remote-tracking branch 'origin/MAGETWO-43701' into MAGETWO-37276
2 parents 7548b06 + d493536 commit 844427e

14 files changed

+976
-0
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Bundle\Api;
7+
8+
use Magento\TestFramework\TestCase\WebapiAbstract;
9+
10+
class OrderItemRepositoryTest extends WebapiAbstract
11+
{
12+
const RESOURCE_PATH = '/V1/orders/items';
13+
14+
const SERVICE_VERSION = 'V1';
15+
const SERVICE_NAME = 'salesOrderItemRepositoryV1';
16+
17+
const ORDER_INCREMENT_ID = '100000001';
18+
19+
/**
20+
* @var \Magento\TestFramework\ObjectManager
21+
*/
22+
protected $objectManager;
23+
24+
protected function setUp()
25+
{
26+
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
27+
}
28+
29+
/**
30+
* @magentoApiDataFixture Magento/Bundle/_files/order_item_with_bundle_and_options.php
31+
*/
32+
public function testGet()
33+
{
34+
/** @var \Magento\Sales\Model\Order $order */
35+
$order = $this->objectManager->create('Magento\Sales\Model\Order');
36+
$order->loadByIncrementId(self::ORDER_INCREMENT_ID);
37+
$orderItem = current($order->getItems());
38+
39+
$serviceInfo = [
40+
'rest' => [
41+
'resourcePath' => self::RESOURCE_PATH . '/' . $orderItem->getId(),
42+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
43+
],
44+
'soap' => [
45+
'service' => self::SERVICE_NAME,
46+
'serviceVersion' => self::SERVICE_VERSION,
47+
'operation' => self::SERVICE_NAME . 'get',
48+
],
49+
];
50+
51+
$response = $this->_webApiCall($serviceInfo, ['id' => $orderItem->getId()]);
52+
53+
$this->assertTrue(is_array($response));
54+
$this->assertOrderItem($orderItem, $response);
55+
}
56+
57+
/**
58+
* @magentoApiDataFixture Magento/Bundle/_files/order_item_with_bundle_and_options.php
59+
*/
60+
public function testGetList()
61+
{
62+
/** @var \Magento\Sales\Model\Order $order */
63+
$order = $this->objectManager->create('Magento\Sales\Model\Order');
64+
$order->loadByIncrementId(self::ORDER_INCREMENT_ID);
65+
66+
/** @var $searchCriteriaBuilder \Magento\Framework\Api\SearchCriteriaBuilder */
67+
$searchCriteriaBuilder = $this->objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
68+
/** @var $filterBuilder \Magento\Framework\Api\FilterBuilder */
69+
$filterBuilder = $this->objectManager->create('Magento\Framework\Api\FilterBuilder');
70+
71+
$searchCriteriaBuilder->addFilters(
72+
[
73+
$filterBuilder->setField('order_id')
74+
->setValue($order->getId())
75+
->create(),
76+
]
77+
);
78+
79+
$requestData = ['criteria' => $searchCriteriaBuilder->create()->__toArray()];
80+
81+
$serviceInfo = [
82+
'rest' => [
83+
'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($requestData),
84+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
85+
],
86+
'soap' => [
87+
'service' => self::SERVICE_NAME,
88+
'serviceVersion' => self::SERVICE_VERSION,
89+
'operation' => self::SERVICE_NAME . 'getList',
90+
],
91+
];
92+
93+
$response = $this->_webApiCall($serviceInfo, $requestData);
94+
95+
$this->assertTrue(is_array($response));
96+
$this->assertArrayHasKey('items', $response);
97+
$this->assertCount(1, $response['items']);
98+
$this->assertTrue(is_array($response['items'][0]));
99+
$this->assertOrderItem(current($order->getItems()), $response['items'][0]);
100+
}
101+
102+
/**
103+
* @param \Magento\Sales\Model\Order\Item $orderItem
104+
* @param array $response
105+
* @return void
106+
*/
107+
protected function assertOrderItem(\Magento\Sales\Model\Order\Item $orderItem, array $response)
108+
{
109+
$bundleOption = $orderItem->getBuyRequest()->getBundleOption();
110+
$bundleOptionQty = $orderItem->getBuyRequest()->getBundleOptionQty();
111+
112+
$this->assertArrayHasKey('product_option', $response);
113+
$this->assertArrayHasKey('extension_attributes', $response['product_option']);
114+
$this->assertArrayHasKey('bundle_options', $response['product_option']['extension_attributes']);
115+
116+
$actualOptions = $response['product_option']['extension_attributes']['bundle_options'];
117+
118+
$this->assertEquals(array_keys($bundleOption), array_column($actualOptions, 'option_id'));
119+
$this->assertEquals($bundleOptionQty, array_column($actualOptions, 'option_qty', 'option_id'));
120+
121+
foreach ($actualOptions as $option) {
122+
$expectedSelections = is_array($bundleOption[$option['option_id']])
123+
? $bundleOption[$option['option_id']]
124+
: [$bundleOption[$option['option_id']]];
125+
$this->assertEquals($expectedSelections, $option['option_selections']);
126+
}
127+
}
128+
}
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Catalog\Api;
7+
8+
use Magento\TestFramework\TestCase\WebapiAbstract;
9+
10+
class OrderItemRepositoryTest extends WebapiAbstract
11+
{
12+
const RESOURCE_PATH = '/V1/orders/items';
13+
14+
const SERVICE_VERSION = 'V1';
15+
const SERVICE_NAME = 'salesOrderItemRepositoryV1';
16+
17+
const ORDER_INCREMENT_ID = '100000001';
18+
19+
/**
20+
* @var \Magento\TestFramework\ObjectManager
21+
*/
22+
protected $objectManager;
23+
24+
protected function setUp()
25+
{
26+
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
27+
}
28+
29+
/**
30+
* @magentoApiDataFixture Magento/Catalog/_files/order_item_with_product_and_custom_options.php
31+
*/
32+
public function testGet()
33+
{
34+
/** @var \Magento\Sales\Model\Order $order */
35+
$order = $this->objectManager->create('Magento\Sales\Model\Order');
36+
$order->loadByIncrementId(self::ORDER_INCREMENT_ID);
37+
$orderItem = current($order->getItems());
38+
39+
$serviceInfo = [
40+
'rest' => [
41+
'resourcePath' => self::RESOURCE_PATH . '/' . $orderItem->getId(),
42+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
43+
],
44+
'soap' => [
45+
'service' => self::SERVICE_NAME,
46+
'serviceVersion' => self::SERVICE_VERSION,
47+
'operation' => self::SERVICE_NAME . 'get',
48+
],
49+
];
50+
51+
$response = $this->_webApiCall($serviceInfo, ['id' => $orderItem->getId()]);
52+
53+
$this->assertTrue(is_array($response));
54+
$this->assertOrderItem($orderItem, $response);
55+
}
56+
57+
/**
58+
* @magentoApiDataFixture Magento/Catalog/_files/order_item_with_product_and_custom_options.php
59+
*/
60+
public function testGetList()
61+
{
62+
/** @var \Magento\Sales\Model\Order $order */
63+
$order = $this->objectManager->create('Magento\Sales\Model\Order');
64+
$order->loadByIncrementId(self::ORDER_INCREMENT_ID);
65+
66+
/** @var $searchCriteriaBuilder \Magento\Framework\Api\SearchCriteriaBuilder */
67+
$searchCriteriaBuilder = $this->objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
68+
/** @var $filterBuilder \Magento\Framework\Api\FilterBuilder */
69+
$filterBuilder = $this->objectManager->create('Magento\Framework\Api\FilterBuilder');
70+
71+
$searchCriteriaBuilder->addFilters(
72+
[
73+
$filterBuilder->setField('order_id')
74+
->setValue($order->getId())
75+
->create(),
76+
]
77+
);
78+
79+
$requestData = ['criteria' => $searchCriteriaBuilder->create()->__toArray()];
80+
81+
$serviceInfo = [
82+
'rest' => [
83+
'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($requestData),
84+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
85+
],
86+
'soap' => [
87+
'service' => self::SERVICE_NAME,
88+
'serviceVersion' => self::SERVICE_VERSION,
89+
'operation' => self::SERVICE_NAME . 'getList',
90+
],
91+
];
92+
93+
$response = $this->_webApiCall($serviceInfo, $requestData);
94+
95+
$this->assertTrue(is_array($response));
96+
$this->assertArrayHasKey('items', $response);
97+
$this->assertCount(1, $response['items']);
98+
$this->assertTrue(is_array($response['items'][0]));
99+
$this->assertOrderItem(current($order->getItems()), $response['items'][0]);
100+
}
101+
102+
/**
103+
* @param \Magento\Sales\Model\Order\Item $orderItem
104+
* @param array $response
105+
* @return void
106+
*/
107+
protected function assertOrderItem(\Magento\Sales\Model\Order\Item $orderItem, array $response)
108+
{
109+
$expected = $orderItem->getBuyRequest()->getOptions();
110+
111+
$this->assertArrayHasKey('product_option', $response);
112+
$this->assertArrayHasKey('extension_attributes', $response['product_option']);
113+
$this->assertArrayHasKey('custom_options', $response['product_option']['extension_attributes']);
114+
115+
$actualOptions = $response['product_option']['extension_attributes']['custom_options'];
116+
117+
$expectedOptions = [];
118+
foreach ($expected as $optionId => $optionValue) {
119+
if (is_array($optionValue)) {
120+
$optionValue = implode(',', $optionValue);
121+
}
122+
$expectedOptions[] = [
123+
'option_id' => $optionId,
124+
'option_value' => $optionValue,
125+
];
126+
}
127+
$this->assertEquals($expectedOptions, $actualOptions);
128+
}
129+
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\ConfigurableProduct\Api;
7+
8+
use Magento\TestFramework\TestCase\WebapiAbstract;
9+
10+
class OrderItemRepositoryTest extends WebapiAbstract
11+
{
12+
const RESOURCE_PATH = '/V1/orders/items';
13+
14+
const SERVICE_VERSION = 'V1';
15+
const SERVICE_NAME = 'salesOrderItemRepositoryV1';
16+
17+
const ORDER_INCREMENT_ID = '100000001';
18+
19+
/**
20+
* @var \Magento\TestFramework\ObjectManager
21+
*/
22+
protected $objectManager;
23+
24+
protected function setUp()
25+
{
26+
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
27+
}
28+
29+
/**
30+
* @magentoApiDataFixture Magento/ConfigurableProduct/_files/order_item_with_configurable_and_options.php
31+
*/
32+
public function testGet()
33+
{
34+
/** @var \Magento\Sales\Model\Order $order */
35+
$order = $this->objectManager->create('Magento\Sales\Model\Order');
36+
$order->loadByIncrementId(self::ORDER_INCREMENT_ID);
37+
$orderItem = current($order->getItems());
38+
39+
$serviceInfo = [
40+
'rest' => [
41+
'resourcePath' => self::RESOURCE_PATH . '/' . $orderItem->getId(),
42+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
43+
],
44+
'soap' => [
45+
'service' => self::SERVICE_NAME,
46+
'serviceVersion' => self::SERVICE_VERSION,
47+
'operation' => self::SERVICE_NAME . 'get',
48+
],
49+
];
50+
51+
$response = $this->_webApiCall($serviceInfo, ['id' => $orderItem->getId()]);
52+
53+
$this->assertTrue(is_array($response));
54+
$this->assertOrderItem($orderItem, $response);
55+
}
56+
57+
/**
58+
* @magentoApiDataFixture Magento/ConfigurableProduct/_files/order_item_with_configurable_and_options.php
59+
*/
60+
public function testGetList()
61+
{
62+
/** @var \Magento\Sales\Model\Order $order */
63+
$order = $this->objectManager->create('Magento\Sales\Model\Order');
64+
$order->loadByIncrementId(self::ORDER_INCREMENT_ID);
65+
66+
/** @var $searchCriteriaBuilder \Magento\Framework\Api\SearchCriteriaBuilder */
67+
$searchCriteriaBuilder = $this->objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
68+
/** @var $filterBuilder \Magento\Framework\Api\FilterBuilder */
69+
$filterBuilder = $this->objectManager->create('Magento\Framework\Api\FilterBuilder');
70+
71+
$searchCriteriaBuilder->addFilters(
72+
[
73+
$filterBuilder->setField('order_id')
74+
->setValue($order->getId())
75+
->create(),
76+
]
77+
);
78+
79+
$requestData = ['criteria' => $searchCriteriaBuilder->create()->__toArray()];
80+
81+
$serviceInfo = [
82+
'rest' => [
83+
'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($requestData),
84+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
85+
],
86+
'soap' => [
87+
'service' => self::SERVICE_NAME,
88+
'serviceVersion' => self::SERVICE_VERSION,
89+
'operation' => self::SERVICE_NAME . 'getList',
90+
],
91+
];
92+
93+
$response = $this->_webApiCall($serviceInfo, $requestData);
94+
95+
$this->assertTrue(is_array($response));
96+
$this->assertArrayHasKey('items', $response);
97+
$this->assertCount(1, $response['items']);
98+
$this->assertTrue(is_array($response['items'][0]));
99+
$this->assertOrderItem(current($order->getItems()), $response['items'][0]);
100+
}
101+
102+
/**
103+
* @param \Magento\Sales\Model\Order\Item $orderItem
104+
* @param array $response
105+
* @return void
106+
*/
107+
protected function assertOrderItem(\Magento\Sales\Model\Order\Item $orderItem, array $response)
108+
{
109+
$expected = $orderItem->getBuyRequest()->getSuperAttribute();
110+
111+
$this->assertArrayHasKey('product_option', $response);
112+
$this->assertArrayHasKey('extension_attributes', $response['product_option']);
113+
$this->assertArrayHasKey('configurable_item_options', $response['product_option']['extension_attributes']);
114+
115+
$actualOptions = $response['product_option']['extension_attributes']['configurable_item_options'];
116+
117+
$this->assertTrue(is_array($actualOptions));
118+
$this->assertTrue(is_array($actualOptions[0]));
119+
$this->assertArrayHasKey('option_id', $actualOptions[0]);
120+
$this->assertArrayHasKey('option_value', $actualOptions[0]);
121+
122+
$this->assertEquals(key($expected), $actualOptions[0]['option_id']);
123+
$this->assertEquals(current($expected), $actualOptions[0]['option_value']);
124+
}
125+
}

0 commit comments

Comments
 (0)