![]() 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-tax/Test/Unit/Model/TaxClass/Source/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Tax\Test\Unit\Model\TaxClass\Source; use Magento\Framework\Api\Filter; use Magento\Framework\Api\FilterBuilder; use Magento\Framework\Api\SearchCriteria; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Tax\Api\Data\TaxClassInterface; use Magento\Tax\Api\Data\TaxClassSearchResultsInterface; use Magento\Tax\Api\TaxClassManagementInterface; use Magento\Tax\Api\TaxClassRepositoryInterface; use Magento\Tax\Model\ClassModel; use Magento\Tax\Model\TaxClass\Source\Customer; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class CustomerTest extends TestCase { /** * @var TaxClassRepositoryInterface|MockObject */ protected $taxClassRepositoryMock; /** * @var SearchCriteriaBuilder|MockObject */ protected $searchCriteriaBuilderMock; /** * @var FilterBuilder|MockObject */ protected $filterBuilderMock; /** * @var Customer */ protected $customer; /** * @var ObjectManager */ protected $objectManager; /** * Set up * * @return void */ protected function setUp(): void { $this->objectManager = new ObjectManager($this); $this->taxClassRepositoryMock = $this->getMockForAbstractClass( TaxClassRepositoryInterface::class, ['getList'], '', false, true, true, [] ); $this->searchCriteriaBuilderMock = $this->createPartialMock( SearchCriteriaBuilder::class, ['addFilters', 'create'] ); $this->filterBuilderMock = $this->createPartialMock( FilterBuilder::class, ['setField', 'setValue', 'create'] ); $this->customer = $this->objectManager->getObject( Customer::class, [ 'taxClassRepository' => $this->taxClassRepositoryMock, 'searchCriteriaBuilder' => $this->searchCriteriaBuilderMock, 'filterBuilder' => $this->filterBuilderMock ] ); } /** * Run test getAllOptions method * * @param bool $isEmpty * @param array $expected * @dataProvider dataProviderGetAllOptions */ public function testGetAllOptions($isEmpty, array $expected) { $filterMock = $this->createMock(Filter::class); $searchCriteriaMock = $this->createMock(SearchCriteria::class); $searchResultsMock = $this->getMockForAbstractClass( TaxClassSearchResultsInterface::class, [], '', false, true, true, ['getItems'] ); $taxClassMock = $this->getMockForAbstractClass( TaxClassInterface::class, ['getClassId', 'getClassName'], '', false, true, true ); $this->filterBuilderMock->expects($this->once()) ->method('setField') ->with(ClassModel::KEY_TYPE) ->willReturnSelf(); $this->filterBuilderMock->expects($this->once()) ->method('setValue') ->with(TaxClassManagementInterface::TYPE_CUSTOMER) ->willReturnSelf(); $this->filterBuilderMock->expects($this->once()) ->method('create') ->willReturn($filterMock); $this->searchCriteriaBuilderMock->expects($this->once()) ->method('addFilters') ->with([$filterMock]) ->willReturnSelf(); $this->searchCriteriaBuilderMock->expects($this->once()) ->method('create') ->willReturn($searchCriteriaMock); $this->taxClassRepositoryMock->expects($this->once()) ->method('getList') ->with($searchCriteriaMock) ->willReturn($searchResultsMock); if (!$isEmpty) { $taxClassMock->expects($this->once()) ->method('getClassId') ->willReturn(10); $taxClassMock->expects($this->once()) ->method('getClassName') ->willReturn('class-name'); $items = [$taxClassMock]; $searchResultsMock->expects($this->once()) ->method('getItems') ->willReturn($items); // checking of a lack of re-initialization for ($i = 10; --$i;) { $result = $this->customer->getAllOptions(); $this->assertEquals($expected, $result); } } else { $items = []; $searchResultsMock->expects($this->once()) ->method('getItems') ->willReturn($items); // checking exception $this->assertEmpty($this->customer->getAllOptions()); } } /** * Data provider for testGetAllOptions * * @return array */ public function dataProviderGetAllOptions() { return [ ['isEmpty' => false, 'expected' => [['value' => 10, 'label' => 'class-name']]], ['isEmpty' => true, 'expected' => []] ]; } /** * Run test getAllOptions method for names integrity * * @param array $value * @dataProvider dataProviderGetAllOptionsNameIntegrity */ public function testGetAllOptionsNameIntegrity(array $value) { $filterMock = $this->createMock(Filter::class); $searchCriteriaMock = $this->createMock(SearchCriteria::class); $searchResultsMock = $this->getMockForAbstractClass( TaxClassSearchResultsInterface::class, [], '', false, true, true, ['getItems'] ); $taxClassMock = $this->getMockForAbstractClass( TaxClassInterface::class, ['getClassId', 'getClassName'], '', false, true, true ); $this->filterBuilderMock->expects($this->once()) ->method('setField') ->with(ClassModel::KEY_TYPE) ->willReturnSelf(); $this->filterBuilderMock->expects($this->once()) ->method('setValue') ->with(TaxClassManagementInterface::TYPE_CUSTOMER) ->willReturnSelf(); $this->filterBuilderMock->expects($this->once()) ->method('create') ->willReturn($filterMock); $this->searchCriteriaBuilderMock->expects($this->once()) ->method('addFilters') ->with([$filterMock]) ->willReturnSelf(); $this->searchCriteriaBuilderMock->expects($this->once()) ->method('create') ->willReturn($searchCriteriaMock); $this->taxClassRepositoryMock->expects($this->once()) ->method('getList') ->with($searchCriteriaMock) ->willReturn($searchResultsMock); $taxClassMock->expects($this->once()) ->method('getClassId') ->willReturn($value['value']); $taxClassMock->expects($this->once()) ->method('getClassName') ->willReturn($value['label']); $items = [$taxClassMock]; $searchResultsMock->expects($this->once()) ->method('getItems') ->willReturn($items); $result=($this->customer->getAllOptions()); $expected=$value; $this->assertEquals([$expected], $result); } /** * Data provider for testGetAllOptionsNameIntegrity * * @return array */ public function dataProviderGetAllOptionsNameIntegrity() { return [ [ 'value' => ['value' => 1, 'label' => 'unescaped name'], ], [ 'value' => ['value' => 2, 'label' => 'tax < 50%'], ], [ 'value' => ['value' => 3, 'label' => 'rule for 1 & 2'], ], [ 'value' => ['value' => 4, 'label' => 'html <tag>'], ], [ 'value' => ['value' => 5, 'label' => 'comment <!-- comment -->'], ], [ 'value' => ['value' => 6, 'label' => 'php tag <?= "2"; ?>'], ], ]; } }