You are here

public function ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts in Drupal 10

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/Plugin/ContextHandlerTest.php \Drupal\Tests\Core\Plugin\ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts()
  2. 9 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
Contains \Drupal\Tests\Core\Plugin\ContextHandlerTest.

Class

ContextHandlerTest
@coversDefaultClass \Drupal\Core\Plugin\Context\ContextHandler @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;
}