Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CustomerLoginObserverTest.php
Go to the documentation of this file.
1 <?php
7 
11 class CustomerLoginObserverTest extends \PHPUnit\Framework\TestCase
12 {
16  protected $observer;
17 
22 
27 
31  protected $productIndexMock;
32 
36  protected $reportEventMock;
37 
42 
47 
52 
56  protected function setUp()
57  {
58  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
59 
60  $this->customerSessionMock = $this->getMockBuilder(\Magento\Customer\Model\Session::class)
61  ->disableOriginalConstructor()->getMock();
62  $this->customerVisitorMock = $this->getMockBuilder(\Magento\Customer\Model\Visitor::class)
63  ->disableOriginalConstructor()->getMock();
64 
65  $this->productIndexFactoryMock = $this->getMockBuilder(
66  \Magento\Reports\Model\Product\Index\ViewedFactory::class
67  )->setMethods(['create'])
68  ->disableOriginalConstructor()->getMock();
69  $this->productIndexMock = $this->getMockBuilder(\Magento\Reports\Model\Product\Index\Viewed::class)
70  ->disableOriginalConstructor()->getMock();
71 
72  $this->productIndexFactoryMock->expects($this->any())
73  ->method('create')
74  ->willReturn($this->productIndexMock);
75 
76  $reportEventFactory = $this->getMockBuilder(\Magento\Reports\Model\EventFactory::class)
77  ->setMethods(['create'])->disableOriginalConstructor()->getMock();
78  $this->reportEventMock = $this->getMockBuilder(\Magento\Reports\Model\Event::class)
79  ->disableOriginalConstructor()->getMock();
80 
81  $reportEventFactory->expects($this->any())
82  ->method('create')
83  ->willReturn($this->reportEventMock);
84 
85  $this->productCompModelMock = $this->getMockBuilder(\Magento\Reports\Model\Product\Index\Compared::class)
86  ->disableOriginalConstructor()
87  ->getMock();
88 
89  $this->productCompFactoryMock = $this->getMockBuilder(
90  \Magento\Reports\Model\Product\Index\ComparedFactory::class
91  )->disableOriginalConstructor()
92  ->setMethods(['create'])
93  ->getMock();
94  $this->productCompFactoryMock->expects($this->any())
95  ->method('create')
96  ->willReturn($this->productCompModelMock);
97 
98  $this->observer = $objectManager->getObject(
99  \Magento\Reports\Observer\CustomerLoginObserver::class,
100  [
101  'event' => $reportEventFactory,
102  'productCompFactory' => $this->productCompFactoryMock,
103  'productIndexFactory' => $this->productIndexFactoryMock,
104  'customerSession' => $this->customerSessionMock,
105  'customerVisitor' => $this->customerVisitorMock,
106  ]
107  );
108  }
109 
114  {
115  $customerId = 222;
116  $visitorId = 333;
117  $observerMock = $this->getObserverMock(111);
118 
119  $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(true);
120  $this->customerSessionMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
121 
122  $this->customerVisitorMock->expects($this->once())->method('getId')->willReturn($visitorId);
123 
124  $this->reportEventMock->expects($this->once())->method('updateCustomerType')->with($visitorId, $customerId);
125 
126  $this->productCompModelMock->expects($this->once())->method('updateCustomerFromVisitor')->willReturnSelf();
127  $this->productCompModelMock->expects($this->once())->method('calculate')->willReturnSelf();
128 
129  $this->productIndexMock->expects($this->once())->method('updateCustomerFromVisitor')->willReturnSelf();
130  $this->productIndexMock->expects($this->once())->method('calculate')->willReturnSelf();
131 
132  $this->observer->execute($observerMock);
133  }
134 
139  {
140  $observerMock = $this->getObserverMock(111);
141 
142  $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false);
143  $this->customerSessionMock->expects($this->never())->method('getCustomerId');
144 
145  $this->customerVisitorMock->expects($this->never())->method('getId');
146 
147  $this->productCompModelMock->expects($this->never())->method('updateCustomerFromVisitor')->willReturnSelf();
148  $this->productCompModelMock->expects($this->never())->method('calculate')->willReturnSelf();
149 
150  $this->productIndexMock->expects($this->never())->method('updateCustomerFromVisitor')->willReturnSelf();
151  $this->productIndexMock->expects($this->never())->method('calculate')->willReturnSelf();
152 
153  $this->observer->execute($observerMock);
154  }
155 
160  protected function getObserverMock($productId)
161  {
162  $eventObserverMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
163  ->disableOriginalConstructor()
164  ->getMock();
165  $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
166  ->disableOriginalConstructor()
167  ->setMethods(['getProduct'])->getMock();
168  $productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
169  ->disableOriginalConstructor()
170  ->getMock();
171 
172  $productMock->expects($this->any())->method('getId')->willReturn($productId);
173 
174  $eventMock->expects($this->any())->method('getProduct')->willReturn($productMock);
175 
176  $eventObserverMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
177 
178  return $eventObserverMock;
179  }
180 }
$objectManager
Definition: bootstrap.php:17