3 namespace Drupal\Tests\Driver;
6 * Tests the Drupal 7 field handlers.
8 class Drupal7FieldHandlerTest extends FieldHandlerAbstractTest {
11 * Tests the field handlers.
13 * @param string $class_name
14 * The name of the field handler class under test.
15 * @param object $entity
16 * An object representing an entity. Should contain a single property which
17 * represents a field containing a value.
18 * @param string $entity_type
19 * The entity type under test.
21 * An associative array with the following keys:
22 * - 'field_name': the field name that is used for the property on $entity.
23 * - 'columns': an optional array containing the column names of the field
25 * @param array $expected_values
26 * The values in the expected format after expansion.
28 * @dataProvider dataProvider
30 public function testFieldHandlers($class_name, $entity, $entity_type, array $field, array $expected_values) {
31 $handler = $this->getMockHandler($class_name, $entity, $entity_type, $field);
33 $field_name = $field['field_name'];
34 $expanded_values = $handler->expand($this->values($entity->$field_name));
35 $this->assertArraySubset($expected_values, $expanded_values);
42 * An array of test data.
44 public function dataProvider() {
46 // Test default text field provided as simple text.
49 (object) array('field_text' => 'Text'),
51 array('field_name' => 'field_text'),
52 array('en' => array(array('value' => 'Text'))),
55 // Test default text field provided as array.
58 (object) array('field_text' => array('Text')),
60 array('field_name' => 'field_text'),
61 array('en' => array(array('value' => 'Text'))),
64 // Test default field handler using custom field columns.
68 'field_addressfield' => array(
71 'locality' => 'Brussels',
72 'thoroughfare' => 'Grote Markt 1',
73 'postal_code' => '1000',
78 array('field_name' => 'field_addressfield'),
83 'locality' => 'Brussels',
84 'thoroughfare' => 'Grote Markt 1',
85 'postal_code' => '1000',
91 // Test single-value date field provided as simple text.
94 (object) array('field_date' => '2015-01-01 00:00:00'),
96 array('field_name' => 'field_date'),
97 array('en' => array(array('value' => '2015-01-01 00:00:00'))),
100 // Test single-value date field provided as an array.
103 (object) array('field_date' => array('2015-01-01 00:00:00')),
105 array('field_name' => 'field_date'),
106 array('en' => array(array('value' => '2015-01-01 00:00:00'))),
109 // Test double-value date field. Can only be provided as an array
110 // due to array type casting we perform in
111 // \Drupal\Driver\Fields\Drupal7\AbstractFieldHandler::__call()
115 'field_date' => array(
117 '2015-01-01 00:00:00',
118 '2015-01-02 00:00:00',
124 'field_name' => 'field_date',
125 'columns' => array('value' => '', 'value2' => ''),
130 'value' => '2015-01-01 00:00:00',
131 'value2' => '2015-01-02 00:00:00',
137 // Test list boolean field with blank 'On' and 'Off' values.
139 'ListBooleanHandler',
140 (object) array('field_list_boolean' => array(0)),
143 'field_name' => 'field_list_boolean',
145 'allowed_values' => array(