function ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php \Drupal\Tests\Core\Plugin\ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts()
  2. 10 core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php \Drupal\Tests\Core\Plugin\ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts()
  3. 11.x core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php \Drupal\Tests\Core\Plugin\ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts()

Provides data for testFilterPluginDefinitionsByContexts().

File

core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php, line 207

Class

ContextHandlerTest
@coversDefaultClass <a href="/api/drupal/core%21lib%21Drupal%21Core%21Plugin%21Context%21ContextHandler.php/class/ContextHandler/8.9.x" title="Provides methods to handle sets of contexts." class="local">\Drupal\Core\Plugin\Context\ContextHandler</a> @group Plugin

Namespace

Drupal\Tests\Core\Plugin

Code

public function providerTestFilterPluginDefinitionsByContexts() {
    $data = [];
    $plugins = [];
    // No context and no plugins, no plugins available.
    $data[] = [
        FALSE,
        $plugins,
        [],
    ];
    $plugins = [
        'expected_array_plugin' => [],
        'expected_object_plugin' => new ContextAwarePluginDefinition(),
    ];
    // No context, all plugins available.
    $data[] = [
        FALSE,
        $plugins,
        $plugins,
    ];
    $plugins = [
        'expected_array_plugin' => [
            'context_definitions' => [],
        ],
        'expected_object_plugin' => new ContextAwarePluginDefinition(),
    ];
    // No context, all plugins available.
    $data[] = [
        FALSE,
        $plugins,
        $plugins,
    ];
    $plugins = [
        'expected_array_plugin' => [
            'context_definitions' => [
                'context1' => new ContextDefinition('string'),
            ],
        ],
        'expected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context1', new ContextDefinition('string')),
    ];
    // Missing context, no plugins available.
    $data[] = [
        FALSE,
        $plugins,
        [],
    ];
    // Satisfied context, all plugins available.
    $data[] = [
        TRUE,
        $plugins,
        $plugins,
    ];
    $mismatched_context_definition = (new ContextDefinition('expected_data_type'))->setConstraints([
        'mismatched_constraint_name' => 'mismatched_constraint_value',
    ]);
    $plugins = [
        'expected_array_plugin' => [
            'context_definitions' => [
                'context1' => $mismatched_context_definition,
            ],
        ],
        'expected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context1', $mismatched_context_definition),
    ];
    // Mismatched constraints, no plugins available.
    $data[] = [
        TRUE,
        $plugins,
        [],
    ];
    $optional_mismatched_context_definition = clone $mismatched_context_definition;
    $optional_mismatched_context_definition->setRequired(FALSE);
    $plugins = [
        'expected_array_plugin' => [
            'context_definitions' => [
                'context1' => $optional_mismatched_context_definition,
            ],
        ],
        'expected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context1', $optional_mismatched_context_definition),
    ];
    // Optional mismatched constraint, all plugins available.
    $data[] = [
        FALSE,
        $plugins,
        $plugins,
    ];
    $expected_context_definition = (new ContextDefinition('string'))->setConstraints([
        'Blank' => [],
    ]);
    $plugins = [
        'expected_array_plugin' => [
            'context_definitions' => [
                'context1' => $expected_context_definition,
            ],
        ],
        'expected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context1', $expected_context_definition),
    ];
    // Satisfied context with constraint, all plugins available.
    $data[] = [
        TRUE,
        $plugins,
        $plugins,
    ];
    $optional_expected_context_definition = clone $expected_context_definition;
    $optional_expected_context_definition->setRequired(FALSE);
    $plugins = [
        'expected_array_plugin' => [
            'context_definitions' => [
                'context1' => $optional_expected_context_definition,
            ],
        ],
        'expected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context1', $optional_expected_context_definition),
    ];
    // Optional unsatisfied context, all plugins available.
    $data[] = [
        FALSE,
        $plugins,
        $plugins,
    ];
    $unexpected_context_definition = (new ContextDefinition('unexpected_data_type'))->setConstraints([
        'mismatched_constraint_name' => 'mismatched_constraint_value',
    ]);
    $plugins = [
        'unexpected_array_plugin' => [
            'context_definitions' => [
                'context1' => $unexpected_context_definition,
            ],
        ],
        'expected_array_plugin' => [
            'context_definitions' => [
                'context2' => new ContextDefinition('string'),
            ],
        ],
        'unexpected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context1', $unexpected_context_definition),
        'expected_object_plugin' => (new ContextAwarePluginDefinition())->addContextDefinition('context2', new ContextDefinition('string')),
    ];
    // Context only satisfies two plugins.
    $data[] = [
        TRUE,
        $plugins,
        [
            'expected_array_plugin' => $plugins['expected_array_plugin'],
            'expected_object_plugin' => $plugins['expected_object_plugin'],
        ],
    ];
    return $data;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.