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-weee/Test/Unit/Helper/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-weee/Test/Unit/Helper/DataTest.php
<?php

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

namespace Magento\Weee\Test\Unit\Helper;

use Magento\Bundle\Model\Product\Type;
use Magento\Catalog\Model\Product;
use Magento\Catalog\Model\Product\Type\Simple;
use Magento\Framework\DataObject;
use Magento\Framework\Registry;
use Magento\Framework\Serialize\Serializer\Json;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\Quote\Model\Quote\Item as QuoteItem;
use Magento\Sales\Model\Order\Item;
use Magento\Store\Model\Store;
use Magento\Tax\Helper\Data;
use Magento\Weee\Helper\Data as WeeeHelper;
use Magento\Weee\Model\Config;
use Magento\Weee\Model\Tax;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

/**
 * @SuppressWarnings(PHPMD.TooManyMethods)
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
 */
class DataTest extends TestCase
{
    const ROW_AMOUNT_INVOICED = '200';
    const BASE_ROW_AMOUNT_INVOICED = '400';
    const TAX_AMOUNT_INVOICED = '20';
    const BASE_TAX_AMOUNT_INVOICED = '40';
    const ROW_AMOUNT_REFUNDED = '100';
    const BASE_ROW_AMOUNT_REFUNDED = '201';
    const TAX_AMOUNT_REFUNDED = '10';
    const BASE_TAX_AMOUNT_REFUNDED = '21';

    /**
     * @var Product
     */
    protected $product;

    /**
     * @var Tax
     */
    protected $weeeTax;

    /**
     * @var Data
     */
    protected $taxData;

    /**
     * @var WeeeHelper
     */
    protected $helperData;

    /**
     * @var Json|MockObject
     */
    private $serializerMock;

    /**
     * @inheritdoc
     */
    protected function setUp(): void
    {
        $this->product = $this->createMock(Product::class);
        $weeeConfig = $this->createMock(Config::class);
        $weeeConfig->method('isEnabled')->willReturn(true);
        $weeeConfig->method('getListPriceDisplayType')->willReturn(1);
        $this->weeeTax = $this->createMock(Tax::class);
        $this->weeeTax->method('getWeeeAmount')->willReturn('11.26');
        $this->taxData = $this->createPartialMock(
            Data::class,
            ['getPriceDisplayType', 'priceIncludesTax']
        );

        $this->serializerMock = $this->getMockBuilder(Json::class)
            ->getMock();

        $arguments = [
            'weeeConfig' => $weeeConfig,
            'weeeTax' => $this->weeeTax,
            'taxData' => $this->taxData,
            'serializer' => $this->serializerMock
        ];
        $helper = new ObjectManager($this);
        $this->helperData = $helper->getObject(WeeeHelper::class, $arguments);
    }

    /**
     * @return void
     */
    public function testGetAmount(): void
    {
        $this->product->method('hasData')->willReturn(false);
        $this->product->method('getData')->willReturn(11.26);

        $this->assertEquals('11.26', $this->helperData->getAmountExclTax($this->product));
    }

    /**
     * @return Item|MockObject
     */
    private function setupOrderItem(): Item
    {
        $orderItem = $this->getMockBuilder(Item::class)
            ->disableOriginalConstructor()
            ->onlyMethods(['__wakeup'])
            ->getMock();

        $weeeTaxApplied = [
            [
                WeeeHelper::KEY_WEEE_AMOUNT_INVOICED => self::ROW_AMOUNT_INVOICED,
                WeeeHelper::KEY_BASE_WEEE_AMOUNT_INVOICED => self::BASE_ROW_AMOUNT_INVOICED,
                WeeeHelper::KEY_WEEE_TAX_AMOUNT_INVOICED => self::TAX_AMOUNT_INVOICED,
                WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_INVOICED => self::BASE_TAX_AMOUNT_INVOICED,
                WeeeHelper::KEY_WEEE_AMOUNT_REFUNDED => self::ROW_AMOUNT_REFUNDED,
                WeeeHelper::KEY_BASE_WEEE_AMOUNT_REFUNDED => self::BASE_ROW_AMOUNT_REFUNDED,
                WeeeHelper::KEY_WEEE_TAX_AMOUNT_REFUNDED => self::TAX_AMOUNT_REFUNDED,
                WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED => self::BASE_TAX_AMOUNT_REFUNDED
            ],
            [
                WeeeHelper::KEY_WEEE_AMOUNT_INVOICED => self::ROW_AMOUNT_INVOICED,
                WeeeHelper::KEY_BASE_WEEE_AMOUNT_INVOICED => self::BASE_ROW_AMOUNT_INVOICED,
                WeeeHelper::KEY_WEEE_TAX_AMOUNT_INVOICED => self::TAX_AMOUNT_INVOICED,
                WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_INVOICED => self::BASE_TAX_AMOUNT_INVOICED,
                WeeeHelper::KEY_WEEE_AMOUNT_REFUNDED => self::ROW_AMOUNT_REFUNDED,
                WeeeHelper::KEY_BASE_WEEE_AMOUNT_REFUNDED => self::BASE_ROW_AMOUNT_REFUNDED,
                WeeeHelper::KEY_WEEE_TAX_AMOUNT_REFUNDED => self::TAX_AMOUNT_REFUNDED,
                WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED => self::BASE_TAX_AMOUNT_REFUNDED
            ],
        ];

        $orderItem->setData(
            'weee_tax_applied',
            json_encode($weeeTaxApplied)
        );

        $this->serializerMock
            ->method('unserialize')
            ->willReturn($weeeTaxApplied);

        return $orderItem;
    }

    /**
     * @return void
     */
    public function testGetWeeeAmountInvoiced(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getWeeeAmountInvoiced($orderItem);
        $this->assertEquals(self::ROW_AMOUNT_INVOICED, $value);
    }

    /**
     * @return void
     */
    public function testGetBaseWeeeAmountInvoiced(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getBaseWeeeAmountInvoiced($orderItem);
        $this->assertEquals(self::BASE_ROW_AMOUNT_INVOICED, $value);
    }

    /**
     * @return void
     */
    public function testGetWeeeTaxAmountInvoiced(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getWeeeTaxAmountInvoiced($orderItem);
        $this->assertEquals(self::TAX_AMOUNT_INVOICED, $value);
    }

    /**
     * @return void
     */
    public function testGetWeeeBaseTaxAmountInvoiced(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getBaseWeeeTaxAmountInvoiced($orderItem);
        $this->assertEquals(self::BASE_TAX_AMOUNT_INVOICED, $value);
    }

    /**
     * @return void
     */
    public function testGetWeeeAmountRefunded(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getWeeeAmountRefunded($orderItem);
        $this->assertEquals(self::ROW_AMOUNT_REFUNDED, $value);
    }

    /**
     * @return void
     */
    public function testGetBaseWeeeAmountRefunded(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getBaseWeeeAmountRefunded($orderItem);
        $this->assertEquals(self::BASE_ROW_AMOUNT_REFUNDED, $value);
    }

    /**
     * @return void
     */
    public function testGetWeeeTaxAmountRefunded(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getWeeeTaxAmountRefunded($orderItem);
        $this->assertEquals(self::TAX_AMOUNT_REFUNDED, $value);
    }

    /**
     * @return void
     */
    public function testGetBaseWeeeTaxAmountRefunded(): void
    {
        $orderItem = $this->setupOrderItem();
        $value = $this->helperData->getBaseWeeeTaxAmountRefunded($orderItem);
        $this->assertEquals(self::BASE_TAX_AMOUNT_REFUNDED, $value);
    }

    /**
     * @param int $priceDisplay
     * @param bool $priceIncludesTax
     * @param array $expectedAmount
     *
     * @return void
     * @dataProvider dataProviderGetWeeeAttributesForBundle
     */
    public function testGetWeeeAttributesForBundle(
        int $priceDisplay,
        bool $priceIncludesTax,
        array $expectedAmount
    ): void {
        $prodId1 = 1;
        $prodId2 = 2;
        $fptCode1 = 'fpt' . $prodId1;
        $fptCode2 = 'fpt' . $prodId2;

        $weeeObject1 = new DataObject(
            [
                'code' => $fptCode1,
                'amount' => '15.00',
                'amount_excl_tax' => '15.0000',
                'tax_amount' => '1'
            ]
        );
        $weeeObject2 = new DataObject(
            [
                'code' => $fptCode2,
                'amount' => '10.00',
                'amount_excl_tax' => '10.0000',
                'tax_amount' => '5'
            ]
        );
        $expectedObject1 = new DataObject(
            [
                'code' => $fptCode1,
                'amount' => $expectedAmount[0],
                'amount_excl_tax' => '15.0000',
                'tax_amount' => '1'
            ]
        );
        $expectedObject2 = new DataObject(
            [
                'code' => $fptCode2,
                'amount' => $expectedAmount[1],
                'amount_excl_tax' => '10.0000',
                'tax_amount' => '5'
            ]
        );

        $expectedArray = [$prodId1 => [$fptCode1 => $expectedObject1], $prodId2 => [$fptCode2 => $expectedObject2]];
        $this->weeeTax
            ->method('getProductWeeeAttributes')
            ->willReturn([$weeeObject1, $weeeObject2]);
        $this->taxData
            ->method('getPriceDisplayType')
            ->willReturn($priceDisplay);
        $this->taxData
            ->method('priceIncludesTax')
            ->willReturn($priceIncludesTax);

        $productSimple = $this->getMockBuilder(Simple::class)
            ->addMethods(['getId'])
            ->disableOriginalConstructor()
            ->getMock();
        $productSimple
            ->method('getId')
            ->willReturnOnConsecutiveCalls($prodId1, $prodId2);

        $productInstance = $this->createMock(Type::class);
        $productInstance
            ->method('getSelectionsCollection')
            ->willReturn([$productSimple]);

        $store=$this->createMock(Store::class);
        /** @var Product $product */
        $product = $this->createPartialMock(
            Product::class,
            ['getTypeInstance', 'getStoreId', 'getStore', 'getTypeId']
        );
        $product
            ->method('getTypeInstance')
            ->willReturn($productInstance);
        $product
            ->method('getStoreId')
            ->willReturn(1);
        $product
            ->method('getStore')
            ->willReturn($store);
        $product
            ->method('getTypeId')
            ->willReturn('bundle');

        $registry = $this->createMock(Registry::class);
        $registry
            ->method('registry')
            ->with('current_product')
            ->willReturn($product);

        $result = $this->helperData->getWeeeAttributesForBundle($product);
        $this->assertEquals($expectedArray, $result);
    }

    /**
     * @return array
     */
    public function dataProviderGetWeeeAttributesForBundle(): array
    {
        return [
            [2, false, ["16.00", "15.00"]],
            [2, true, ["15.00", "10.00"]],
            [1, false, ["15.00", "10.00"]],
            [1, true, ["15.0000", "10.0000"]],
            [3, false, ["16.00", "15.00"]],
            [3, true, ["15.00", "10.00"]]
        ];
    }

    /**
     * @return void
     */
    public function testGetAppliedSimple(): void
    {
        $testArray = ['key' => 'value'];
        $itemProductSimple = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxApplied', 'getHasChildren'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductSimple
            ->method('getHasChildren')
            ->willReturn(false);

        $itemProductSimple
            ->method('getWeeeTaxApplied')
            ->willReturn(json_encode($testArray));

        $this->serializerMock
            ->method('unserialize')
            ->willReturn($testArray);

        $this->assertEquals($testArray, $this->helperData->getApplied($itemProductSimple));
    }

    /**
     * @return void
     */
    public function testGetAppliedBundle(): void
    {
        $testArray1 = ['key1' => 'value1'];
        $testArray2 = ['key2' => 'value2'];

        $testArray = array_merge($testArray1, $testArray2);

        $itemProductSimple1 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxApplied'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductSimple2 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxApplied'])
            ->disableOriginalConstructor()
            ->getMock();

        $itemProductSimple1
            ->method('getWeeeTaxApplied')
            ->willReturn(json_encode($testArray1));

        $itemProductSimple2
            ->method('getWeeeTaxApplied')
            ->willReturn(json_encode($testArray2));

        $itemProductBundle = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getHasChildren'])
            ->onlyMethods(['isChildrenCalculated', 'getChildren'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductBundle
            ->method('getHasChildren')
            ->willReturn(true);
        $itemProductBundle
            ->method('isChildrenCalculated')
            ->willReturn(true);
        $itemProductBundle
            ->method('getChildren')
            ->willReturn([$itemProductSimple1, $itemProductSimple2]);

        $this->serializerMock
            ->method('unserialize')
            ->willReturn($testArray);

        $this->assertEquals($testArray, $this->helperData->getApplied($itemProductBundle));
    }

    /**
     * @return void
     */
    public function testGetRecursiveAmountSimple(): void
    {
        $testAmountUnit = 2;
        $testAmountRow = 34;

        $itemProductSimple = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getHasChildren', 'getWeeeTaxAppliedAmount', 'getWeeeTaxAppliedRowAmount'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductSimple
            ->method('getHasChildren')
            ->willReturn(false);

        $itemProductSimple
            ->method('getWeeeTaxAppliedAmount')
            ->willReturn($testAmountUnit);
        $itemProductSimple
            ->method('getWeeeTaxAppliedRowAmount')
            ->willReturn($testAmountRow);

        $this->assertEquals($testAmountUnit, $this->helperData->getWeeeTaxAppliedAmount($itemProductSimple));
        $this->assertEquals($testAmountRow, $this->helperData->getWeeeTaxAppliedRowAmount($itemProductSimple));
    }

    /**
     * @return void
     */
    public function testGetRecursiveAmountBundle(): void
    {
        $testAmountUnit1 = 1;
        $testAmountUnit2 = 2;
        $testTotalUnit = $testAmountUnit1 + $testAmountUnit2;

        $testAmountRow1 = 33;
        $testAmountRow2 = 444;
        $testTotalRow = $testAmountRow1 + $testAmountRow2;

        $itemProductSimple1 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxAppliedAmount', 'getWeeeTaxAppliedRowAmount'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductSimple2 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxAppliedAmount', 'getWeeeTaxAppliedRowAmount'])
            ->disableOriginalConstructor()
            ->getMock();

        $itemProductSimple1
            ->method('getWeeeTaxAppliedAmount')
            ->willReturn($testAmountUnit1);
        $itemProductSimple1
            ->method('getWeeeTaxAppliedRowAmount')
            ->willReturn($testAmountRow1);

        $itemProductSimple2
            ->method('getWeeeTaxAppliedAmount')
            ->willReturn($testAmountUnit2);
        $itemProductSimple2
            ->method('getWeeeTaxAppliedRowAmount')
            ->willReturn($testAmountRow2);

        $itemProductBundle = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getHasChildren'])
            ->onlyMethods(['isChildrenCalculated', 'getChildren'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductBundle
            ->method('getHasChildren')
            ->willReturn(true);
        $itemProductBundle
            ->method('isChildrenCalculated')
            ->willReturn(true);
        $itemProductBundle
            ->method('getChildren')
            ->willReturn([$itemProductSimple1, $itemProductSimple2]);

        $this->assertEquals($testTotalUnit, $this->helperData->getWeeeTaxAppliedAmount($itemProductBundle));
        $this->assertEquals($testTotalRow, $this->helperData->getWeeeTaxAppliedRowAmount($itemProductBundle));
    }

    /**
     * @return void
     */
    public function testGetProductWeeeAttributesForDisplay(): void
    {
        $store = $this->createMock(Store::class);
        $this->product
            ->method('getStore')
            ->willReturn($store);

        $result = $this->helperData->getProductWeeeAttributesForDisplay($this->product);
        $this->assertNull($result);
    }

    /**
     * @return void
     */
    public function testGetTaxDisplayConfig(): void
    {
        $expected = 1;
        $taxData = $this->createPartialMock(Data::class, ['getPriceDisplayType']);
        $taxData->method('getPriceDisplayType')->willReturn($expected);
        $arguments = [
            'taxData' => $taxData,
        ];
        $helper = new ObjectManager($this);
        $helperData = $helper->getObject(WeeeHelper::class, $arguments);

        $this->assertEquals($expected, $helperData->getTaxDisplayConfig());
    }

    /**
     * @return void
     */
    public function testGetTotalAmounts(): void
    {
        $item1Weee = 5;
        $item2Weee = 7;
        $expected = $item1Weee + $item2Weee;
        $itemProductSimple1 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxAppliedRowAmount'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductSimple2 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getWeeeTaxAppliedRowAmount'])
            ->disableOriginalConstructor()
            ->getMock();
        $items = [$itemProductSimple1, $itemProductSimple2];

        $itemProductSimple1
            ->method('getWeeeTaxAppliedRowAmount')
            ->willReturn($item1Weee);
        $itemProductSimple2
            ->method('getWeeeTaxAppliedRowAmount')
            ->willReturn($item2Weee);

        $this->assertEquals($expected, $this->helperData->getTotalAmounts($items));
    }

    /**
     * @return void
     */
    public function testGetBaseTotalAmounts(): void
    {
        $item1BaseWeee = 4;
        $item2BaseWeee = 3;
        $expected = $item1BaseWeee + $item2BaseWeee;
        $itemProductSimple1 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getBaseWeeeTaxAppliedRowAmnt'])
            ->disableOriginalConstructor()
            ->getMock();
        $itemProductSimple2 = $this->getMockBuilder(QuoteItem::class)
            ->addMethods(['getBaseWeeeTaxAppliedRowAmnt'])
            ->disableOriginalConstructor()
            ->getMock();
        $items = [$itemProductSimple1, $itemProductSimple2];

        $itemProductSimple1
            ->method('getBaseWeeeTaxAppliedRowAmnt')
            ->willReturn($item1BaseWeee);
        $itemProductSimple2
            ->method('getBaseWeeeTaxAppliedRowAmnt')
            ->willReturn($item2BaseWeee);

        $this->assertEquals($expected, $this->helperData->getBaseTotalAmounts($items));
    }
}

Spamworldpro Mini