| Current Path : /home/rtorresani/www/dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ |
| Current File : //home/rtorresani/www/dev/tests/integration/testsuite/Magento/Catalog/Block/Product/NewTest.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Catalog\Block\Product;
/**
* Test class for \Magento\Catalog\Block\Product\New.
*
* @magentoDataFixture Magento/Catalog/_files/products_new.php
* @magentoDbIsolation disabled
*/
class NewTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \Magento\Catalog\Block\Product\NewProduct
*/
protected $_block;
protected function setUp(): void
{
/**
* @var \Magento\Customer\Api\GroupManagementInterface $groupManagement
*/
$groupManagement = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
->get(\Magento\Customer\Api\GroupManagementInterface::class);
$notLoggedInId = $groupManagement->getNotLoggedInGroup()->getId();
\Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea(\Magento\Framework\App\Area::AREA_FRONTEND);
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Framework\App\Http\Context::class
)->setValue(
\Magento\Customer\Model\Context::CONTEXT_GROUP,
$notLoggedInId,
$notLoggedInId
);
$this->_block = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Framework\View\LayoutInterface::class
)->createBlock(
\Magento\Catalog\Block\Product\NewProduct::class
);
}
public function testGetCacheKeyInfo()
{
$info = $this->_block->getCacheKeyInfo();
$keys = array_keys($info);
/** order and values of cache key info elements is important */
$this->assertSame(0, array_shift($keys));
$this->assertEquals('CATALOG_PRODUCT_NEW', $info[0]);
$this->assertSame(1, array_shift($keys));
$this->assertEquals(
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Store\Model\StoreManagerInterface::class
)->getStore()->getId(),
$info[1]
);
$this->assertSame(2, array_shift($keys));
$themeModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Framework\View\DesignInterface::class
)->getDesignTheme();
$this->assertEquals($themeModel->getId() ?: null, $info[2]);
$this->assertSame(3, array_shift($keys));
$this->assertEquals(
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Customer\Model\Session::class
)->getCustomerGroupId(),
$info[3]
);
$this->assertSame('template', array_shift($keys));
/**
* This block is implemented without template by default (invalid).
* Having the cache key fragment with empty value can potentially lead to caching bugs
*/
$this->assertSame(4, array_shift($keys));
$this->assertNotEquals('', $info[4]);
}
public function testSetGetProductsCount()
{
$this->assertEquals(
\Magento\Catalog\Block\Product\NewProduct::DEFAULT_PRODUCTS_COUNT,
$this->_block->getProductsCount()
);
$this->_block->setProductsCount(100);
$this->assertEquals(100, $this->_block->getProductsCount());
}
public function testToHtml()
{
$this->assertEmpty($this->_block->getProductCollection());
$this->_block->setProductsCount(5);
$this->_block->setTemplate('product/widget/new/content/new_list.phtml');
$this->_block->setLayout(
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Framework\View\LayoutInterface::class
)
);
$html = $this->_block->toHtml();
$this->assertNotEmpty($html);
$this->assertStringContainsString('New Product', $html);
$this->assertInstanceOf(
\Magento\Catalog\Model\ResourceModel\Product\Collection::class,
$this->_block->getProductCollection()
);
}
/**
* @covers \Magento\Catalog\Block\Product\Widget\NewWidget::getCacheKeyInfo
*/
public function testNewWidgetGetCacheKeyInfo()
{
$block = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Framework\View\LayoutInterface::class
)->createBlock(
\Magento\Catalog\Block\Product\Widget\NewWidget::class
);
$requestParams = ['test' => 'data'];
$block->getRequest()->setParams($requestParams);
$info = $block->getCacheKeyInfo();
$this->assertEquals('CATALOG_PRODUCT_NEW', $info[0]);
$this->assertEquals(json_encode($requestParams), $info[8]);
}
}