You are here

public function ContextHandlerTest::providerTestFilterPluginDefinitionsByContexts in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 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 176
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 = array();
  $plugins = array();

  // No context and no plugins, no plugins available.
  $data[] = array(
    FALSE,
    $plugins,
    array(),
  );
  $plugins = array(
    'expected_plugin' => array(),
  );

  // No context, all plugins available.
  $data[] = array(
    FALSE,
    $plugins,
    $plugins,
  );
  $plugins = array(
    'expected_plugin' => array(
      'context' => array(),
    ),
  );

  // No context, all plugins available.
  $data[] = array(
    FALSE,
    $plugins,
    $plugins,
  );
  $plugins = array(
    'expected_plugin' => array(
      'context' => array(
        'context1' => new ContextDefinition('expected_data_type'),
      ),
    ),
  );

  // Missing context, no plugins available.
  $data[] = array(
    FALSE,
    $plugins,
    array(),
  );

  // Satisfied context, all plugins available.
  $data[] = array(
    TRUE,
    $plugins,
    $plugins,
  );
  $mismatched_context_definition = (new ContextDefinition('expected_data_type'))
    ->setConstraints(array(
    'mismatched_constraint_name' => 'mismatched_constraint_value',
  ));
  $plugins = array(
    'expected_plugin' => array(
      'context' => array(
        'context1' => $mismatched_context_definition,
      ),
    ),
  );

  // Mismatched constraints, no plugins available.
  $data[] = array(
    TRUE,
    $plugins,
    array(),
  );
  $optional_mismatched_context_definition = clone $mismatched_context_definition;
  $optional_mismatched_context_definition
    ->setRequired(FALSE);
  $plugins = array(
    'expected_plugin' => array(
      'context' => array(
        'context1' => $optional_mismatched_context_definition,
      ),
    ),
  );

  // Optional mismatched constraint, all plugins available.
  $data[] = array(
    FALSE,
    $plugins,
    $plugins,
  );
  $expected_context_definition = (new ContextDefinition('expected_data_type'))
    ->setConstraints(array(
    'expected_constraint_name' => 'expected_constraint_value',
  ));
  $plugins = array(
    'expected_plugin' => array(
      'context' => array(
        'context1' => $expected_context_definition,
      ),
    ),
  );

  // Satisfied context with constraint, all plugins available.
  $data[] = array(
    TRUE,
    $plugins,
    $plugins,
  );
  $optional_expected_context_definition = clone $expected_context_definition;
  $optional_expected_context_definition
    ->setRequired(FALSE);
  $plugins = array(
    'expected_plugin' => array(
      'context' => array(
        'context1' => $optional_expected_context_definition,
      ),
    ),
  );

  // Optional unsatisfied context, all plugins available.
  $data[] = array(
    FALSE,
    $plugins,
    $plugins,
  );
  $unexpected_context_definition = (new ContextDefinition('unexpected_data_type'))
    ->setConstraints(array(
    'mismatched_constraint_name' => 'mismatched_constraint_value',
  ));
  $plugins = array(
    'unexpected_plugin' => array(
      'context' => array(
        'context1' => $unexpected_context_definition,
      ),
    ),
    'expected_plugin' => array(
      'context' => array(
        'context2' => new ContextDefinition('expected_data_type'),
      ),
    ),
  );

  // Context only satisfies one plugin.
  $data[] = array(
    TRUE,
    $plugins,
    array(
      'expected_plugin' => $plugins['expected_plugin'],
    ),
  );
  return $data;
}