Skip to content

Commit 37c1cc0

Browse files
author
Stanislav Idolov
authored
ENGCOM-3178: [Backport] Covering the AssignOrderToCustomerObserver by Unit Test #18559
2 parents 4a6b81f + 74caaa9 commit 37c1cc0

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Sales\Test\Unit\Observer;
9+
10+
use Magento\Customer\Api\Data\CustomerInterface;
11+
use Magento\Framework\Event;
12+
use Magento\Framework\Event\Observer;
13+
use Magento\Sales\Api\Data\OrderInterface;
14+
use Magento\Sales\Api\OrderRepositoryInterface;
15+
use Magento\Sales\Observer\AssignOrderToCustomerObserver;
16+
use PHPUnit\Framework\TestCase;
17+
use PHPUnit_Framework_MockObject_MockObject;
18+
19+
/**
20+
* Class AssignOrderToCustomerObserverTest
21+
*/
22+
class AssignOrderToCustomerObserverTest extends TestCase
23+
{
24+
/** @var AssignOrderToCustomerObserver */
25+
protected $sut;
26+
27+
/** @var OrderRepositoryInterface|PHPUnit_Framework_MockObject_MockObject */
28+
protected $orderRepositoryMock;
29+
30+
/**
31+
* Set Up
32+
*/
33+
protected function setUp()
34+
{
35+
$this->orderRepositoryMock = $this->getMockBuilder(OrderRepositoryInterface::class)
36+
->disableOriginalConstructor()
37+
->getMock();
38+
$this->sut = new AssignOrderToCustomerObserver($this->orderRepositoryMock);
39+
}
40+
41+
/**
42+
* Test assigning order to customer after issuing guest order
43+
*
44+
* @dataProvider getCustomerIds
45+
* @param null|int $customerId
46+
* @return void
47+
*/
48+
public function testAssignOrderToCustomerAfterGuestOrder($customerId)
49+
{
50+
$orderId = 1;
51+
/** @var Observer|PHPUnit_Framework_MockObject_MockObject $observerMock */
52+
$observerMock = $this->createMock(Observer::class);
53+
/** @var Event|PHPUnit_Framework_MockObject_MockObject $eventMock */
54+
$eventMock = $this->getMockBuilder(Event::class)->disableOriginalConstructor()
55+
->setMethods(['getData'])
56+
->getMock();
57+
/** @var CustomerInterface|PHPUnit_Framework_MockObject_MockObject $customerMock */
58+
$customerMock = $this->createMock(CustomerInterface::class);
59+
/** @var OrderInterface|PHPUnit_Framework_MockObject_MockObject $orderMock */
60+
$orderMock = $this->getMockBuilder(OrderInterface::class)
61+
->disableOriginalConstructor()
62+
->getMockForAbstractClass();
63+
$observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock);
64+
$eventMock->expects($this->any())->method('getData')
65+
->willReturnMap([
66+
['delegate_data', null, ['__sales_assign_order_id' => $orderId]],
67+
['customer_data_object', null, $customerMock]
68+
]);
69+
$orderMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
70+
$this->orderRepositoryMock->expects($this->once())->method('get')->with($orderId)
71+
->willReturn($orderMock);
72+
if (!$customerId) {
73+
$this->orderRepositoryMock->expects($this->once())->method('save')->with($orderMock);
74+
$this->sut->execute($observerMock);
75+
return ;
76+
}
77+
78+
$this->orderRepositoryMock->expects($this->never())->method('save')->with($orderMock);
79+
$this->sut->execute($observerMock);
80+
}
81+
82+
/**
83+
* Customer id assigned to order
84+
*
85+
* @return array
86+
*/
87+
public function getCustomerIds()
88+
{
89+
return [[null, 1]];
90+
}
91+
}

0 commit comments

Comments
 (0)