OrderItemGetTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Service\V1;
  7. use Magento\TestFramework\TestCase\WebapiAbstract;
  8. class OrderItemGetTest extends WebapiAbstract
  9. {
  10. const RESOURCE_PATH = '/V1/orders/items';
  11. const SERVICE_VERSION = 'V1';
  12. const SERVICE_NAME = 'salesOrderItemRepositoryV1';
  13. const ORDER_INCREMENT_ID = '100000001';
  14. /**
  15. * @var \Magento\TestFramework\ObjectManager
  16. */
  17. protected $objectManager;
  18. protected function setUp()
  19. {
  20. $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  21. }
  22. /**
  23. * @magentoApiDataFixture Magento/Sales/_files/order.php
  24. */
  25. public function testGet()
  26. {
  27. /** @var \Magento\Sales\Model\Order $order */
  28. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
  29. $order->loadByIncrementId(self::ORDER_INCREMENT_ID);
  30. /** @var \Magento\Sales\Model\Order\Item $orderItem */
  31. $orderItem = current($order->getItems());
  32. $serviceInfo = [
  33. 'rest' => [
  34. 'resourcePath' => self::RESOURCE_PATH . '/' . $orderItem->getId(),
  35. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  36. ],
  37. 'soap' => [
  38. 'service' => self::SERVICE_NAME,
  39. 'serviceVersion' => self::SERVICE_VERSION,
  40. 'operation' => self::SERVICE_NAME . 'get',
  41. ],
  42. ];
  43. $response = $this->_webApiCall($serviceInfo, ['id' => $orderItem->getId()]);
  44. $this->assertTrue(is_array($response));
  45. $this->assertOrderItem($orderItem, $response);
  46. //check that nullable fields were marked as optional and were not sent
  47. foreach ($response as $fieldName => $value) {
  48. if ($fieldName == 'sku') {
  49. continue;
  50. }
  51. $this->assertNotNull($value);
  52. }
  53. }
  54. /**
  55. * @param \Magento\Sales\Model\Order\Item $orderItem
  56. * @param array $response
  57. * @return void
  58. */
  59. protected function assertOrderItem(\Magento\Sales\Model\Order\Item $orderItem, array $response)
  60. {
  61. $this->assertEquals($orderItem->getId(), $response['item_id']);
  62. $this->assertEquals($orderItem->getOrderId(), $response['order_id']);
  63. $this->assertEquals($orderItem->getProductId(), $response['product_id']);
  64. $this->assertEquals($orderItem->getProductType(), $response['product_type']);
  65. $this->assertEquals($orderItem->getBasePrice(), $response['base_price']);
  66. $this->assertEquals($orderItem->getRowTotal(), $response['row_total']);
  67. }
  68. /**
  69. * @magentoApiDataFixture Magento/Sales/_files/order_with_discount.php
  70. */
  71. public function testGetOrderWithDiscount()
  72. {
  73. /** @var \Magento\Sales\Model\Order $order */
  74. $order = $this->objectManager->create(\Magento\Sales\Model\Order::class);
  75. $order->loadByIncrementId(self::ORDER_INCREMENT_ID);
  76. /** @var \Magento\Sales\Model\Order\Item $orderItem */
  77. $orderItem = current($order->getItems());
  78. $serviceInfo = [
  79. 'rest' => [
  80. 'resourcePath' => self::RESOURCE_PATH . '/' . $orderItem->getId(),
  81. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  82. ],
  83. 'soap' => [
  84. 'service' => self::SERVICE_NAME,
  85. 'serviceVersion' => self::SERVICE_VERSION,
  86. 'operation' => self::SERVICE_NAME . 'get',
  87. ],
  88. ];
  89. $response = $this->_webApiCall($serviceInfo, ['id' => $orderItem->getId()]);
  90. $this->assertTrue(is_array($response));
  91. $this->assertEquals(8.00, $response['row_total']);
  92. $this->assertEquals(8.00, $response['base_row_total']);
  93. $this->assertEquals(9.00, $response['row_total_incl_tax']);
  94. $this->assertEquals(9.00, $response['base_row_total_incl_tax']);
  95. }
  96. }