Skip to content

Commit

Permalink
ENGCOM-6961: Unit test for CatalogProductCompareClearObserver #26944
Browse files Browse the repository at this point in the history
 - Merge Pull Request #26944 from mmezhensky/magento2:unittest-CatalogProductCompareClearObserverTest
 - Merged commits:
   1. c7e6795
   2. 15437fc
  • Loading branch information
magento-engcom-team committed Feb 23, 2020
2 parents 4dfb6da + 15437fc commit 636e210
Showing 1 changed file with 143 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

declare(strict_types=1);

namespace Magento\Reports\Test\Unit\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\Reports\Model\Event;
use Magento\Reports\Model\Product\Index\Compared;
use Magento\Reports\Model\Product\Index\ComparedFactory;
use Magento\Reports\Model\ReportStatus;
use Magento\Reports\Observer\CatalogProductCompareClearObserver;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

/**
* Unit test for Magento\Reports\Test\Unit\Observer\CatalogProductCompareClearObserver
*/
class CatalogProductCompareClearObserverTest extends TestCase
{
/**
* Testable Object
*
* @var CatalogProductCompareClearObserver
*/
private $observer;

/**
* @var ObjectManager
*/
private $objectManager;

/**
* @var Observer|MockObject
*/
private $observerMock;

/**
* @var ReportStatus|MockObject
*/
private $reportStatusMock;

/**
* @var ComparedFactory|MockObject
*/
private $productCompFactoryMock;

/**
* @var Compared|MockObject
*/
private $productCompModelMock;

/**
* @var Event|MockObject
*/
private $reportEventMock;

/**
* @inheritDoc
*/
protected function setUp(): void
{
$this->objectManager = new ObjectManager($this);
$this->observerMock = $this->createMock(Observer::class);

$this->reportStatusMock = $this->getMockBuilder(ReportStatus::class)
->disableOriginalConstructor()
->setMethods(['isReportEnabled'])
->getMock();

$this->reportEventMock = $this->getMockBuilder(Event::class)
->disableOriginalConstructor()
->getMock();

$this->productCompFactoryMock = $this->getMockBuilder(ComparedFactory::class)
->disableOriginalConstructor()
->setMethods(['create'])
->getMock();

$this->productCompModelMock = $this->getMockBuilder(Compared::class)
->disableOriginalConstructor()
->getMock();

$this->observer = $this->objectManager->getObject(
CatalogProductCompareClearObserver::class,
[
'reportStatus' => $this->reportStatusMock,
'productCompFactory' => $this->productCompFactoryMock
]
);
}

/**
* Test for execute(), covers test case for remove all products from compare products
*/
public function testExecuteRemoveProducts(): void
{
$this->reportStatusMock
->expects($this->once())
->method('isReportEnabled')
->with(Event::EVENT_PRODUCT_VIEW)
->willReturn(true);

$this->productCompFactoryMock
->expects($this->once())
->method('create')
->willReturn($this->productCompModelMock);

$this->productCompModelMock
->expects($this->once())
->method('calculate')
->willReturnSelf();

$this->observer->execute($this->observerMock);
}

/**
* Test for execute(), covers test case for remove all products from compare products with report disabled
*/
public function testExecuteRemoveProductsWithReportDisable(): void
{
$this->reportStatusMock
->expects($this->once())
->method('isReportEnabled')
->with(Event::EVENT_PRODUCT_VIEW)
->willReturn(false);

$this->productCompFactoryMock
->expects($this->never())
->method('create');

$this->productCompModelMock
->expects($this->never())
->method('calculate');

$this->observer->execute($this->observerMock);
}
}

0 comments on commit 636e210

Please sign in to comment.