Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ShipOrderTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
19 
21 {
22  const SERVICE_READ_NAME = 'salesShipOrderV1';
23 
24  const SERVICE_VERSION = 'V1';
25 
29  private $objectManager;
30 
34  private $orderRepository;
35 
39  private $searchCriteriaBuilder;
40 
44  private $shipmentRepository;
45 
49  protected function setUp()
50  {
51  $this->objectManager = Bootstrap::getObjectManager();
52 
53  $this->orderRepository = $this->objectManager->get(OrderRepositoryInterface::class);
54  $this->searchCriteriaBuilder = $this->objectManager->get(SearchCriteriaBuilder::class);
55  $this->shipmentRepository = $this->objectManager->get(ShipmentRepositoryInterface::class);
56  }
57 
70  public function testShipOrderWithSimpleProduct()
71  {
72  $searchCriteria = $this->searchCriteriaBuilder
73  ->addFilter('increment_id', 'created_order_for_test')
74  ->create();
76  $createdOrder = current($this->orderRepository->getList($searchCriteria)->getItems());
77 
78  $requestData = [
79  'arguments' => [
80  'extension_attributes' => [
81  'source_code' => 'eu-2'
82  ]
83  ],
84  'orderId' => $createdOrder->getId(),
85  ];
86  $result = $this->_webApiCall(
87  $this->buildServiceInfo((int)$createdOrder->getEntityId()),
89  );
90 
91  $this->assertNotEmpty($result);
92 
93  try {
94  $shipping = $this->shipmentRepository->get($result);
95  $this->assertNotNull($shipping->getEntityId());
96  $this->assertEquals('3.0000', $shipping->getTotalQty());
97  $shipmentExtension = $shipping->getExtensionAttributes();
98  $this->assertEquals('eu-2', $shipmentExtension->getSourceCode());
99  } catch (NoSuchEntityException $e) {
100  $this->fail('Failed asserting that Shipment was created');
101  }
102 
104  $shippedOrder = current($this->orderRepository->getList($searchCriteria)->getItems());
105 
106  $this->assertNotEquals(
107  $createdOrder->getStatus(),
108  $shippedOrder->getStatus(),
109  'Failed asserting that Order status was changed'
110  );
111  }
112 
126  public function testShipOrderWithConfigurableProduct()
127  {
128  $searchCriteria = $this->searchCriteriaBuilder
129  ->addFilter('increment_id', 'created_order_for_test')
130  ->create();
132  $createdOrder = current($this->orderRepository->getList($searchCriteria)->getItems());
133 
134  $requestData = [
135  'arguments' => [
136  'extension_attributes' => [
137  'source_code' => 'us-1'
138  ]
139  ],
140  'orderId' => $createdOrder->getId(),
141  ];
142  $result = $this->_webApiCall(
143  $this->buildServiceInfo((int)$createdOrder->getEntityId()),
145  );
146 
147  $this->assertNotEmpty($result);
148 
149  try {
150  $shipping = $this->shipmentRepository->get($result);
151  $this->assertNotNull($shipping->getEntityId());
152  $this->assertEquals('3.0000', $shipping->getTotalQty());
153  $shipmentExtension = $shipping->getExtensionAttributes();
154  $this->assertEquals('us-1', $shipmentExtension->getSourceCode());
155  } catch (NoSuchEntityException $e) {
156  $this->fail('Failed asserting that Shipment was created');
157  }
158 
160  $shippedOrder = current($this->orderRepository->getList($searchCriteria)->getItems());
161 
162  $this->assertNotEquals(
163  $createdOrder->getStatus(),
164  $shippedOrder->getStatus(),
165  'Failed asserting that Order status was changed'
166  );
167  }
168 
175  private function buildServiceInfo(int $orderId): array
176  {
177  $serviceInfo = [
178  'rest' => [
179  'resourcePath' => '/V1/order/' . $orderId . '/ship',
180  'httpMethod' => Request::HTTP_METHOD_POST,
181  ],
182  'soap' => [
183  'service' => self::SERVICE_READ_NAME,
184  'serviceVersion' => self::SERVICE_VERSION,
185  'operation' => self::SERVICE_READ_NAME . 'execute',
186  ],
187  ];
188 
189  return $serviceInfo;
190  }
191 }
_webApiCall( $serviceInfo, $arguments=[], $webApiAdapterCode=null, $storeCode=null, $integration=null)
$searchCriteria