Update to Drupal 8.1.0. For more information, see https://www.drupal.org/drupal-8.1.0-release-notes
This commit is contained in:
parent
b11a755ba8
commit
c0a0d5a94c
6920 changed files with 64395 additions and 57312 deletions
99
core/modules/options/tests/src/Kernel/OptionsFieldTest.php
Normal file
99
core/modules/options/tests/src/Kernel/OptionsFieldTest.php
Normal file
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel;
|
||||
|
||||
use Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException;
|
||||
use Drupal\entity_test\Entity\EntityTest;
|
||||
use Drupal\field\Entity\FieldConfig;
|
||||
use Drupal\field\Entity\FieldStorageConfig;
|
||||
|
||||
/**
|
||||
* Tests for the 'Options' field types.
|
||||
*
|
||||
* @group options
|
||||
*/
|
||||
class OptionsFieldTest extends OptionsFieldUnitTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('options');
|
||||
|
||||
/**
|
||||
* Test that allowed values can be updated.
|
||||
*/
|
||||
function testUpdateAllowedValues() {
|
||||
// All three options appear.
|
||||
$entity = EntityTest::create();
|
||||
$form = \Drupal::service('entity.form_builder')->getForm($entity);
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][1]), 'Option 1 exists');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][2]), 'Option 2 exists');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][3]), 'Option 3 exists');
|
||||
|
||||
// Use one of the values in an actual entity, and check that this value
|
||||
// cannot be removed from the list.
|
||||
$entity = EntityTest::create();
|
||||
$entity->{$this->fieldName}->value = 1;
|
||||
$entity->save();
|
||||
$this->fieldStorage->setSetting('allowed_values', [2 => 'Two']);
|
||||
try {
|
||||
$this->fieldStorage->save();
|
||||
$this->fail(t('Cannot update a list field storage to not include keys with existing data.'));
|
||||
}
|
||||
catch (FieldStorageDefinitionUpdateForbiddenException $e) {
|
||||
$this->pass(t('Cannot update a list field storage to not include keys with existing data.'));
|
||||
}
|
||||
// Empty the value, so that we can actually remove the option.
|
||||
unset($entity->{$this->fieldName});
|
||||
$entity->save();
|
||||
|
||||
// Removed options do not appear.
|
||||
$this->fieldStorage->setSetting('allowed_values', [2 => 'Two']);
|
||||
$this->fieldStorage->save();
|
||||
$entity = EntityTest::create();
|
||||
$form = \Drupal::service('entity.form_builder')->getForm($entity);
|
||||
$this->assertTrue(empty($form[$this->fieldName]['widget'][1]), 'Option 1 does not exist');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][2]), 'Option 2 exists');
|
||||
$this->assertTrue(empty($form[$this->fieldName]['widget'][3]), 'Option 3 does not exist');
|
||||
|
||||
// Completely new options appear.
|
||||
$this->fieldStorage->setSetting('allowed_values', [10 => 'Update', 20 => 'Twenty']);
|
||||
$this->fieldStorage->save();
|
||||
// The entity holds an outdated field object with the old allowed values
|
||||
// setting, so we need to reinitialize the entity object.
|
||||
$entity = EntityTest::create();
|
||||
$form = \Drupal::service('entity.form_builder')->getForm($entity);
|
||||
$this->assertTrue(empty($form[$this->fieldName]['widget'][1]), 'Option 1 does not exist');
|
||||
$this->assertTrue(empty($form[$this->fieldName]['widget'][2]), 'Option 2 does not exist');
|
||||
$this->assertTrue(empty($form[$this->fieldName]['widget'][3]), 'Option 3 does not exist');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][10]), 'Option 10 exists');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][20]), 'Option 20 exists');
|
||||
|
||||
// Options are reset when a new field with the same name is created.
|
||||
$this->fieldStorage->delete();
|
||||
FieldStorageConfig::create($this->fieldStorageDefinition)->save();
|
||||
FieldConfig::create([
|
||||
'field_name' => $this->fieldName,
|
||||
'entity_type' => 'entity_test',
|
||||
'bundle' => 'entity_test',
|
||||
'required' => TRUE,
|
||||
])->save();
|
||||
entity_get_form_display('entity_test', 'entity_test', 'default')
|
||||
->setComponent($this->fieldName, array(
|
||||
'type' => 'options_buttons',
|
||||
))
|
||||
->save();
|
||||
$entity = EntityTest::create();
|
||||
$form = \Drupal::service('entity.form_builder')->getForm($entity);
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][1]), 'Option 1 exists');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][2]), 'Option 2 exists');
|
||||
$this->assertTrue(!empty($form[$this->fieldName]['widget'][3]), 'Option 3 exists');
|
||||
|
||||
// Test the generateSampleValue() method.
|
||||
$entity = EntityTest::create();
|
||||
$entity->{$this->fieldName}->generateSampleItems();
|
||||
$this->entityValidateAndSave($entity);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel;
|
||||
|
||||
use Drupal\field\Entity\FieldConfig;
|
||||
use Drupal\Tests\field\Kernel\FieldKernelTestBase;
|
||||
use Drupal\field\Entity\FieldStorageConfig;
|
||||
|
||||
/**
|
||||
* Base class for Options module integration tests.
|
||||
*/
|
||||
abstract class OptionsFieldUnitTestBase extends FieldKernelTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('options');
|
||||
|
||||
/**
|
||||
* The field name used in the test.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $fieldName = 'test_options';
|
||||
|
||||
/**
|
||||
* The field storage definition used to created the field storage.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fieldStorageDefinition;
|
||||
|
||||
/**
|
||||
* The list field storage used in the test.
|
||||
*
|
||||
* @var \Drupal\field\Entity\FieldStorageConfig
|
||||
*/
|
||||
protected $fieldStorage;
|
||||
|
||||
/**
|
||||
* The list field used in the test.
|
||||
*
|
||||
* @var \Drupal\field\Entity\FieldConfig
|
||||
*/
|
||||
protected $field;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->container->get('router.builder')->rebuild();
|
||||
|
||||
$this->fieldStorageDefinition = array(
|
||||
'field_name' => $this->fieldName,
|
||||
'entity_type' => 'entity_test',
|
||||
'type' => 'list_integer',
|
||||
'cardinality' => 1,
|
||||
'settings' => array(
|
||||
'allowed_values' => array(1 => 'One', 2 => 'Two', 3 => 'Three'),
|
||||
),
|
||||
);
|
||||
$this->fieldStorage = FieldStorageConfig::create($this->fieldStorageDefinition);
|
||||
$this->fieldStorage->save();
|
||||
|
||||
$this->field = FieldConfig::create([
|
||||
'field_storage' => $this->fieldStorage,
|
||||
'bundle' => 'entity_test',
|
||||
]);
|
||||
$this->field->save();
|
||||
|
||||
entity_get_form_display('entity_test', 'entity_test', 'default')
|
||||
->setComponent($this->fieldName, array(
|
||||
'type' => 'options_buttons',
|
||||
))
|
||||
->save();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel;
|
||||
|
||||
use Drupal\entity_test\Entity\EntityTest;
|
||||
|
||||
/**
|
||||
* Tests the Options field type formatters.
|
||||
*
|
||||
* @group options
|
||||
* @see \Drupal\options\Plugin\Field\FieldFormatter\OptionsDefaultFormatter
|
||||
* @see \Drupal\options\Plugin\Field\FieldFormatter\OptionsKeyFormatter
|
||||
*/
|
||||
class OptionsFormattersTest extends OptionsFieldUnitTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the formatters.
|
||||
*/
|
||||
public function testFormatter() {
|
||||
$entity = EntityTest::create();
|
||||
$entity->{$this->fieldName}->value = 1;
|
||||
|
||||
$items = $entity->get($this->fieldName);
|
||||
|
||||
$build = $items->view();
|
||||
$this->assertEqual($build['#formatter'], 'list_default', 'Ensure to fall back to the default formatter.');
|
||||
$this->assertEqual($build[0]['#markup'], 'One');
|
||||
|
||||
$build = $items->view(array('type' => 'list_key'));
|
||||
$this->assertEqual($build['#formatter'], 'list_key', 'The chosen formatter is used.');
|
||||
$this->assertEqual((string) $build[0]['#markup'], 1);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel\Views;
|
||||
|
||||
use Drupal\field\Entity\FieldStorageConfig;
|
||||
use Drupal\field\Entity\FieldConfig;
|
||||
use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
* Tests file views data.
|
||||
*
|
||||
* @group file
|
||||
*/
|
||||
class FileViewsDataTest extends ViewsKernelTestBase {
|
||||
|
||||
/**
|
||||
* Modules to install.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('file', 'views', 'entity_test', 'user', 'field');
|
||||
|
||||
/**
|
||||
* Tests views data generated for file field relationship.
|
||||
*
|
||||
* @see file_field_views_data()
|
||||
* @see file_field_views_data_views_data_alter()
|
||||
*/
|
||||
public function testRelationshipViewsData() {
|
||||
// Create file field to entity_test.
|
||||
FieldStorageConfig::create(array(
|
||||
'entity_type' => 'entity_test',
|
||||
'field_name' => 'field_base_file',
|
||||
'type' => 'file',
|
||||
))->save();
|
||||
FieldConfig::create(array(
|
||||
'entity_type' => 'entity_test',
|
||||
'field_name' => 'field_base_file',
|
||||
'bundle' => 'entity_test',
|
||||
))->save();
|
||||
// Check the generated views data.
|
||||
$views_data = Views::viewsData()->get('entity_test__field_base_file');
|
||||
$relationship = $views_data['field_base_file_target_id']['relationship'];
|
||||
$this->assertEqual($relationship['id'], 'standard');
|
||||
$this->assertEqual($relationship['base'], 'file_managed');
|
||||
$this->assertEqual($relationship['base field'], 'fid');
|
||||
$this->assertEqual($relationship['entity type'], 'file');
|
||||
// Check the backwards reference.
|
||||
$views_data = Views::viewsData()->get('file_managed');
|
||||
$relationship = $views_data['reverse_field_base_file_entity_test']['relationship'];
|
||||
$this->assertEqual($relationship['id'], 'entity_reverse');
|
||||
$this->assertEqual($relationship['base'], 'entity_test');
|
||||
$this->assertEqual($relationship['base field'], 'id');
|
||||
$this->assertEqual($relationship['field table'], 'entity_test__field_base_file');
|
||||
$this->assertEqual($relationship['field field'], 'field_base_file_target_id');
|
||||
$this->assertEqual($relationship['field_name'], 'field_base_file');
|
||||
$this->assertEqual($relationship['entity_type'], 'entity_test');
|
||||
$this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]);
|
||||
|
||||
// Create file field to entity_test_mul.
|
||||
FieldStorageConfig::create(array(
|
||||
'entity_type' => 'entity_test_mul',
|
||||
'field_name' => 'field_data_file',
|
||||
'type' => 'file',
|
||||
))->save();
|
||||
FieldConfig::create(array(
|
||||
'entity_type' => 'entity_test_mul',
|
||||
'field_name' => 'field_data_file',
|
||||
'bundle' => 'entity_test_mul',
|
||||
))->save();
|
||||
// Check the generated views data.
|
||||
$views_data = Views::viewsData()->get('entity_test_mul__field_data_file');
|
||||
$relationship = $views_data['field_data_file_target_id']['relationship'];
|
||||
$this->assertEqual($relationship['id'], 'standard');
|
||||
$this->assertEqual($relationship['base'], 'file_managed');
|
||||
$this->assertEqual($relationship['base field'], 'fid');
|
||||
$this->assertEqual($relationship['entity type'], 'file');
|
||||
// Check the backwards reference.
|
||||
$views_data = Views::viewsData()->get('file_managed');
|
||||
$relationship = $views_data['reverse_field_data_file_entity_test_mul']['relationship'];
|
||||
$this->assertEqual($relationship['id'], 'entity_reverse');
|
||||
$this->assertEqual($relationship['base'], 'entity_test_mul_property_data');
|
||||
$this->assertEqual($relationship['base field'], 'id');
|
||||
$this->assertEqual($relationship['field table'], 'entity_test_mul__field_data_file');
|
||||
$this->assertEqual($relationship['field field'], 'field_data_file_target_id');
|
||||
$this->assertEqual($relationship['field_name'], 'field_data_file');
|
||||
$this->assertEqual($relationship['entity_type'], 'entity_test_mul');
|
||||
$this->assertEqual($relationship['join_extra'][0], ['field' => 'deleted', 'value' => 0, 'numeric' => TRUE]);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel\Views;
|
||||
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
* Tests options list argument for views.
|
||||
*
|
||||
* @see \Drupal\options\Plugin\views\argument\NumberListField.
|
||||
* @group views
|
||||
*/
|
||||
class OptionsListArgumentTest extends OptionsTestBase {
|
||||
|
||||
/**
|
||||
* Views used by this test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = ['test_options_list_argument_numeric', 'test_options_list_argument_string'];
|
||||
|
||||
/**
|
||||
* Tests the options field argument.
|
||||
*/
|
||||
public function testViewsTestOptionsListArgument() {
|
||||
$view = Views::getView('test_options_list_argument_numeric');
|
||||
$this->executeView($view, [1]);
|
||||
|
||||
$resultset = [
|
||||
['nid' => $this->nodes[0]->nid->value],
|
||||
['nid' => $this->nodes[1]->nid->value],
|
||||
];
|
||||
|
||||
$column_map = ['nid' => 'nid'];
|
||||
$this->assertIdenticalResultset($view, $resultset, $column_map);
|
||||
|
||||
$view = Views::getView('test_options_list_argument_string');
|
||||
$this->executeView($view, ['man', 'woman']);
|
||||
|
||||
$resultset = [
|
||||
['nid' => $this->nodes[0]->nid->value],
|
||||
['nid' => $this->nodes[1]->nid->value],
|
||||
];
|
||||
|
||||
$column_map = ['nid' => 'nid'];
|
||||
$this->assertIdenticalResultset($view, $resultset, $column_map);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel\Views;
|
||||
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
* Tests options list filter for views.
|
||||
*
|
||||
* @see \Drupal\field\Plugin\views\filter\ListField.
|
||||
* @group views
|
||||
*/
|
||||
class OptionsListFilterTest extends OptionsTestBase {
|
||||
|
||||
/**
|
||||
* Views used by this test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = ['test_options_list_filter'];
|
||||
|
||||
/**
|
||||
* Tests options list field filter.
|
||||
*/
|
||||
public function testViewsTestOptionsListFilter() {
|
||||
$view = Views::getView('test_options_list_filter');
|
||||
$this->executeView($view);
|
||||
|
||||
$resultset = [
|
||||
['nid' => $this->nodes[0]->nid->value],
|
||||
['nid' => $this->nodes[1]->nid->value],
|
||||
];
|
||||
|
||||
$column_map = ['nid' => 'nid'];
|
||||
$this->assertIdenticalResultset($view, $resultset, $column_map);
|
||||
}
|
||||
|
||||
}
|
120
core/modules/options/tests/src/Kernel/Views/OptionsTestBase.php
Normal file
120
core/modules/options/tests/src/Kernel/Views/OptionsTestBase.php
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel\Views;
|
||||
|
||||
use Drupal\field\Entity\FieldConfig;
|
||||
use Drupal\field\Entity\FieldStorageConfig;
|
||||
use Drupal\node\Entity\Node;
|
||||
use Drupal\node\Entity\NodeType;
|
||||
use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
|
||||
use Drupal\views\Tests\ViewTestData;
|
||||
|
||||
/**
|
||||
* Base class for options views tests.
|
||||
*/
|
||||
abstract class OptionsTestBase extends ViewsKernelTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['options', 'options_test_views', 'node', 'user', 'field'];
|
||||
|
||||
/**
|
||||
* Stores the nodes used for the different tests.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $nodes = [];
|
||||
|
||||
/**
|
||||
* Stores the field values used for the different tests.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fieldValues = [];
|
||||
|
||||
/**
|
||||
* The used field names.
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
protected $fieldNames;
|
||||
|
||||
protected function setUp($import_test_views = TRUE) {
|
||||
parent::setUp();
|
||||
$this->mockStandardInstall();
|
||||
|
||||
ViewTestData::createTestViews(get_class($this), ['options_test_views']);
|
||||
|
||||
$settings = [];
|
||||
$settings['type'] = 'article';
|
||||
$settings['title'] = $this->randomString();
|
||||
$settings['field_test_list_string'][]['value'] = $this->fieldValues[0];
|
||||
$settings['field_test_list_integer'][]['value'] = 0;
|
||||
|
||||
$node = Node::create($settings);
|
||||
$node->save();
|
||||
|
||||
$this->nodes[] = $node;
|
||||
$node = $node->createDuplicate();
|
||||
$node->save();
|
||||
$this->nodes[] = $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a workaround for the inability to use the standard profile.
|
||||
*
|
||||
* @see https://www.drupal.org/node/1708692
|
||||
*/
|
||||
protected function mockStandardInstall() {
|
||||
$this->installEntitySchema('user');
|
||||
$this->installEntitySchema('node');
|
||||
|
||||
NodeType::create(
|
||||
['type' => 'article']
|
||||
)->save();
|
||||
$this->fieldValues = [
|
||||
$this->randomMachineName(),
|
||||
$this->randomMachineName(),
|
||||
];
|
||||
|
||||
$this->fieldNames = ['field_test_list_string', 'field_test_list_integer'];
|
||||
|
||||
// Create two field entities.
|
||||
FieldStorageConfig::create([
|
||||
'field_name' => $this->fieldNames[0],
|
||||
'entity_type' => 'node',
|
||||
'type' => 'list_string',
|
||||
'cardinality' => 1,
|
||||
'settings' => [
|
||||
'allowed_values' => [
|
||||
$this->fieldValues[0] => $this->fieldValues[0],
|
||||
$this->fieldValues[1] => $this->fieldValues[1],
|
||||
],
|
||||
],
|
||||
])->save();
|
||||
FieldStorageConfig::create([
|
||||
'field_name' => $this->fieldNames[1],
|
||||
'entity_type' => 'node',
|
||||
'type' => 'list_integer',
|
||||
'cardinality' => 1,
|
||||
'settings' => [
|
||||
'allowed_values' => [
|
||||
$this->fieldValues[0],
|
||||
$this->fieldValues[1],
|
||||
],
|
||||
],
|
||||
])->save();
|
||||
foreach ($this->fieldNames as $field_name) {
|
||||
FieldConfig::create([
|
||||
'field_name' => $field_name,
|
||||
'entity_type' => 'node',
|
||||
'label' => 'Test options list field',
|
||||
'bundle' => 'article',
|
||||
])->save();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\options\Kernel\Views;
|
||||
|
||||
use Drupal\field\Entity\FieldConfig;
|
||||
use Drupal\field\Entity\FieldStorageConfig;
|
||||
|
||||
/**
|
||||
* Test to ensure views data is properly created for the Options module.
|
||||
*
|
||||
* @group views
|
||||
*/
|
||||
class ViewsDataTest extends OptionsTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['options', 'options_test', 'entity_test', 'views'];
|
||||
|
||||
/**
|
||||
* The field storage.
|
||||
*
|
||||
* @var \Drupal\Core\Field\FieldStorageDefinitionInterface
|
||||
*/
|
||||
protected $fieldStorage;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp($import_test_views = TRUE) {
|
||||
parent::setUp();
|
||||
|
||||
$field_name = 'test_options';
|
||||
$this->fieldStorage = FieldStorageConfig::create([
|
||||
'field_name' => $field_name,
|
||||
'entity_type' => 'entity_test',
|
||||
'type' => 'list_string',
|
||||
'cardinality' => 1,
|
||||
'settings' => [
|
||||
'allowed_values_function' => 'options_test_dynamic_values_callback',
|
||||
],
|
||||
]);
|
||||
$this->fieldStorage->save();
|
||||
|
||||
$this->field = FieldConfig::create([
|
||||
'field_name' => $field_name,
|
||||
'entity_type' => 'entity_test',
|
||||
'bundle' => 'entity_test',
|
||||
'required' => TRUE,
|
||||
])->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the option module's implementation of hook_field_views_data().
|
||||
*/
|
||||
public function testOptionsFieldViewsData() {
|
||||
$field_data = \Drupal::service('views.views_data')->get('entity_test__test_options');
|
||||
|
||||
// Check that the options module has properly overridden default views data.
|
||||
$test_options_field = $field_data['test_options_value'];
|
||||
$this->assertEqual($test_options_field['argument']['id'], 'string_list_field', 'Argument handler is properly set for fields with allowed value callbacks.');
|
||||
$this->assertEqual($test_options_field['filter']['id'], 'list_field', 'Filter handler is properly set for fields with allowed value callbacks.');
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue