magento2-docker/dev/tests/integration/testsuite/Magento/Shipping/Helper/DataTest.php

159 lines
5.9 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Shipping\Helper;
use Magento\Store\Model\StoreManagerInterface;
class DataTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \Magento\Shipping\Helper\Data
*/
private $helper;
protected function setUp(): void
{
$this->helper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Shipping\Helper\Data::class
);
}
/**
* @param string $modelName
* @param string $getIdMethod
* @param int $entityId
* @param string $code
* @param string $expected
* @dataProvider getTrackingPopupUrlBySalesModelDataProvider
*/
public function testGetTrackingPopupUrlBySalesModel($modelName, $getIdMethod, $entityId, $code, $expected)
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$constructArgs = [];
if (\Magento\Sales\Model\Order\Shipment::class === $modelName) {
$orderRepository = $this->getMockOrderRepository($code);
$constructArgs['orderRepository'] = $orderRepository;
} elseif (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
$shipmentRepository = $this->getMockShipmentRepository($code);
$constructArgs['shipmentRepository'] = $shipmentRepository;
}
$model = $objectManager->create($modelName, $constructArgs);
$model->{$getIdMethod}($entityId);
if (\Magento\Sales\Model\Order::class === $modelName) {
$model->setProtectCode($code);
}
if (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
$model->setParentId(1);
}
$actual = $this->helper->getTrackingPopupUrlBySalesModel($model);
$this->assertEquals($expected, $actual);
}
/**
* From the admin panel with custom URL we should have generated frontend URL
*
* @param string $modelName
* @param string $getIdMethod
* @param int $entityId
* @param string $code
* @param string $expected
* @magentoAppArea adminhtml
* @magentoConfigFixture admin_store web/unsecure/base_link_url http://admin.localhost/
* @dataProvider getTrackingPopupUrlBySalesModelDataProvider
*/
public function testGetTrackingPopupUrlBySalesModelFromAdmin($modelName, $getIdMethod, $entityId, $code, $expected)
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var StoreManagerInterface $storeManager */
$storeManager = $objectManager->create(StoreManagerInterface::class);
$storeManager->reinitStores();
$constructArgs = [];
if (\Magento\Sales\Model\Order\Shipment::class === $modelName) {
$orderRepository = $this->getMockOrderRepository($code);
$constructArgs['orderRepository'] = $orderRepository;
} elseif (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
$shipmentRepository = $this->getMockShipmentRepository($code);
$constructArgs['shipmentRepository'] = $shipmentRepository;
}
$model = $objectManager->create($modelName, $constructArgs);
$model->{$getIdMethod}($entityId);
if (\Magento\Sales\Model\Order::class === $modelName) {
$model->setProtectCode($code);
}
if (\Magento\Sales\Model\Order\Shipment\Track::class === $modelName) {
$model->setParentId(1);
}
//Frontend URL should be used there
$actual = $this->helper->getTrackingPopupUrlBySalesModel($model);
$this->assertEquals($expected, $actual);
}
/**
* @param $code
* @return \Magento\Sales\Api\OrderRepositoryInterface|\PHPUnit\Framework\MockObject\MockObject
*/
private function getMockOrderRepository($code)
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$order = $objectManager->create(\Magento\Sales\Model\Order::class);
$order->setProtectCode($code);
$orderRepository = $this->createMock(\Magento\Sales\Api\OrderRepositoryInterface::class);
$orderRepository->expects($this->atLeastOnce())->method('get')->willReturn($order);
return $orderRepository;
}
/**
* @param $code
* @return \Magento\Sales\Model\Order\ShipmentRepository|\PHPUnit\Framework\MockObject\MockObject
*/
private function getMockShipmentRepository($code)
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$orderRepository = $this->getMockOrderRepository($code);
$shipmentArgs = ['orderRepository' => $orderRepository];
$shipment = $objectManager->create(\Magento\Sales\Model\Order\Shipment::class, $shipmentArgs);
$shipmentRepository = $this->createPartialMock(\Magento\Sales\Model\Order\ShipmentRepository::class, ['get']);
$shipmentRepository->expects($this->atLeastOnce())->method('get')->willReturn($shipment);
return $shipmentRepository;
}
/**
* @return array
*/
public function getTrackingPopupUrlBySalesModelDataProvider()
{
return [
[\Magento\Sales\Model\Order::class,
'setId',
42,
'abc',
'http://localhost/index.php/shipping/tracking/popup?hash=b3JkZXJfaWQ6NDI6YWJj',
],
[\Magento\Sales\Model\Order\Shipment::class,
'setId',
42,
'abc',
'http://localhost/index.php/shipping/tracking/popup?hash=c2hpcF9pZDo0MjphYmM%7E'
],
[\Magento\Sales\Model\Order\Shipment\Track::class,
'setEntityId',
42,
'abc',
'http://localhost/index.php/shipping/tracking/popup?hash=dHJhY2tfaWQ6NDI6YWJj'
]
];
}
}