Skip to content

Commit 24f4d9a

Browse files
committed
Fix static and unit tests.
1 parent 7203184 commit 24f4d9a

File tree

2 files changed

+99
-60
lines changed

2 files changed

+99
-60
lines changed

app/code/Magento/Shipping/Controller/Adminhtml/Order/Shipment/AddTrack.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@
88
namespace Magento\Shipping\Controller\Adminhtml\Order\Shipment;
99

1010
use Magento\Backend\App\Action;
11+
use Magento\Framework\App\Action\HttpPostActionInterface;
1112
use Magento\Framework\App\ObjectManager;
1213
use Magento\Framework\Controller\ResultFactory;
1314
use Magento\Framework\Controller\ResultInterface;
1415
use Magento\Framework\Exception\LocalizedException;
15-
use Magento\Framework\Exception\NoSuchEntityException;
1616
use Magento\Framework\Serialize\SerializerInterface;
1717
use Magento\Sales\Api\Data\ShipmentTrackInterfaceFactory;
1818
use Magento\Sales\Api\ShipmentRepositoryInterface;
19-
use Magento\Sales\Model\Order\Shipment\TrackFactory;
2019
use Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader;
2120

22-
class AddTrack extends \Magento\Backend\App\Action
21+
/**
22+
* Add new tracking number to shipment controller.
23+
*/
24+
class AddTrack extends Action implements HttpPostActionInterface
2325
{
2426
/**
2527
* Authorization level of a basic admin session
@@ -39,7 +41,7 @@ class AddTrack extends \Magento\Backend\App\Action
3941
private $shipmentRepository;
4042

4143
/**
42-
* @var TrackFactory
44+
* @var ShipmentTrackInterfaceFactory
4345
*/
4446
private $trackFactory;
4547

@@ -52,14 +54,14 @@ class AddTrack extends \Magento\Backend\App\Action
5254
* @param Action\Context $context
5355
* @param ShipmentLoader $shipmentLoader
5456
* @param ShipmentRepositoryInterface|null $shipmentRepository
55-
* @param TrackFactory|null $trackFactory
57+
* @param ShipmentTrackInterfaceFactory|null $trackFactory
5658
* @param SerializerInterface|null $serializer
5759
*/
5860
public function __construct(
5961
Action\Context $context,
6062
ShipmentLoader $shipmentLoader,
6163
ShipmentRepositoryInterface $shipmentRepository = null,
62-
TrackFactory $trackFactory = null,
64+
ShipmentTrackInterfaceFactory $trackFactory = null,
6365
SerializerInterface $serializer = null
6466
) {
6567
parent::__construct($context);

app/code/Magento/Shipping/Test/Unit/Controller/Adminhtml/Order/Shipment/AddTrackTest.php

Lines changed: 91 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6,127 +6,162 @@
66

77
namespace Magento\Shipping\Test\Unit\Controller\Adminhtml\Order\Shipment;
88

9-
use Magento\Backend\App\Action;
9+
use Magento\Backend\App\Action\Context;
10+
use Magento\Framework\App\Request\Http;
11+
use Magento\Framework\App\ResponseInterface;
12+
use Magento\Framework\App\ViewInterface;
13+
use Magento\Framework\Controller\ResultFactory;
14+
use Magento\Framework\Controller\ResultInterface;
1015
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
16+
use Magento\Framework\View\Element\BlockInterface;
17+
use Magento\Framework\View\LayoutInterface;
18+
use Magento\Framework\View\Page\Config;
19+
use Magento\Framework\View\Page\Title;
20+
use Magento\Framework\View\Result\Page;
21+
use Magento\Sales\Api\Data\ShipmentTrackInterfaceFactory;
22+
use Magento\Sales\Model\Order\Shipment;
23+
use Magento\Sales\Model\Order\Shipment\Track;
24+
use Magento\Shipping\Controller\Adminhtml\Order\Shipment\AddTrack;
25+
use Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader;
1126

1227
/**
13-
* Class AddTrackTest
28+
* Class AddTrackTest covers AddTrack controller.
1429
*
15-
* @package Magento\Shipping\Controller\Adminhtml\Order\Shipment
1630
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1731
*/
1832
class AddTrackTest extends \PHPUnit\Framework\TestCase
1933
{
2034
/**
21-
* @var \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader|\PHPUnit_Framework_MockObject_MockObject
35+
* @var ShipmentLoader|\PHPUnit_Framework_MockObject_MockObject
2236
*/
23-
protected $shipmentLoader;
37+
private $shipmentLoader;
2438

2539
/**
26-
* @var \Magento\Shipping\Controller\Adminhtml\Order\Shipment\AddTrack
40+
* @var AddTrack
2741
*/
28-
protected $controller;
42+
private $controller;
2943

3044
/**
31-
* @var Action\Context|\PHPUnit_Framework_MockObject_MockObject
45+
* @var Context|\PHPUnit_Framework_MockObject_MockObject
3246
*/
33-
protected $context;
47+
private $context;
3448

3549
/**
36-
* @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject
50+
* @var Http|\PHPUnit_Framework_MockObject_MockObject
3751
*/
38-
protected $request;
52+
private $request;
3953

4054
/**
41-
* @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
55+
* @var ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
4256
*/
43-
protected $response;
57+
private $response;
4458

4559
/**
46-
* @var \Magento\Framework\ObjectManager\ObjectManager|\PHPUnit_Framework_MockObject_MockObject
60+
* @var ViewInterface|\PHPUnit_Framework_MockObject_MockObject
4761
*/
48-
protected $objectManager;
62+
private $view;
4963

5064
/**
51-
* @var \Magento\Framework\App\ViewInterface|\PHPUnit_Framework_MockObject_MockObject
65+
* @var Page|\PHPUnit_Framework_MockObject_MockObject
5266
*/
53-
protected $view;
67+
private $resultPageMock;
5468

5569
/**
56-
* @var \Magento\Framework\View\Result\Page|\PHPUnit_Framework_MockObject_MockObject
70+
* @var Config|\PHPUnit_Framework_MockObject_MockObject
5771
*/
58-
protected $resultPageMock;
72+
private $pageConfigMock;
5973

6074
/**
61-
* @var \Magento\Framework\View\Page\Config|\PHPUnit_Framework_MockObject_MockObject
75+
* @var Title|\PHPUnit_Framework_MockObject_MockObject
6276
*/
63-
protected $pageConfigMock;
77+
private $pageTitleMock;
6478

6579
/**
66-
* @var \Magento\Framework\View\Page\Title|\PHPUnit_Framework_MockObject_MockObject
80+
* @var ShipmentTrackInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
6781
*/
68-
protected $pageTitleMock;
82+
private $trackFactory;
6983

84+
/**
85+
* @var ResultInterface|\PHPUnit_Framework_MockObject_MockObject
86+
*/
87+
private $rawResult;
88+
89+
/**
90+
* @inheritdoc
91+
*/
7092
protected function setUp()
7193
{
7294
$objectManagerHelper = new ObjectManagerHelper($this);
7395
$this->shipmentLoader = $this->getMockBuilder(
74-
\Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader::class
96+
ShipmentLoader::class
7597
)
7698
->disableOriginalConstructor()
7799
->setMethods(['setShipmentId', 'setOrderId', 'setShipment', 'setTracking', 'load'])
78100
->getMock();
79101
$this->context = $this->createPartialMock(
80-
\Magento\Backend\App\Action\Context::class,
102+
Context::class,
81103
[
82104
'getRequest',
83105
'getResponse',
84106
'getRedirect',
85107
'getObjectManager',
86108
'getTitle',
87-
'getView'
109+
'getView',
110+
'getResultFactory'
88111
]
89112
);
90113
$this->response = $this->createPartialMock(
91-
\Magento\Framework\App\ResponseInterface::class,
114+
ResponseInterface::class,
92115
['setRedirect', 'sendResponse', 'setBody']
93116
);
94-
$this->request = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
117+
$this->request = $this->getMockBuilder(Http::class)
95118
->disableOriginalConstructor()->getMock();
96-
$this->objectManager = $this->createPartialMock(
97-
\Magento\Framework\ObjectManager\ObjectManager::class,
98-
['create', 'get']
99-
);
100-
$this->view = $this->createMock(\Magento\Framework\App\ViewInterface::class);
101-
$this->resultPageMock = $this->getMockBuilder(\Magento\Framework\View\Result\Page::class)
119+
$this->view = $this->createMock(ViewInterface::class);
120+
$this->resultPageMock = $this->getMockBuilder(Page::class)
102121
->disableOriginalConstructor()
103122
->getMock();
104-
$this->pageConfigMock = $this->getMockBuilder(\Magento\Framework\View\Page\Config::class)
123+
$this->pageConfigMock = $this->getMockBuilder(Config::class)
105124
->disableOriginalConstructor()
106125
->getMock();
107-
$this->pageTitleMock = $this->getMockBuilder(\Magento\Framework\View\Page\Title::class)
126+
$this->pageTitleMock = $this->getMockBuilder(Title::class)
108127
->disableOriginalConstructor()
109128
->getMock();
129+
$this->trackFactory = $this->getMockBuilder(ShipmentTrackInterfaceFactory::class)
130+
->disableOriginalConstructor()
131+
->setMethods(['create'])
132+
->getMockForAbstractClass();
133+
$this->rawResult = $this->getMockBuilder(ResultInterface::class)
134+
->disableOriginalConstructor()
135+
->setMethods(['setContents'])
136+
->getMockForAbstractClass();
137+
$resultFactory = $this->getMockBuilder(ResultFactory::class)
138+
->disableOriginalConstructor()
139+
->setMethods(['create'])
140+
->getMockForAbstractClass();
110141
$this->context->expects($this->once())
111142
->method('getRequest')
112143
->will($this->returnValue($this->request));
113144
$this->context->expects($this->once())
114145
->method('getResponse')
115146
->will($this->returnValue($this->response));
116-
$this->context->expects($this->once())
117-
->method('getObjectManager')
118-
->will($this->returnValue($this->objectManager));
119147
$this->context->expects($this->once())
120148
->method('getView')
121149
->will($this->returnValue($this->view));
150+
$resultFactory->expects($this->once())
151+
->method('create')
152+
->willReturn($this->rawResult);
153+
$this->context->expects($this->once())
154+
->method('getResultFactory')
155+
->willReturn($resultFactory);
122156
$this->controller = $objectManagerHelper->getObject(
123-
\Magento\Shipping\Controller\Adminhtml\Order\Shipment\AddTrack::class,
157+
AddTrack::class,
124158
[
125159
'context' => $this->context,
126160
'shipmentLoader' => $this->shipmentLoader,
127161
'request' => $this->request,
128162
'response' => $this->response,
129-
'view' => $this->view
163+
'view' => $this->view,
164+
'trackFactory' => $this->trackFactory,
130165
]
131166
);
132167
}
@@ -144,16 +179,18 @@ public function testExecute()
144179
$tracking = [];
145180
$shipmentData = ['items' => [], 'send_email' => ''];
146181
$shipment = $this->createPartialMock(
147-
\Magento\Sales\Model\Order\Shipment::class,
182+
Shipment::class,
148183
['addTrack', '__wakeup', 'save']
149184
);
150185
$this->request->expects($this->any())
151186
->method('getParam')
152187
->will(
153188
$this->returnValueMap(
154189
[
155-
['order_id', null, $orderId], ['shipment_id', null, $shipmentId],
156-
['shipment', null, $shipmentData], ['tracking', null, $tracking],
190+
['order_id', null, $orderId],
191+
['shipment_id', null, $shipmentId],
192+
['shipment', null, $shipmentData],
193+
['tracking', null, $tracking],
157194
]
158195
)
159196
);
@@ -183,14 +220,13 @@ public function testExecute()
183220
$this->shipmentLoader->expects($this->once())
184221
->method('load')
185222
->will($this->returnValue($shipment));
186-
$track = $this->getMockBuilder(\Magento\Sales\Model\Order\Shipment\Track::class)
223+
$track = $this->getMockBuilder(Track::class)
187224
->disableOriginalConstructor()
188225
->setMethods(['__wakeup', 'setNumber', 'setCarrierCode', 'setTitle'])
189226
->getMock();
190-
$this->objectManager->expects($this->atLeastOnce())
227+
$this->trackFactory->expects($this->once())
191228
->method('create')
192-
->with(\Magento\Sales\Model\Order\Shipment\Track::class)
193-
->will($this->returnValue($track));
229+
->willReturn($track);
194230
$track->expects($this->once())
195231
->method('setNumber')
196232
->with($number)
@@ -206,8 +242,8 @@ public function testExecute()
206242
$this->view->expects($this->once())
207243
->method('loadLayout')
208244
->will($this->returnSelf());
209-
$layout = $this->createMock(\Magento\Framework\View\LayoutInterface::class);
210-
$menuBlock = $this->createPartialMock(\Magento\Framework\View\Element\BlockInterface::class, ['toHtml']);
245+
$layout = $this->createMock(LayoutInterface::class);
246+
$menuBlock = $this->createPartialMock(BlockInterface::class, ['toHtml']);
211247
$html = 'html string';
212248
$this->view->expects($this->once())
213249
->method('getLayout')
@@ -235,9 +271,10 @@ public function testExecute()
235271
$this->pageConfigMock->expects($this->any())
236272
->method('getTitle')
237273
->willReturn($this->pageTitleMock);
238-
$this->response->expects($this->once())
239-
->method('setBody')
240-
->with($html);
241-
$this->assertNull($this->controller->execute());
274+
$this->rawResult->expects($this->once())
275+
->method('setContents')
276+
->with($html)
277+
->willReturnSelf();
278+
$this->assertInstanceOf(ResultInterface::class, $this->controller->execute());
242279
}
243280
}

0 commit comments

Comments
 (0)