public function PluginBaseUnitTest::testSetOptionDefault

Tests the setOptionDefault method.

See also

\Drupal\views\Plugin\views\PluginBase::setOptionDefaults.

File

drupal/core/modules/views/lib/Drupal/views/Tests/PluginBaseUnitTest.php, line 187
Contains \Drupal\views\Tests\PluginBaseUnitTest.

Class

PluginBaseUnitTest
Tests code of the views plugin base class.

Namespace

Drupal\views\Tests

Code

public function testSetOptionDefault() {
  $plugin = $this
    ->getTestPlugin();
  $test_parameters = array();

  // No definition mustn't change anything on the storage.
  $test_parameters[] = array(
    'definition' => array(),
    'expected' => array(),
  );

  // Set a single definition, which should be picked up.
  $test_parameters[] = array(
    'definition' => array(
      'key' => array(
        'default' => 'value',
      ),
    ),
    'expected' => array(
      'key' => 'value',
    ),
  );

  // Set multiple keys, all should be picked up.
  $test_parameters[] = array(
    'definition' => array(
      'key' => array(
        'default' => 'value',
      ),
      'key2' => array(
        'default' => 'value2',
      ),
      'key3' => array(
        'default' => 'value3',
      ),
    ),
    'expected' => array(
      'key' => 'value',
      'key2' => 'value2',
      'key3' => 'value3',
    ),
  );

  // Setup a definition with multiple levels.
  $test_parameters[] = array(
    'definition' => array(
      'key' => array(
        'default' => 'value',
      ),
      'key2' => array(
        'contains' => array(
          'key2:1' => array(
            'default' => 'value2:1',
          ),
          'key2:2' => array(
            'default' => 'value2:2',
          ),
        ),
      ),
    ),
    'expected' => array(
      'key' => 'value',
      'key2' => array(
        'key2:1' => 'value2:1',
        'key2:2' => 'value2:2',
      ),
    ),
  );
  foreach ($test_parameters as $parameter) {
    $parameter += array(
      'storage' => array(),
    );
    $plugin
      ->testSetOptionDefaults($parameter['storage'], $parameter['definition']);
    $this
      ->assertEqual($parameter['storage'], $parameter['expected']);
  }
}