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()