CustomerLogoutObserverTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Reports\Test\Unit\Observer;
  7. class CustomerLogoutObserverTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Reports\Observer\CustomerLogoutObserver
  11. */
  12. protected $observer;
  13. /**
  14. * @var \Magento\Reports\Model\Product\Index\ComparedFactory|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $productCompFactoryMock;
  17. /**
  18. * @var \Magento\Reports\Model\Product\Index\ViewedFactory|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $productIndexFactoryMock;
  21. /**
  22. * @var \Magento\Reports\Model\Product\Index\Viewed|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $productIndexMock;
  25. /**
  26. * @var \Magento\Reports\Model\Product\Index\Compared|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. protected $productCompModelMock;
  29. /**
  30. * {@inheritDoc}
  31. */
  32. protected function setUp()
  33. {
  34. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  35. $this->productIndexFactoryMock = $this->getMockBuilder(
  36. \Magento\Reports\Model\Product\Index\ViewedFactory::class
  37. )->setMethods(['create'])
  38. ->disableOriginalConstructor()->getMock();
  39. $this->productIndexMock = $this->getMockBuilder(\Magento\Reports\Model\Product\Index\Viewed::class)
  40. ->disableOriginalConstructor()->getMock();
  41. $this->productIndexFactoryMock->expects($this->any())
  42. ->method('create')
  43. ->willReturn($this->productIndexMock);
  44. $this->productCompModelMock = $this->getMockBuilder(\Magento\Reports\Model\Product\Index\Compared::class)
  45. ->disableOriginalConstructor()
  46. ->getMock();
  47. $this->productCompFactoryMock = $this->getMockBuilder(
  48. \Magento\Reports\Model\Product\Index\ComparedFactory::class
  49. )
  50. ->disableOriginalConstructor()
  51. ->setMethods(['create'])
  52. ->getMock();
  53. $this->productCompFactoryMock->expects($this->any())
  54. ->method('create')
  55. ->willReturn($this->productCompModelMock);
  56. $this->observer = $objectManager->getObject(
  57. \Magento\Reports\Observer\CustomerLogoutObserver::class,
  58. [
  59. 'productIndxFactory' => $this->productIndexFactoryMock,
  60. 'productCompFactory' => $this->productCompFactoryMock,
  61. ]
  62. );
  63. }
  64. /**
  65. * @return void
  66. */
  67. public function testCustomerLogout()
  68. {
  69. $observerMock = $this->getObserverMock(111);
  70. $this->productCompModelMock->expects($this->once())->method('purgeVisitorByCustomer')->willReturnSelf();
  71. $this->productCompModelMock->expects($this->once())->method('calculate')->willReturnSelf();
  72. $this->productIndexMock->expects($this->once())->method('purgeVisitorByCustomer')->willReturnSelf();
  73. $this->productIndexMock->expects($this->once())->method('calculate')->willReturnSelf();
  74. $this->observer->execute($observerMock);
  75. }
  76. /**
  77. * @param int $productId
  78. * @return \PHPUnit_Framework_MockObject_MockObject
  79. */
  80. protected function getObserverMock($productId)
  81. {
  82. $eventObserverMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
  83. ->disableOriginalConstructor()
  84. ->getMock();
  85. $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
  86. ->disableOriginalConstructor()
  87. ->setMethods(['getProduct'])->getMock();
  88. $productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
  89. ->disableOriginalConstructor()
  90. ->getMock();
  91. $productMock->expects($this->any())->method('getId')->willReturn($productId);
  92. $eventMock->expects($this->any())->method('getProduct')->willReturn($productMock);
  93. $eventObserverMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
  94. return $eventObserverMock;
  95. }
  96. }