View source
<?php
namespace Drupal\Tests\config_ignore\Unit;
use Drupal\config_ignore\Plugin\ConfigFilter\IgnoreFilter;
use Drupal\Core\Config\MemoryStorage;
use Drupal\Tests\UnitTestCase;
class PatternMatchingTest extends UnitTestCase {
public function testPatternMatching(array $patterns, array $test) {
$filter = new IgnoreFilter([
'ignored' => $patterns,
], 'config_ignore', [], new MemoryStorage());
$method = new \ReflectionMethod(IgnoreFilter::class, 'matchConfigName');
$method
->setAccessible(TRUE);
foreach ($test as $name => $expected) {
static::assertEquals($expected, $method
->invoke($filter, $name), $name);
}
if (!in_array(TRUE, $test, TRUE) || !in_array(FALSE, $test, TRUE)) {
$this
->markAsRisky();
}
}
public function patternProvider() {
return [
'system.site ignored' => [
[
'system.site',
],
[
'system.site' => TRUE,
'system.performance' => FALSE,
],
],
'system ignored' => [
[
'system.*',
],
[
'system.site' => TRUE,
'system.performance' => TRUE,
'node.site' => FALSE,
],
],
'site ignored' => [
[
'*.site',
],
[
'system.site' => TRUE,
'system.performance' => FALSE,
'other.site' => TRUE,
],
],
'node ignored' => [
[
'node.*',
],
[
'system.site' => FALSE,
'node.settings' => TRUE,
'node.settings.other' => TRUE,
],
],
'middle ignored' => [
[
'start.*.end',
],
[
'start.something' => FALSE,
'start.something.end' => TRUE,
'start.something.else.end' => TRUE,
'start.something.ending' => FALSE,
],
],
'enforced excluded' => [
[
'system.*',
'~system.site',
],
[
'system.site' => FALSE,
'system.performance' => TRUE,
],
],
'system sub-key ignored' => [
[
'system.*:foo',
],
[
'system.site' => TRUE,
'system.performance' => TRUE,
'node.foo' => FALSE,
],
],
];
}
public function testEverythingAndNothing() {
$method = new \ReflectionMethod(IgnoreFilter::class, 'matchConfigName');
$method
->setAccessible(TRUE);
$none = new IgnoreFilter([
'ignored' => [],
], 'config_ignore', [], new MemoryStorage());
$all = new IgnoreFilter([
'ignored' => [
'*',
],
], 'config_ignore', [], new MemoryStorage());
static::assertFalse($method
->invoke($none, $this
->randomMachineName()));
static::assertTrue($method
->invoke($all, $this
->randomMachineName()));
}
}