DataTest.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Shipping\Helper;
  7. use Magento\Store\Model\StoreManagerInterface;
  8. class DataTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Shipping\Helper\Data
  12. */
  13. private $helper;
  14. protected function setUp()
  15. {
  16. $this->helper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  17. \Magento\Shipping\Helper\Data::class
  18. );
  19. }
  20. /**
  21. * @param string $modelName
  22. * @param string $getIdMethod
  23. * @param int $entityId
  24. * @param string $code
  25. * @param string $expected
  26. * @dataProvider getTrackingPopupUrlBySalesModelDataProvider
  27. */
  28. public function testGetTrackingPopupUrlBySalesModel($modelName, $getIdMethod, $entityId, $code, $expected)
  29. {
  30. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  31. $constructArgs = [];
  32. if (\Magento\Sales\Model\Order\Shipment::class === $modelName) {
  33. $orderRepository = $this->getMockOrderRepository($code);
  34. $constructArgs['orderRepository'] = $orderRepository;
  35. } elseif (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
  36. $shipmentRepository = $this->getMockShipmentRepository($code);
  37. $constructArgs['shipmentRepository'] = $shipmentRepository;
  38. }
  39. $model = $objectManager->create($modelName, $constructArgs);
  40. $model->{$getIdMethod}($entityId);
  41. if (\Magento\Sales\Model\Order::class === $modelName) {
  42. $model->setProtectCode($code);
  43. }
  44. if (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
  45. $model->setParentId(1);
  46. }
  47. $actual = $this->helper->getTrackingPopupUrlBySalesModel($model);
  48. $this->assertEquals($expected, $actual);
  49. }
  50. /**
  51. * From the admin panel with custom URL we should have generated frontend URL
  52. *
  53. * @param string $modelName
  54. * @param string $getIdMethod
  55. * @param int $entityId
  56. * @param string $code
  57. * @param string $expected
  58. * @magentoAppArea adminhtml
  59. * @magentoConfigFixture admin_store web/unsecure/base_link_url http://admin.localhost/
  60. * @dataProvider getTrackingPopupUrlBySalesModelDataProvider
  61. */
  62. public function testGetTrackingPopupUrlBySalesModelFromAdmin($modelName, $getIdMethod, $entityId, $code, $expected)
  63. {
  64. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  65. /** @var StoreManagerInterface $storeManager */
  66. $storeManager = $objectManager->create(StoreManagerInterface::class);
  67. $storeManager->reinitStores();
  68. $constructArgs = [];
  69. if (\Magento\Sales\Model\Order\Shipment::class === $modelName) {
  70. $orderRepository = $this->getMockOrderRepository($code);
  71. $constructArgs['orderRepository'] = $orderRepository;
  72. } elseif (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
  73. $shipmentRepository = $this->getMockShipmentRepository($code);
  74. $constructArgs['shipmentRepository'] = $shipmentRepository;
  75. }
  76. $model = $objectManager->create($modelName, $constructArgs);
  77. $model->{$getIdMethod}($entityId);
  78. if (\Magento\Sales\Model\Order::class === $modelName) {
  79. $model->setProtectCode($code);
  80. }
  81. if (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
  82. $model->setParentId(1);
  83. }
  84. //Frontend URL should be used there
  85. $actual = $this->helper->getTrackingPopupUrlBySalesModel($model);
  86. $this->assertEquals($expected, $actual);
  87. }
  88. /**
  89. * @param $code
  90. * @return \Magento\Sales\Api\OrderRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
  91. */
  92. private function getMockOrderRepository($code)
  93. {
  94. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  95. $order = $objectManager->create(\Magento\Sales\Model\Order::class);
  96. $order->setProtectCode($code);
  97. $orderRepository = $this->createMock(\Magento\Sales\Api\OrderRepositoryInterface::class);
  98. $orderRepository->expects($this->atLeastOnce())->method('get')->will($this->returnValue($order));
  99. return $orderRepository;
  100. }
  101. /**
  102. * @param $code
  103. * @return \Magento\Sales\Model\Order\ShipmentRepository|\PHPUnit_Framework_MockObject_MockObject
  104. */
  105. private function getMockShipmentRepository($code)
  106. {
  107. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  108. $orderRepository = $this->getMockOrderRepository($code);
  109. $shipmentArgs = ['orderRepository' => $orderRepository];
  110. $shipment = $objectManager->create(\Magento\Sales\Model\Order\Shipment::class, $shipmentArgs);
  111. $shipmentRepository = $this->createPartialMock(\Magento\Sales\Model\Order\ShipmentRepository::class, ['get']);
  112. $shipmentRepository->expects($this->atLeastOnce())->method('get')->willReturn($shipment);
  113. return $shipmentRepository;
  114. }
  115. /**
  116. * @return array
  117. */
  118. public function getTrackingPopupUrlBySalesModelDataProvider()
  119. {
  120. return [
  121. [\Magento\Sales\Model\Order::class,
  122. 'setId',
  123. 42,
  124. 'abc',
  125. 'http://localhost/index.php/shipping/tracking/popup?hash=b3JkZXJfaWQ6NDI6YWJj',
  126. ],
  127. [\Magento\Sales\Model\Order\Shipment::class,
  128. 'setId',
  129. 42,
  130. 'abc',
  131. 'http://localhost/index.php/shipping/tracking/popup?hash=c2hpcF9pZDo0MjphYmM%2C'
  132. ],
  133. [\Magento\Sales\Model\Order\Shipment\Track::class,
  134. 'setEntityId',
  135. 42,
  136. 'abc',
  137. 'http://localhost/index.php/shipping/tracking/popup?hash=dHJhY2tfaWQ6NDI6YWJj'
  138. ]
  139. ];
  140. }
  141. }