Your IP : 216.73.216.43


Current Path : /home/rtorresani/www/vendor/magento/module-search/Test/Unit/Setup/
Upload File :
Current File : //home/rtorresani/www/vendor/magento/module-search/Test/Unit/Setup/CompositeInstallConfigTest.php

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

namespace Magento\Search\Test\Unit\Setup;

use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\Search\Setup\CompositeInstallConfig;
use Magento\Search\Setup\InstallConfigInterface;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

class CompositeInstallConfigTest extends TestCase
{
    /**
     * @var CompositeInstallConfig
     */
    private $compositeInstallConfig;

    /**
     * @var InstallConfigInterface|MockObject
     */
    private $firstInstallConfigMock;

    /**
     * @var InstallConfigInterface|MockObject
     */
    private $secondInstallConfigMock;

    /**
     * @var ScopeConfigInterface|MockObject
     */
    private $scopeConfigMock;

    protected function setup(): void
    {
        $objectManager = new ObjectManager($this);
        $this->firstInstallConfigMock = $this->getMockForAbstractClass(InstallConfigInterface::class);
        $this->secondInstallConfigMock = $this->getMockForAbstractClass(InstallConfigInterface::class);
        $this->scopeConfigMock = $this->getMockForAbstractClass(ScopeConfigInterface::class);
        $this->compositeInstallConfig = $objectManager->getObject(
            CompositeInstallConfig::class,
            [
                'scopeConfig' => $this->scopeConfigMock,
                'installConfigList' => [
                    'first' => $this->firstInstallConfigMock,
                    'second' => $this->secondInstallConfigMock
                ]
            ]
        );
    }

    public function testConfigure()
    {
        $testInput = [
            'search-engine' => 'second',
            'test-option' => 'testValue'
        ];

        $this->firstInstallConfigMock->expects($this->never())->method('configure');
        $this->secondInstallConfigMock->expects($this->once())->method('configure')->with($testInput);

        $this->compositeInstallConfig->configure($testInput);
    }

    public function testConfigureEmptyInput()
    {
        $this->firstInstallConfigMock->expects($this->never())->method('configure');
        $this->secondInstallConfigMock->expects($this->never())->method('configure');

        $this->scopeConfigMock
            ->expects($this->once())
            ->method('getValue')
            ->with('catalog/search/engine')
            ->willReturn('second');

        $this->compositeInstallConfig->configure([]);
    }
}