1 field_views.test | FieldViewsDataTest::testViewsData() |
Unit testing the views data structure.
We check data structure for both node and node revision tables.
File
- core/
modules/ field/ tests/ field_views.test, line 180 - Tests the Views integration with Field API.
Class
- FieldViewsDataTest
- Test the produced views_data.
Code
function testViewsData() {
$data = views_fetch_data();
// Check the table and the joins of the first field.
// Attached to node only.
$field = $this->fields[0];
$current_table = _field_sql_storage_tablename($field);
$revision_table = _field_sql_storage_revision_tablename($field);
$this->assertTrue(isset($data[$current_table]));
$this->assertTrue(isset($data[$revision_table]));
// The node field should join against node.
$this->assertTrue(isset($data[$current_table]['table']['join']['node']));
$this->assertTrue(isset($data[$revision_table]['table']['join']['node_revision']));
$expected_join = array(
'left_field' => 'nid',
'field' => 'entity_id',
'extra' => array(
array('field' => 'entity_type', 'value' => 'node'),
array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
),
);
$this->assertEqual($expected_join, $data[$current_table]['table']['join']['node']);
$expected_join = array(
'left_field' => 'vid',
'field' => 'revision_id',
'extra' => array(
array('field' => 'entity_type', 'value' => 'node'),
array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
),
);
$this->assertEqual($expected_join, $data[$revision_table]['table']['join']['node_revision']);
// Check the table and the joins of the second field.
// Attached to both node and user.
$field_2 = $this->fields[2];
$current_table_2 = _field_sql_storage_tablename($field_2);
$revision_table_2 = _field_sql_storage_revision_tablename($field_2);
$this->assertTrue(isset($data[$current_table_2]));
$this->assertTrue(isset($data[$revision_table_2]));
// The second field should join against both node and users.
$this->assertTrue(isset($data[$current_table_2]['table']['join']['node']));
$this->assertTrue(isset($data[$revision_table_2]['table']['join']['node_revision']));
$this->assertTrue(isset($data[$current_table_2]['table']['join']['users']));
$expected_join = array(
'left_field' => 'nid',
'field' => 'entity_id',
'extra' => array(
array('field' => 'entity_type', 'value' => 'node'),
array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
)
);
$this->assertEqual($expected_join, $data[$current_table_2]['table']['join']['node']);
$expected_join = array(
'left_field' => 'vid',
'field' => 'revision_id',
'extra' => array(
array('field' => 'entity_type', 'value' => 'node'),
array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
)
);
$this->assertEqual($expected_join, $data[$revision_table_2]['table']['join']['node_revision']);
$expected_join = array(
'left_field' => 'uid',
'field' => 'entity_id',
'extra' => array(
array('field' => 'entity_type', 'value' => 'user'),
array('field' => 'deleted', 'value' => 0, 'numeric' => TRUE),
)
);
$this->assertEqual($expected_join, $data[$current_table_2]['table']['join']['users']);
// Check the fields
// @todo
// Check the arguments
// @todo
// Check the sort criteria
// @todo
// Check the relationships
// @todo
}