diff --git a/src/Tests/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php b/src/Tests/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php index fe0a315..efa9409 100644 --- a/src/Tests/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php +++ b/src/Tests/Views/DynamicEntityReferenceBaseFieldRelationshipTest.php @@ -50,11 +50,18 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewKernelTestBase protected $entities = array(); /** + * Counts how many test method has run. + * + * @var int + */ + public static $testRun = 0; + + /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); - + \Drupal::state()->set('dynamic_entity_reference_entity_test', static::$testRun++); $this->installEntitySchema('user'); $this->installEntitySchema('entity_test'); $this->installEntitySchema('entity_test_mul'); @@ -66,6 +73,8 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewKernelTestBase * Tests views der base field relationship with single referenced entities. */ public function testSingleBaseFieldRelationship() { + + ViewTestData::createTestViews(get_class($this), array('dynamic_entity_reference_entity_test')); // Create some test entities which link each other. $referenced_entity = EntityTest::create(); $referenced_entity->save(); @@ -202,17 +211,11 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewKernelTestBase /** * Tests views der base field relationship with multiple referenced entities. */ - public function ptestMultiBaseFieldRelationship() { - // Update definitions and schema. - $manager = \Drupal::entityDefinitionUpdateManager(); - $storage_definition = $manager->getFieldStorageDefinition('dynamic_references', 'entity_test'); - $storage_definition->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED); - $manager->updateFieldStorageDefinition($storage_definition); - $manager = \Drupal::entityDefinitionUpdateManager(); - $storage_definition = $manager->getFieldStorageDefinition('dynamic_references', 'entity_test_mul'); - $storage_definition->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED); - $manager->updateFieldStorageDefinition($storage_definition); + public function testMultiBaseFieldRelationship() { + $entity_manager = \Drupal::entityManager(); + $this->assertEqual($entity_manager->getBaseFieldDefinitions('entity_test')['dynamic_references']->getCardinality(), -1); + $this->assertEqual($entity_manager->getBaseFieldDefinitions('entity_test_mul')['dynamic_references']->getCardinality(), -1); // Create some test entities which link each other. $referenced_entity = EntityTest::create(); $referenced_entity->save(); @@ -234,12 +237,11 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewKernelTestBase $this->assertEqual($entity->dynamic_references[0]->entity->id(), $referenced_entity->id()); $this->assertEqual($entity->dynamic_references[1]->entity->id(), $referenced_entity_mul->id()); $this->entities[] = $entity; -/* + Views::viewsData()->clear(); // Check just the generated views data. - $views_data_entity_test = Views::viewsData()->get('entity_test_mul__dynamic_references'); - + $views_data_entity_test = Views::viewsData()->get('entity_test__dynamic_references'); // Check views data for test entity referenced from dynamic_references. $this->assertEqual($views_data_entity_test['entity_test__dynamic_references']['relationship']['id'], 'standard'); $this->assertEqual($views_data_entity_test['entity_test__dynamic_references']['relationship']['base'], 'entity_test'); @@ -248,9 +250,7 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewKernelTestBase $this->assertEqual($views_data_entity_test['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id'); $this->assertEqual($views_data_entity_test['entity_test__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type'); $this->assertEqual($views_data_entity_test['entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test'); - - // Check views data for test entity - data table referenced from - // dynamic_references. + // Check views data for test entity - data table referenced from dynamic_references. $this->assertEqual($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['id'], 'standard'); $this->assertEqual($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data'); $this->assertEqual($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul'); @@ -259,35 +259,83 @@ class DynamicEntityReferenceBaseFieldRelationshipTest extends ViewKernelTestBase $this->assertEqual($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type'); $this->assertEqual($views_data_entity_test['entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul'); - // Check the backwards reference for test entity using dynamic_references. + // Check the backwards reference for test entity using field_test. $views_data_entity_test = Views::viewsData()->get('entity_test'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['id'], 'entity_reverse'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'id'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['field table'], 'entity_test_mul__dynamic_references'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][1]['field'], 'deleted'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][1]['value'], 0); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][1]['numeric'], TRUE); - - // Check the backwards reference for test entity - data table using - // dynamic_references. + + // Check the backwards reference for test entity using dynamic_references. + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['id'], 'entity_reverse'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base'], 'entity_test'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['entity_type'], 'entity_test'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base field'], 'id'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field_name'], 'dynamic_references'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field table'], 'entity_test__dynamic_references'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test'); + + // Check the backwards reference for test entity using field_test. $views_data_entity_test = Views::viewsData()->get('entity_test_mul_property_data'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['id'], 'entity_reverse'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'id'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['field table'], 'entity_test_mul__dynamic_references'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test_mul'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][1]['field'], 'deleted'); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][1]['value'], 0); - $this->assertEqual($views_data_entity_test['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][1]['numeric'], TRUE); -*//* + + // Check the backwards reference for test entity - data table using dynamic_references. + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['id'], 'entity_reverse'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base'], 'entity_test'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['entity_type'], 'entity_test'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['base field'], 'id'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field_name'], 'dynamic_references'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field table'], 'entity_test__dynamic_references'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type'); + $this->assertEqual($views_data_entity_test['reverse__entity_test__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test_mul'); + + // Check just the generated views data. + $views_data_entity_test_mul = Views::viewsData()->get('entity_test_mul_property_data__dynamic_references'); + + // Check views data for test entity referenced from dynamic_references. + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['id'], 'standard'); + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['base'], 'entity_test'); + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['entity type'], 'entity_test'); + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['base field'], 'id'); + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id'); + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type'); + $this->assertEqual($views_data_entity_test_mul['entity_test__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test'); + // Check views data for test entity - data table referenced from dynamic_references. + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['id'], 'standard'); + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data'); + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['entity type'], 'entity_test_mul'); + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['base field'], 'id'); + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['relationship field'], 'dynamic_references_target_id'); + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['extra'][0]['left_field'], 'dynamic_references_target_type'); + $this->assertEqual($views_data_entity_test_mul['entity_test_mul__dynamic_references']['relationship']['extra'][0]['value'], 'entity_test_mul'); + + // Check the backwards reference for test entity using field_test. + $views_data_entity_test_mul = Views::viewsData()->get('entity_test'); + + // Check the backwards reference for test entity using dynamic_references. + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['id'], 'entity_reverse'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['entity_type'], 'entity_test_mul'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'id'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field_name'], 'dynamic_references'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field table'], 'entity_test_mul_property_data__dynamic_references'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test'); + + // Check the backwards reference for test entity using field_test. + $views_data_entity_test_mul = Views::viewsData()->get('entity_test_mul_property_data'); + + // Check the backwards reference for test entity - data table using dynamic_references. + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['id'], 'entity_reverse'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base'], 'entity_test_mul_property_data'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['entity_type'], 'entity_test_mul'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['base field'], 'id'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field_name'], 'dynamic_references'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field table'], 'entity_test_mul_property_data__dynamic_references'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['field field'], 'dynamic_references_target_id'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['field'], 'dynamic_references_target_type'); + $this->assertEqual($views_data_entity_test_mul['reverse__entity_test_mul__dynamic_references']['relationship']['join_extra'][0]['value'], 'entity_test_mul'); // Check an actual test view. - $view = Views::getView('test_dynamic_entity_reference_entity_test_mul_view'); +/* $view = Views::getView('test_dynamic_entity_reference_entity_test_mul_view'); $this->executeView($view); foreach ($view->result as $index => $row) { diff --git a/tests/modules/dynamic_entity_reference_entity_test/dynamic_entity_reference_entity_test.module b/tests/modules/dynamic_entity_reference_entity_test/dynamic_entity_reference_entity_test.module index bed98f9..ddf2158 100644 --- a/tests/modules/dynamic_entity_reference_entity_test/dynamic_entity_reference_entity_test.module +++ b/tests/modules/dynamic_entity_reference_entity_test/dynamic_entity_reference_entity_test.module @@ -7,6 +7,8 @@ use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Field\BaseFieldDefinition; +use Drupal\Core\Field\FieldStorageDefinitionInterface; +use Drupal\dynamic_entity_reference\Tests\Views\DynamicEntityReferenceBaseFieldRelationshipTest; /** * Implements hook_entity_base_field_info(). @@ -46,6 +48,13 @@ function dynamic_entity_reference_entity_test_entity_base_field_info(EntityTypeI ]) ->setDisplayConfigurable('form', TRUE) ->setDisplayConfigurable('view', TRUE); + + // @todo use \Drupal::state()->get('dynamic_entity_reference_entity_test', 0); here. + if (DynamicEntityReferenceBaseFieldRelationshipTest::$testRun) { + $fields['dynamic_references'] + ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED); + } + } return $fields;