Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CustomerLogoutObserverTest.php
Go to the documentation of this file.
1 <?php
7 
8 class CustomerLogoutObserverTest extends \PHPUnit\Framework\TestCase
9 {
13  protected $observer;
14 
19 
24 
28  protected $productIndexMock;
29 
34 
38  protected function setUp()
39  {
40  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
41 
42  $this->productIndexFactoryMock = $this->getMockBuilder(
43  \Magento\Reports\Model\Product\Index\ViewedFactory::class
44  )->setMethods(['create'])
45  ->disableOriginalConstructor()->getMock();
46  $this->productIndexMock = $this->getMockBuilder(\Magento\Reports\Model\Product\Index\Viewed::class)
47  ->disableOriginalConstructor()->getMock();
48 
49  $this->productIndexFactoryMock->expects($this->any())
50  ->method('create')
51  ->willReturn($this->productIndexMock);
52 
53  $this->productCompModelMock = $this->getMockBuilder(\Magento\Reports\Model\Product\Index\Compared::class)
54  ->disableOriginalConstructor()
55  ->getMock();
56 
57  $this->productCompFactoryMock = $this->getMockBuilder(
58  \Magento\Reports\Model\Product\Index\ComparedFactory::class
59  )
60  ->disableOriginalConstructor()
61  ->setMethods(['create'])
62  ->getMock();
63  $this->productCompFactoryMock->expects($this->any())
64  ->method('create')
65  ->willReturn($this->productCompModelMock);
66 
67  $this->observer = $objectManager->getObject(
68  \Magento\Reports\Observer\CustomerLogoutObserver::class,
69  [
70  'productIndxFactory' => $this->productIndexFactoryMock,
71  'productCompFactory' => $this->productCompFactoryMock,
72  ]
73  );
74  }
75 
79  public function testCustomerLogout()
80  {
81  $observerMock = $this->getObserverMock(111);
82 
83  $this->productCompModelMock->expects($this->once())->method('purgeVisitorByCustomer')->willReturnSelf();
84  $this->productCompModelMock->expects($this->once())->method('calculate')->willReturnSelf();
85 
86  $this->productIndexMock->expects($this->once())->method('purgeVisitorByCustomer')->willReturnSelf();
87  $this->productIndexMock->expects($this->once())->method('calculate')->willReturnSelf();
88 
89  $this->observer->execute($observerMock);
90  }
91 
96  protected function getObserverMock($productId)
97  {
98  $eventObserverMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
99  ->disableOriginalConstructor()
100  ->getMock();
101  $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
102  ->disableOriginalConstructor()
103  ->setMethods(['getProduct'])->getMock();
104  $productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
105  ->disableOriginalConstructor()
106  ->getMock();
107 
108  $productMock->expects($this->any())->method('getId')->willReturn($productId);
109 
110  $eventMock->expects($this->any())->method('getProduct')->willReturn($productMock);
111 
112  $eventObserverMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
113 
114  return $eventObserverMock;
115  }
116 }
$objectManager
Definition: bootstrap.php:17