acquia_search-3.0.1/modules/acquia_search_defaults/tests/src/EventSubscriber/PossibleCores/LocalOverrideTest.php
modules/acquia_search_defaults/tests/src/EventSubscriber/PossibleCores/LocalOverrideTest.php
<?php
declare(strict_types=1);
namespace Drupal\Tests\acquia_search_defaults\Unit\EventSubscriber\PossibleCores;
use Drupal\acquia_connector\Subscription;
use Drupal\acquia_search\Event\AcquiaPossibleCoresEvent;
use Drupal\acquia_search\EventSubscriber\PossibleCores\LocalOverride;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Config\ImmutableConfig;
use Drupal\Core\Site\Settings;
use Drupal\Tests\acquia_search\Unit\AcquiaSearchTestCase;
/**
* @group acquia_search
* @coversDefaultClass \Drupal\acquia_search_defaults\EventSubscriber\PossibleCores\LocalOverride
*/
final class LocalOverrideTest extends AcquiaSearchTestCase {
public function testIsCalledIfProviderIsAcquiaCloud(): void {
$subscription = $this->createMock(Subscription::class);
$subscription->expects($this->never())
->method('getProvider');
$sut = new LocalOverride(
$subscription,
$this->createConfigFactoryMock('', '')
);
$sut->onGetPossibleCores(new AcquiaPossibleCoresEvent('foobar', []));
}
/**
* @dataProvider configData
*/
public function testOnGetPossibleCores(string $config_override_core, string $config_solr_override_core, string $settings_override_core, array $server_overrides, array $expected): void {
$subscription = $this->createMock(Subscription::class);
$subscription->expects($this->never())
->method('getProvider');
$subscription->expects($this->never())
->method('getSettings');
$settings = [
'acquia_search' => [],
];
if ($settings_override_core !== '') {
$settings['acquia_search']['override_search_core'] = $settings_override_core;
}
if ($server_overrides !== []) {
$settings['acquia_search']['server_overrides'] = $server_overrides;
}
new Settings($settings);
$sut = new LocalOverride(
$subscription,
$this->createConfigFactoryMock($config_override_core, $config_solr_override_core)
);
$event = new AcquiaPossibleCoresEvent('foobar', []);
$sut->onGetPossibleCores($event);
self::assertEquals($expected, $event->getPossibleCores());
self::assertEquals(TRUE, $event->isReadOnly());
}
public static function configData() {
yield 'config_override_core foo' => [
'foo',
'',
'',
[],
['foo'],
];
yield 'config_solr_override_core bar' => [
'',
'bar',
'',
[],
['bar'],
];
yield 'settings_override_core baz' => [
'',
'',
'baz',
[],
['baz'],
];
yield 'config_override_core foo settings_override_core baz' => [
'foo',
'',
'baz',
[],
['baz'],
];
yield 'config_solr_override_core bar settings_override_core baz' => [
'',
'bar',
'baz',
[],
['baz'],
];
yield 'server overrides' => [
'',
'',
'',
[
'foobar' => 'baz',
],
['baz'],
];
yield 'server_overrides not set' => [
'',
'',
'',
[
'bazBar' => 'baz',
],
[],
];
yield 'server_overrides precedence over settings_override_core' => [
'',
'',
'bar',
[
'foobar' => 'baz',
],
['baz'],
];
}
/**
* @testWith [true]
* [false]
*/
public function testWithOnlyReadOnly(bool $readonly): void {
$subscription = $this->createMock(Subscription::class);
$subscription->expects($this->never())
->method('getProvider');
$subscription->expects($this->never())
->method('getSettings');
new Settings([
'acquia_search' => [
'read_only' => $readonly,
],
]);
$sut = new LocalOverride(
$subscription,
$this->createConfigFactoryMock('', '')
);
$event = new AcquiaPossibleCoresEvent('foobar', []);
$sut->onGetPossibleCores($event);
self::assertEquals([], $event->getPossibleCores());
self::assertEquals($readonly, $event->isReadOnly());
}
private function createConfigFactoryMock(string $override_core, string $solr_override_core): ConfigFactoryInterface {
$search_settings = $this->createMock(ImmutableConfig::class);
$search_settings
->method('get')
->with('override_search_core')
->willReturn($override_core);
$search_solr_settings = $this->createMock(ImmutableConfig::class);
$search_solr_settings
->method('get')
->with('override_search_core')
->willReturn($solr_override_core);
$config_factory = $this->createMock(ConfigFactoryInterface::class);
$config_factory
->method('get')
->willReturnMap([
['acquia_search.settings', $search_settings],
['acquia_search_solr.settings', $search_solr_settings],
]);
return $config_factory;
}
}
