Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RemoveGuestPersistenceOnEmptyCartObserverTest.php
Go to the documentation of this file.
1 <?php
8 
9 use \Magento\Persistent\Observer\RemoveGuestPersistenceOnEmptyCartObserver;
10 
11 class RemoveGuestPersistenceOnEmptyCartObserverTest extends \PHPUnit\Framework\TestCase
12 {
16  protected $model;
17 
22 
27 
32 
36  protected $quoteManagerMock;
37 
41  protected $observerMock;
42 
47 
48  protected function setUp()
49  {
50  $this->persistentSessionMock = $this->createMock(\Magento\Persistent\Helper\Session::class);
51  $this->sessionModelMock = $this->createMock(\Magento\Persistent\Model\Session::class);
52  $this->persistentDataMock = $this->createMock(\Magento\Persistent\Helper\Data::class);
53  $this->customerSessionMock = $this->createMock(\Magento\Customer\Model\Session::class);
54  $this->quoteManagerMock = $this->createMock(\Magento\Persistent\Model\QuoteManager::class);
55  $this->observerMock = $this->createMock(\Magento\Framework\Event\Observer::class);
56  $this->cartRepositoryMock = $this->createMock(
57  \Magento\Quote\Api\CartRepositoryInterface::class
58  );
59 
61  $this->persistentSessionMock,
62  $this->persistentDataMock,
63  $this->quoteManagerMock,
64  $this->customerSessionMock,
65  $this->cartRepositoryMock
66  );
67  }
68 
70  {
71  $this->persistentSessionMock->expects($this->once())->method('isPersistent')->willReturn(false);
72 
73  $this->model->execute($this->observerMock);
74  }
75 
77  {
78  $this->persistentSessionMock->expects($this->once())->method('isPersistent')->willReturn(true);
79  $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(true);
80 
81  $this->model->execute($this->observerMock);
82  }
83 
85  {
86  $this->persistentSessionMock->expects($this->once())->method('isPersistent')->willReturn(true);
87  $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false);
88  $this->persistentDataMock->expects($this->once())->method('isShoppingCartPersist')->willReturn(false);
89 
90  $this->model->execute($this->observerMock);
91  }
92 
93  public function testExecuteWithEmptyCart()
94  {
95  $customerId = 1;
96  $emptyCount = 0;
97 
98  $this->persistentSessionMock->expects($this->once())->method('isPersistent')->willReturn(true);
99  $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false);
100  $this->persistentDataMock->expects($this->once())->method('isShoppingCartPersist')->willReturn(true);
101  $sessionMock = $this->createPartialMock(\Magento\Persistent\Model\Session::class, ['getCustomerId']);
102  $this->persistentSessionMock->expects($this->once())->method('getSession')->willReturn($sessionMock);
103  $sessionMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
105  $quoteMock = $this->getMockForAbstractClass(
106  \Magento\Quote\Api\Data\CartInterface::class,
107  [],
108  '',
109  false,
110  false,
111  true,
112  ['setCustomerEmail', 'getAddressesCollection'],
113  false
114  );
115  $this->cartRepositoryMock->expects($this->once())
116  ->method('getActiveForCustomer')
117  ->with($customerId)
118  ->willReturn($quoteMock);
119  $quoteMock->expects($this->once())->method('getItemsCount')->willReturn($emptyCount);
120  $this->quoteManagerMock->expects($this->once())->method('setGuest');
121 
122  $this->model->execute($this->observerMock);
123  }
124 
126  {
127  $customerId = 1;
128  $exception = new \Magento\Framework\Exception\NoSuchEntityException;
129 
130  $this->persistentSessionMock->expects($this->once())->method('isPersistent')->willReturn(true);
131  $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false);
132  $this->persistentDataMock->expects($this->once())->method('isShoppingCartPersist')->willReturn(true);
133  $sessionMock = $this->createPartialMock(\Magento\Persistent\Model\Session::class, ['getCustomerId']);
134  $this->persistentSessionMock->expects($this->once())->method('getSession')->willReturn($sessionMock);
135  $sessionMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
136  $this->cartRepositoryMock->expects($this->once())
137  ->method('getActiveForCustomer')
138  ->with($customerId)
139  ->willThrowException($exception);
140  $this->quoteManagerMock->expects($this->once())->method('setGuest');
141 
142  $this->model->execute($this->observerMock);
143  }
144 }