config_override-8.x-1.x-dev/tests/Unit/ModuleConfigOverridesTest.php

tests/Unit/ModuleConfigOverridesTest.php
<?php

namespace Drupal\config_override\Tests\Unit;

use Drupal\Component\FileCache\FileCacheFactory;
use Drupal\Component\Serialization\Yaml;
use Drupal\config_override\ModuleConfigOverrides;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Extension\Extension;
use Drupal\Core\Extension\ModuleHandlerInterface;
use org\bovigo\vfs\vfsStream;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;

/**
 * @coversDefaultClass \Drupal\config_override\ModuleConfigOverrides
 * @group config_override
 */
class ModuleConfigOverridesTest extends TestCase {
  use ProphecyTrait;

  /**
   * Tests the module config overrides.
   */
  public function testModuleOverrides() {
    $cache_backend = $this->prophesize(CacheBackendInterface::class);
    $module_handler = $this->prophesize(ModuleHandlerInterface::class);

    // Set file cache factory prefix to prevent the below exception.
    // InvalidArgumentException: Required prefix configuration is missing.
    FileCacheFactory::setPrefix('test');

    $module_info = <<<MODULE_INFO
name: Virtual module
type: module
description: 'Description.'
core_version_requirement: '*'
MODULE_INFO;

    vfsStream::setup('drupal');
    vfsStream::create([
      'modules' => [
        'module_a' => [
          'module_a.info.yml' => $module_info,
          'config' => [
            'override' => [
              'system.site.yml' => Yaml::encode([
                'name' => 'Hey jude',
              ]),
            ],
          ],
        ],
        'module_b' => [
          'module_b.info.yml' => $module_info,
          'config' => [
            'override' => [
              'system.site.yml' => Yaml::encode([
                'slogan' => 'Muh',
              ]),
            ],
          ],
        ],
      ],
    ]);

    $extension_a = new Extension('vfs://drupal', 'module', 'modules/module_a/module_a.info.yml');
    $extension_b = new Extension('vfs://drupal', 'module', 'modules/module_b/module_b.info.yml');

    $module_handler->getModuleList()->willReturn([
      'module_a' => $extension_a,
      'module_b' => $extension_b,
    ]);
    $module_overrides = new ModuleConfigOverrides('vfs://drupal', $module_handler->reveal(), $cache_backend->reveal());

    $expected = [
      'system.site' => [
        'name' => 'Hey jude',
        'slogan' => 'Muh',
      ],
    ];
    $result = $module_overrides->loadOverrides(['system.site']);

    $this->assertEquals($expected, $result);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc