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. 8.9.x core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php \Drupal\Tests\Core\Plugin\ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts()
  3. 10 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 194

Class

ContextHandlerTest
@coversDefaultClass \Drupal\Core\Plugin\Context\ContextHandler[[api-linebreak]] @group Plugin

Namespace

Drupal\Tests\Core\Plugin

Code

public static 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.