![]() 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-payment/Test/Unit/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Payment\Test\Unit\Model; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; use Magento\Payment\Api\Data\PaymentMethodInterface; use Magento\Payment\Api\Data\PaymentMethodInterfaceFactory; use Magento\Payment\Helper\Data; use Magento\Payment\Model\Method\AbstractMethod; use Magento\Payment\Model\PaymentMethodList; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class PaymentMethodListTest extends TestCase { /** * @var ObjectManagerHelper */ private $objectManagerHelper; /** * @var PaymentMethodList|MockObject */ private $paymentMethodList; /** * @var PaymentMethodInterfaceFactory|MockObject */ private $methodFactoryMock; /** * @var \Magento\Payment\Helper\Data|MockObject */ private $helperMock; /** * Setup. * * @return void */ protected function setUp(): void { $this->methodFactoryMock = $this->getMockBuilder(PaymentMethodInterfaceFactory::class) ->setMethods(['create']) ->disableOriginalConstructor() ->getMock(); $this->helperMock = $this->getMockBuilder(Data::class) ->disableOriginalConstructor() ->getMock(); $this->objectManagerHelper = new ObjectManagerHelper($this); $this->paymentMethodList = $this->objectManagerHelper->getObject( PaymentMethodList::class, [ 'methodFactory' => $this->methodFactoryMock, 'helper' => $this->helperMock ] ); } /** * Setup getList method. * * @param array $paymentMethodConfig * @param array $methodInstancesMap * @return void */ private function setUpGetList($paymentMethodConfig, $methodInstancesMap) { $this->helperMock->expects($this->once()) ->method('getPaymentMethods') ->willReturn($paymentMethodConfig); $this->helperMock->expects($this->any()) ->method('getMethodInstance') ->willReturnMap($methodInstancesMap); $this->methodFactoryMock->expects($this->any()) ->method('create') ->willReturnCallback(function ($data) { $paymentMethod = $this->getMockBuilder(PaymentMethodInterface::class) ->getMockForAbstractClass(); $paymentMethod->expects($this->any()) ->method('getCode') ->willReturn($data['code']); $paymentMethod->expects($this->any()) ->method('getIsActive') ->willReturn($data['isActive']); return $paymentMethod; }); } /** * Test getList. * * @param int $storeId * @param array $paymentMethodConfig * @param array $methodInstancesMap * @param array $expected * @return void * * @dataProvider getListDataProvider */ public function testGetList($storeId, $paymentMethodConfig, $methodInstancesMap, $expected) { $this->setUpGetList($paymentMethodConfig, $methodInstancesMap); $codes = array_map( function ($method) { return $method->getCode(); }, $this->paymentMethodList->getList($storeId) ); $this->assertEquals($expected, $codes); } /** * Data provider for getList. * * @return array */ public function getListDataProvider() { return [ [ 1, ['method_code_1' => [], 'method_code_2' => []], [ ['method_code_1', $this->mockPaymentMethodInstance(1, 10, 'method_code_1', 'title', true)], ['method_code_2', $this->mockPaymentMethodInstance(1, 5, 'method_code_2', 'title', true)] ], ['method_code_2', 'method_code_1'] ] ]; } /** * Test getActiveList. * * @param int $storeId * @param array $paymentMethodConfig * @param array $methodInstancesMap * @param array $expected * @return void * * @dataProvider getActiveListDataProvider */ public function testGetActiveList($storeId, $paymentMethodConfig, $methodInstancesMap, $expected) { $this->setUpGetList($paymentMethodConfig, $methodInstancesMap); $codes = array_map( function ($method) { return $method->getCode(); }, $this->paymentMethodList->getActiveList($storeId) ); $this->assertEquals($expected, $codes); } /** * Data provider for getActiveList. * * @return array */ public function getActiveListDataProvider() { return [ [ 1, ['method_code_1' => [], 'method_code_2' => []], [ ['method_code_1', $this->mockPaymentMethodInstance(1, 10, 'method_code_1', 'title', false)], ['method_code_2', $this->mockPaymentMethodInstance(1, 5, 'method_code_2', 'title', true)] ], ['method_code_2'] ] ]; } /** * Mock payment method instance. * * @param int $storeId * @param int $sortOrder * @param string $code * @param string $title * @param bool $isActive * @return MockObject */ private function mockPaymentMethodInstance($storeId, $sortOrder, $code, $title, $isActive) { $paymentMethodInstance = $this->getMockBuilder(AbstractMethod::class) ->setMethods(['getCode', 'getTitle', 'isActive', 'getConfigData']) ->disableOriginalConstructor() ->getMockForAbstractClass(); $paymentMethodInstance->expects($this->any()) ->method('getConfigData') ->willReturnMap([ ['sort_order', $storeId, $sortOrder] ]); $paymentMethodInstance->expects($this->any()) ->method('getCode') ->willReturn($code); $paymentMethodInstance->expects($this->any()) ->method('getTitle') ->willReturn($title); $paymentMethodInstance->expects($this->any()) ->method('isActive') ->willReturn($isActive); return $paymentMethodInstance; } }