Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/cartforge.co/vendor/magento/module-product-alert/Test/Unit/Helper/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/vendor/magento/module-product-alert/Test/Unit/Helper/DataTest.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\ProductAlert\Test\Unit\Helper;

use Magento\Catalog\Model\Product;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
use Magento\Framework\Url\EncoderInterface;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\LayoutInterface;
use Magento\ProductAlert\Block\Email\Price;
use Magento\ProductAlert\Helper\Data as HelperData;
use Magento\ProductAlert\Model\Observer;
use Magento\Store\Model\ScopeInterface;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

/**
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
 */
class DataTest extends TestCase
{
    /**
     * @var HelperData
     */
    private $helper;

    /**
     * @var ObjectManagerHelper
     */
    private $objectManagerHelper;

    /**
     * @var Context|MockObject
     */
    private $contextMock;

    /**
     * @var UrlInterface|MockObject
     */
    private $urlBuilderMock;

    /**
     * @var EncoderInterface|MockObject
     */
    private $encoderMock;

    /**
     * @var ScopeConfigInterface|MockObject
     */
    private $scopeConfigMock;

    /**
     * @var LayoutInterface|MockObject
     */
    private $layoutMock;

    /**
     * Setup environment for testing
     */
    protected function setUp(): void
    {
        $this->contextMock = $this->createMock(Context::class);
        $this->urlBuilderMock = $this->getMockForAbstractClass(UrlInterface::class);
        $this->encoderMock = $this->getMockForAbstractClass(EncoderInterface::class);
        $this->scopeConfigMock = $this->getMockForAbstractClass(ScopeConfigInterface::class);
        $this->layoutMock = $this->getMockForAbstractClass(LayoutInterface::class);
        $this->contextMock->expects($this->once())->method('getUrlBuilder')->willReturn($this->urlBuilderMock);
        $this->contextMock->expects($this->once())->method('getUrlEncoder')->willReturn($this->encoderMock);
        $this->contextMock->expects($this->once())->method('getScopeConfig')->willReturn($this->scopeConfigMock);

        $this->objectManagerHelper = new ObjectManagerHelper($this);

        $productMock = $this->createMock(Product::class);
        $productMock->expects($this->any())->method('getId')->willReturn(1);

        $this->helper = $this->objectManagerHelper->getObject(
            HelperData::class,
            [
                'context' => $this->contextMock,
                'layout' => $this->layoutMock
            ]
        );
        $this->helper->setProduct($productMock);
    }

    /**
     * Test getSaveUrl() function
     */
    public function testGetSaveUrl()
    {
        $currentUrl = 'http://www.example.com/';
        $type = 'stock';
        $uenc = strtr(base64_encode($currentUrl), '+/=', '-_,');
        $expected = 'http://www.example.com/roductalert/add/stock/product_id/1/uenc/' . $uenc;

        $this->urlBuilderMock->expects($this->any())->method('getCurrentUrl')->willReturn($currentUrl);
        $this->encoderMock->expects($this->any())->method('encode')
            ->with($currentUrl)
            ->willReturn($uenc);
        $this->urlBuilderMock->expects($this->any())->method('getUrl')
            ->with(
                'productalert/add/' . $type,
                [
                    'product_id' => 1,
                    'uenc' => $uenc
                ]
            )
            ->willReturn($expected);

        $this->assertEquals($expected, $this->helper->getSaveUrl($type));
    }

    /**
     * Test createBlock() with no exception
     */
    public function testCreateBlockWithNoException()
    {
        $priceBlockMock = $this->createMock(Price::class);
        $this->layoutMock->expects($this->once())->method('createBlock')->willReturn($priceBlockMock);

        $this->assertEquals($priceBlockMock, $this->helper->createBlock(Price::class));
    }

    /**
     * Test createBlock() with exception
     */
    public function testCreateBlockWithException()
    {
        $invalidBlock = $this->createMock(Product::class);
        $this->expectException(LocalizedException::class);

        $this->helper->createBlock($invalidBlock);
    }

    /**
     * Test isStockAlertAllowed() function with Yes settings
     */
    public function testIsStockAlertAllowedWithYesSettings()
    {
        $this->scopeConfigMock->expects($this->any())->method('isSetFlag')
            ->with(Observer::XML_PATH_STOCK_ALLOW, ScopeInterface::SCOPE_STORE)
            ->willReturn('1');

        $this->assertEquals('1', $this->helper->isStockAlertAllowed());
    }

    /**
     * Test isPriceAlertAllowed() function with Yes settings
     */
    public function testIsPriceAlertAllowedWithYesSetting()
    {
        $this->scopeConfigMock->expects($this->any())->method('isSetFlag')
            ->with(Observer::XML_PATH_PRICE_ALLOW, ScopeInterface::SCOPE_STORE)
            ->willReturn('1');

        $this->assertEquals('1', $this->helper->isPriceAlertAllowed());
    }
}

Spamworldpro Mini