![]() 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-checkout/Test/Unit/Block/Cart/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Checkout\Test\Unit\Block\Cart; use Magento\Checkout\Block\Cart\Shipping; use Magento\Checkout\Block\Checkout\LayoutProcessorInterface; use Magento\Checkout\Model\CompositeConfigProvider; use Magento\Checkout\Model\Session as CheckoutSession; use Magento\Customer\Model\Session as CustomerSession; use Magento\Framework\Serialize\Serializer\Json; use Magento\Framework\Serialize\Serializer\JsonHexTag; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Framework\View\Element\Template\Context; use Magento\Store\Model\Store; use Magento\Store\Model\StoreManagerInterface; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Unit Test for Magento\Checkout\Block\Cart\Shipping */ class ShippingTest extends TestCase { /** * Stub Preinitialized Componets */ private const STUB_PREINITIALIZED_COMPONENTS = [ 'components' => [ 'firstComponent' => ['param' => 'value'] ] ]; /** * Stub Base URL */ private const STUB_BASE_URL = 'baseurl'; /** * @var Shipping */ protected $block; /** * @var Context|MockObject */ protected $contextMock; /** * @var CustomerSession|MockObject */ protected $customerSessionMock; /** * @var CheckoutSession|MockObject */ protected $checkoutSessionMock; /** * @var CompositeConfigProvider|MockObject */ protected $configProviderMock; /** * @var LayoutProcessorInterface|MockObject */ protected $layoutProcessorMock; /** * @var StoreManagerInterface|MockObject */ protected $storeManagerInterfaceMock; /** * @var array */ protected $layout; /** * @var Json|MockObject */ private $serializerMock; /** * @var JsonHexTag|MockObject */ private $jsonHexTagSerializerMock; /** * @inheritDoc */ protected function setUp(): void { $this->contextMock = $this->createMock(Context::class); $this->customerSessionMock = $this->createMock(CustomerSession::class); $this->checkoutSessionMock = $this->createMock(CheckoutSession::class); $this->configProviderMock = $this->createMock(CompositeConfigProvider::class); $this->layoutProcessorMock = $this->getMockForAbstractClass(LayoutProcessorInterface::class); $this->serializerMock = $this->createMock(JsonHexTag::class); $this->jsonHexTagSerializerMock = $this->createMock(JsonHexTag::class); $this->storeManagerInterfaceMock = $this->getMockForAbstractClass(StoreManagerInterface::class); $this->layout = self::STUB_PREINITIALIZED_COMPONENTS; $objectManager = new ObjectManager($this); $this->block = $objectManager->getObject( Shipping::class, [ 'configProvider' => $this->configProviderMock, 'layoutProcessors' => [$this->layoutProcessorMock], 'jsLayout' => $this->layout, 'serializer' => $this->serializerMock, 'jsonHexTagSerializer' => $this->jsonHexTagSerializerMock, 'storeManager' => $this->storeManagerInterfaceMock ] ); } /** * Test for getCheckoutConfig * * @return void */ public function testGetCheckoutConfig(): void { $config = ['param' => 'value']; $this->configProviderMock->expects($this->once()) ->method('getConfig') ->willReturn($config); $this->assertEquals($config, $this->block->getCheckoutConfig()); } /** * Test for getJsLayout() * * @return void * @dataProvider getJsLayoutDataProvider */ public function testGetJsLayout(array $layoutProcessed, string $jsonLayoutProcessed): void { $this->layoutProcessorMock->expects($this->once()) ->method('process') ->with($this->layout) ->willReturn($layoutProcessed); $this->jsonHexTagSerializerMock->expects($this->once()) ->method('serialize') ->willReturn($jsonLayoutProcessed); $this->assertEquals($jsonLayoutProcessed, $this->block->getJsLayout()); } /** * Data for getJsLayout() * * @return array */ public function getJsLayoutDataProvider(): array { $layoutProcessed = $this->layout; $layoutProcessed['components']['secondComponent'] = ['param' => 'value']; return [ [ $layoutProcessed, '{"components":{"firstComponent":{"param":"value"},"secondComponent":{"param":"value"}}}' ] ]; } /** * Test for getBaseUrl() * * @return void */ public function testGetBaseUrl(): void { $baseUrl = self::STUB_BASE_URL; $storeMock = $this->createPartialMock(Store::class, ['getBaseUrl']); $storeMock->expects($this->once()) ->method('getBaseUrl') ->willReturn($baseUrl); $this->storeManagerInterfaceMock->expects($this->once()) ->method('getStore') ->willReturn($storeMock); $this->assertEquals($baseUrl, $this->block->getBaseUrl()); } /** * Test for getSerializedCheckoutConfig() * * @return void * @dataProvider jsonEncodeDataProvider */ public function testGetSerializedCheckoutConfig(array $checkoutConfig, string $expectedJson): void { $this->configProviderMock->expects($this->once()) ->method('getConfig') ->willReturn($checkoutConfig); $this->jsonHexTagSerializerMock->expects($this->once()) ->method('serialize') ->willReturn($expectedJson); $this->assertEquals($expectedJson, $this->block->getSerializedCheckoutConfig()); } /** * Data for getSerializedCheckoutConfig() * * @return array */ public function jsonEncodeDataProvider(): array { return [ [ ['checkout', 'config'], '["checkout","config"]' ] ]; } }