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-theme/Test/Unit/Model/Theme/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-theme/Test/Unit/Model/Theme/SingleFileTest.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\Theme\Test\Unit\Model\Theme;

use Magento\Framework\View\Design\Theme\Customization\FileInterface;
use Magento\Framework\View\Design\Theme\CustomizationInterface;
use Magento\Framework\View\Design\ThemeInterface;
use Magento\Theme\Model\Theme\SingleFile;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

class SingleFileTest extends TestCase
{
    /**
     * @var SingleFile
     */
    protected $object;

    /**
     * @var FileInterface|MockObject
     */
    protected $file;

    /**
     * Initialize testable object
     */
    protected function setUp(): void
    {
        $this->file = $this->getMockBuilder(FileInterface::class)
            ->getMock();

        $this->object = new SingleFile($this->file);
    }

    /**
     * cover update method
     */
    public function testUpdate()
    {
        $fileContent = 'file content';
        $customFiles = [];
        $fileType = 'png';
        $customCss = $this->getMockBuilder(\Magento\Framework\View\Design\Theme\FileInterface::class)
            ->disableOriginalConstructor()
            ->setMethods(
                [
                    'delete',
                    'save',
                    'getContent',
                    'getFileInfo',
                    'getFullPath',
                    'getFileName',
                    'setFileName',
                    'getTheme',
                    'setTheme',
                    'getCustomizationService',
                    'setCustomizationService',
                    'setData',
                    'getType',
                    'prepareFile',
                ]
            )
            ->getMock();
        $theme = $this->getMockBuilder(ThemeInterface::class)
            ->setMethods(
                [
                    'getArea',
                    'getThemePath',
                    'getFullPath',
                    'getParentTheme',
                    'getCode',
                    'isPhysical',
                    'getInheritedThemes',
                    'getId',
                    'getCustomization',
                ]
            )
            ->getMockForAbstractClass();
        $customization = $this->getMockBuilder(CustomizationInterface::class)
            ->getMock();

        $customCss->expects($this->once())
            ->method('setData')
            ->with('content', $fileContent);
        $customCss->expects($this->once())
            ->method('setTheme')
            ->with($theme);
        $customCss->expects($this->once())
            ->method('save');
        $this->file->expects($this->once())
            ->method('create')
            ->willReturn($customCss);
        $this->file->expects($this->once())
            ->method('getType')
            ->willReturn($fileType);
        $customization->expects($this->once())
            ->method('getFilesByType')
            ->with($fileType)
            ->willReturn($customFiles);
        $theme->expects($this->once())
            ->method('getCustomization')
            ->willReturn($customization);

        /** @var ThemeInterface $theme */
        $this->assertInstanceOf(
            \Magento\Framework\View\Design\Theme\FileInterface::class,
            $this->object->update($theme, $fileContent)
        );
    }

    /**
     * cover update method when fileContent is empty
     */
    public function testUpdateWhenFileDelete()
    {
        $customCss = $this->getMockBuilder(\Magento\Framework\View\Design\Theme\FileInterface::class)
            ->disableOriginalConstructor()
            ->setMethods(
                [
                    'delete',
                    'save',
                    'getContent',
                    'getFileInfo',
                    'getFullPath',
                    'getFileName',
                    'setFileName',
                    'getTheme',
                    'setTheme',
                    'getCustomizationService',
                    'setCustomizationService',
                    'setData',
                    'getType',
                    'prepareFile',
                ]
            )
            ->getMock();
        $fileContent = '';
        $customFiles = [$customCss];
        $fileType = 'png';

        $theme = $this->getMockBuilder(ThemeInterface::class)
            ->setMethods(
                [
                    'getArea',
                    'getThemePath',
                    'getFullPath',
                    'getParentTheme',
                    'getCode',
                    'isPhysical',
                    'getInheritedThemes',
                    'getId',
                    'getCustomization',
                ]
            )
            ->getMockForAbstractClass();
        $customization = $this->getMockBuilder(CustomizationInterface::class)
            ->getMock();

        $customCss->expects($this->once())
            ->method('delete');
        $this->file->expects($this->once())
            ->method('getType')
            ->willReturn($fileType);
        $customization->expects($this->once())
            ->method('getFilesByType')
            ->with($fileType)
            ->willReturn($customFiles);
        $theme->expects($this->once())
            ->method('getCustomization')
            ->willReturn($customization);

        /** @var ThemeInterface $theme */
        $this->assertInstanceOf(
            \Magento\Framework\View\Design\Theme\FileInterface::class,
            $this->object->update($theme, $fileContent)
        );
    }
}

Spamworldpro Mini