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/old/vendor/magento/module-sales-rule/Test/Unit/Block/Rss/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-sales-rule/Test/Unit/Block/Rss/DiscountsTest.php
<?php

/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\SalesRule\Test\Unit\Block\Rss;

use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\App\Rss\UrlBuilderInterface;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
use Magento\Framework\UrlInterface;
use Magento\SalesRule\Model\Rss\Discounts;
use Magento\SalesRule\Model\Rule;
use Magento\Store\Model\Store;
use Magento\Store\Model\StoreManagerInterface;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

class DiscountsTest extends TestCase
{
    /**
     * @var \Magento\SalesRule\Block\Rss\Discounts
     */
    protected $block;

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

    /**
     * @var StoreManagerInterface|MockObject
     */
    protected $storeManagerInterface;

    /**
     * @var Store|MockObject
     */
    protected $storeModel;

    /**
     * @var \Magento\SalesRule\Model\Rss\Discounts|MockObject
     */
    protected $discounts;

    /**
     * @var UrlBuilderInterface|MockObject
     */
    protected $rssBuilderInterface;

    /**
     * @var UrlInterface|MockObject
     */
    protected $urlBuilderInterface;

    /**
     * @var RequestInterface|MockObject
     */
    protected $requestInterface;

    /**
     * @var ScopeConfigInterface|MockObject
     */
    protected $scopeConfigInterface;

    /**
     * @var \Magento\SalesRule\Model\Rss\Discounts|MockObject
     */
    protected $rssModel;

    /**
     * @var TimezoneInterface|MockObject
     */
    protected $timezoneInterface;

    protected function setUp(): void
    {
        $this->storeManagerInterface = $this->getMockForAbstractClass(StoreManagerInterface::class);
        $this->requestInterface = $this->getMockForAbstractClass(RequestInterface::class);
        $this->rssBuilderInterface = $this->getMockForAbstractClass(UrlBuilderInterface::class);
        $this->urlBuilderInterface = $this->getMockForAbstractClass(UrlInterface::class);
        $this->scopeConfigInterface = $this->getMockForAbstractClass(ScopeConfigInterface::class);
        $this->timezoneInterface = $this->getMockForAbstractClass(TimezoneInterface::class);
        $this->rssModel = $this->createPartialMock(
            Discounts::class,
            [
                'getDiscountCollection'
            ]
        );
        $this->storeModel = $this->createPartialMock(
            Store::class,
            [
                'getId',
                'getWebsiteId',
                'getName',
                'getFrontendName'
            ]
        );

        $this->storeManagerInterface->expects($this->any())->method('getStore')
            ->willReturn($this->storeModel);
        $this->storeModel->expects($this->any())->method('getId')->willReturn(1);

        $this->objectManagerHelper = new ObjectManagerHelper($this);
        $this->block = $this->objectManagerHelper->getObject(
            \Magento\SalesRule\Block\Rss\Discounts::class,
            [
                'storeManager' => $this->storeManagerInterface,
                'rssUrlBuilder' => $this->rssBuilderInterface,
                'urlBuilder' => $this->urlBuilderInterface,
                'request' => $this->requestInterface,
                'scopeConfig' => $this->scopeConfigInterface,
                'rssModel' => $this->rssModel,
                'localeDate' => $this->timezoneInterface
            ]
        );
    }

    public function testGetRssData()
    {
        $ruleData = [
            'to_date' => '12/12/14',
            'from_date' => '12/12/14',
            'coupon_code' => '1234567',
            'description' => 'Rule Description',
            'name' => 'Rule Name',
        ];
        $rssData = [
            'title' => 'Frontend Name - Discounts and Coupons',
            'description' => 'Frontend Name - Discounts and Coupons',
            'link' => 'http://rss.magento.com/discount',
            'charset' => 'UTF-8',
            'language' => 'en_US',
            'entries' => [
                'title' => 'Rule Name',
                'link' => 'http://rss.magento.com',
                'description' => [
                    'description' => 'Rule Description',
                    'start_date' => '12/12/14',
                    'end_date' => '12/12/14',
                    'coupon_code' => '1234567',
                ],
            ],
        ];
        $rssUrl = 'http://rss.magento.com/discount';
        $url = 'http://rss.magento.com';

        $ruleModel = $this->getMockBuilder(Rule::class)
            ->addMethods(['getCouponCode', 'getDescription', 'getName'])
            ->onlyMethods(['getToDate', 'getFromDate'])
            ->disableOriginalConstructor()
            ->getMock();

        $this->storeModel->expects($this->once())->method('getWebsiteId')->willReturn(1);
        $this->storeModel->expects($this->never())->method('getName');
        $this->storeModel->expects($this->atLeastOnce())->method('getFrontendName')->willReturn('Frontend Name');

        $this->requestInterface->expects($this->any())->method('getParam')->willReturn(1);
        $this->urlBuilderInterface->expects($this->any())->method('getUrl')->willReturn($url);
        $this->rssBuilderInterface->expects($this->any())->method('getUrl')->willReturn($rssUrl);
        $this->scopeConfigInterface->expects($this->any())->method('getValue')->willReturn('en_US');
        $ruleModel->expects($this->any())->method('getCouponCode')->willReturn($ruleData['coupon_code']);
        $ruleModel->expects($this->any())->method('getToDate')->willReturn($ruleData['to_date']);
        $ruleModel->expects($this->once())->method('getFromDate')->willReturn($ruleData['from_date']);
        $ruleModel->expects($this->once())->method('getDescription')
            ->willReturn($ruleData['description']);
        $ruleModel->expects($this->once())->method('getName')->willReturn($ruleData['name']);
        $this->rssModel->expects($this->any())->method('getDiscountCollection')
            ->willReturn([$ruleModel]);
        $this->timezoneInterface->expects($this->any())->method('formatDateTime')->willReturn('12/12/14');

        $data = $this->block->getRssData();

        $this->assertEquals($rssData['title'], $data['title']);
        $this->assertEquals($rssData['description'], $data['description']);
        $this->assertEquals($rssData['link'], $data['link']);
        $this->assertEquals($rssData['charset'], $data['charset']);
        $this->assertEquals($rssData['language'], $data['language']);
        $this->assertEquals($rssData['entries']['title'], $data['entries'][0]['title']);
        $this->assertEquals($rssData['entries']['link'], $data['entries'][0]['link']);
        $this->assertStringContainsString(
            $rssData['entries']['description']['description'],
            $data['entries'][0]['description']
        );
        $this->assertStringContainsString(
            $rssData['entries']['description']['start_date'],
            $data['entries'][0]['description']
        );
        $this->assertStringContainsString(
            $rssData['entries']['description']['end_date'],
            $data['entries'][0]['description']
        );
        $this->assertStringContainsString(
            $rssData['entries']['description']['coupon_code'],
            $data['entries'][0]['description']
        );
    }

    public function testGetCacheLifetime()
    {
        $this->assertEquals(0, $this->block->getCacheLifetime());
    }

    /**
     * @dataProvider isAllowedDataProvider
     * @param bool $isAllowed
     */
    public function testIsAllowed($isAllowed)
    {
        $this->scopeConfigInterface->expects($this->once())->method('isSetFlag')->willReturn($isAllowed);
        $this->assertEquals($isAllowed, $this->block->isAllowed());
    }

    /**
     * @return array
     */
    public function isAllowedDataProvider()
    {
        return [
            [true],
            [false]
        ];
    }

    public function testGetFeeds()
    {
        $feedData = [
            'label' => 'Coupons/Discounts',
            'link' => 'http://rss.magento.com/discount',
        ];
        $this->rssBuilderInterface->expects($this->any())
            ->method('getUrl')
            ->willReturn($feedData['link']);

        $this->scopeConfigInterface->expects($this->once())->method('isSetFlag')->willReturn(true);
        $this->assertEquals($feedData, $this->block->getFeeds());
    }
}

Spamworldpro Mini