66     private $reportStatusMock;
    71     protected function setUp()
    73         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
    75         $this->customerSessionMock = $this->getMockBuilder(\
Magento\Customer\Model\Session::class)
    76             ->disableOriginalConstructor()->getMock();
    77         $this->customerVisitorMock = $this->getMockBuilder(\
Magento\Customer\Model\Visitor::class)
    78             ->disableOriginalConstructor()->getMock();
    80         $this->productIndexFactoryMock = $this->getMockBuilder(
    81             \
Magento\Reports\Model\Product\Index\ViewedFactory::class
    83             ->setMethods([
'create'])
    84             ->disableOriginalConstructor()->getMock();
    85         $this->productIndexMock = $this->getMockBuilder(\
Magento\Reports\Model\Product\Index\Viewed::class)
    86             ->disableOriginalConstructor()->getMock();
    88         $this->productIndexFactoryMock->expects($this->any())
    90             ->willReturn($this->productIndexMock);
    92         $reportEventFactory = $this->getMockBuilder(\
Magento\Reports\Model\EventFactory::class)
    93             ->setMethods([
'create'])->disableOriginalConstructor()->getMock();
    94         $this->reportEventMock = $this->getMockBuilder(\
Magento\Reports\Model\Event::class)
    95             ->disableOriginalConstructor()->getMock();
    97         $reportEventFactory->expects($this->any())
    99             ->willReturn($this->reportEventMock);
   103         $this->storeMock = $this->getMockBuilder(\
Magento\Store\Model\Store::class)
   104             ->disableOriginalConstructor()->getMock();
   108             ->willReturn($this->storeMock);
   110         $this->productCompModelMock = $this->getMockBuilder(\
Magento\Reports\Model\Product\Index\Compared::class)
   111             ->disableOriginalConstructor()
   114         $this->productCompFactoryMock = $this->getMockBuilder(
   115             \
Magento\Reports\Model\Product\Index\ComparedFactory::class
   117             ->disableOriginalConstructor()
   118             ->setMethods([
'create'])
   120         $this->productCompFactoryMock->expects($this->any())
   122             ->willReturn($this->productCompModelMock);
   124         $this->productCompFactoryMock = $this->getMockBuilder(
   125             \
Magento\Reports\Model\Product\Index\ComparedFactory::class
   126         )->disableOriginalConstructor()
   127             ->setMethods([
'create'])
   130         $this->eventSaverMock = $this->getMockBuilder(\
Magento\Reports\Observer\EventSaver::class)
   131             ->disableOriginalConstructor()
   132             ->setMethods([
'save'])
   135         $this->reportStatusMock = $this->getMockBuilder(\
Magento\Reports\Model\ReportStatus::class)
   136             ->disableOriginalConstructor()
   137             ->setMethods([
'isReportEnabled'])
   141             \
Magento\Reports\Observer\CatalogProductViewObserver::class,
   144                 'productIndxFactory' => $this->productIndexFactoryMock,
   145                 'customerSession' => $this->customerSessionMock,
   146                 'customerVisitor' => $this->customerVisitorMock,
   147                 'eventSaver' => $this->eventSaverMock,
   148                 'reportStatus' => $this->reportStatusMock
   161         $expectedViewedData = [
   167         $expectedEventData = [
   175         $this->reportStatusMock->expects($this->once())->method(
'isReportEnabled')->willReturn(
true);
   176         $this->storeMock->expects($this->any())->method(
'getId')->willReturn(
$storeId);
   178         $this->customerSessionMock->expects($this->any())->method(
'isLoggedIn')->willReturn(
true);
   179         $this->customerSessionMock->expects($this->any())->method(
'getCustomerId')->willReturn(
$customerId);
   184         $this->eventSaverMock->expects($this->once())->method(
'save');
   187         $this->observer->execute($eventObserver);
   198         $expectedViewedData = [
   200             'visitor_id' => $visitorId,
   204         $expectedEventData = [
   207             'subject_id' => $visitorId,
   212         $this->reportStatusMock->expects($this->once())->method(
'isReportEnabled')->willReturn(
true);
   213         $this->storeMock->expects($this->any())->method(
'getId')->willReturn(
$storeId);
   215         $this->customerSessionMock->expects($this->any())->method(
'isLoggedIn')->willReturn(
false);
   217         $this->customerVisitorMock->expects($this->any())->method(
'getId')->willReturn($visitorId);
   219         $this->eventSaverMock->expects($this->once())->method(
'save');
   224         $this->observer->execute($eventObserver);
   233         $this->productIndexMock->expects($this->any())
   235             ->with($expectedViewedData)
   238         $this->productIndexMock->expects($this->any())
   242         $this->productIndexMock->expects($this->any())
   243             ->method(
'calculate')
   253         $this->reportEventMock->expects($this->any())->method(
'setData')->with($expectedEventData)->willReturnSelf();
   254         $this->reportEventMock->expects($this->any())->method(
'save')->willReturnSelf();
   263         $eventObserverMock = $this->getMockBuilder(\
Magento\Framework\Event\Observer::class)
   264             ->disableOriginalConstructor()
   266         $eventMock = $this->getMockBuilder(\
Magento\Framework\Event::class)
   267             ->disableOriginalConstructor()
   268             ->setMethods([
'getProduct'])->getMock();
   269         $productMock = $this->getMockBuilder(\
Magento\Catalog\Model\Product::class)
   270             ->disableOriginalConstructor()
   273         $productMock->expects($this->any())->method(
'getId')->willReturn(
$productId);
   275         $eventMock->expects($this->any())->method(
'getProduct')->willReturn($productMock);
   277         $eventObserverMock->expects($this->any())->method(
'getEvent')->willReturn($eventMock);
   279         return $eventObserverMock;
 
testCatalogProductViewCustomer()
prepareReportEventModel($expectedEventData)
prepareProductIndexMock($expectedViewedData)
getObserverMock($productId)
testCatalogProductViewVisitor()