You are here

public function CreateTest::assertReadEntityIdFromHeaderAndDb in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/rest/src/Tests/CreateTest.php \Drupal\rest\Tests\CreateTest::assertReadEntityIdFromHeaderAndDb()

Gets the new entity ID from the location header and tries to read it from the database.

Parameters

string $entity_type: Entity type we need to load the entity from DB.

\Drupal\Core\Entity\EntityInterface $entity: The entity we want to check that was inserted correctly.

array $entity_values: The values of $entity.

4 calls to CreateTest::assertReadEntityIdFromHeaderAndDb()
CreateTest::testCreateComment in core/modules/rest/src/Tests/CreateTest.php
Test comment creation.
CreateTest::testCreateEntityTest in core/modules/rest/src/Tests/CreateTest.php
Tests valid and invalid create requests for 'entity_test' entity type.
CreateTest::testCreateNode in core/modules/rest/src/Tests/CreateTest.php
Tests several valid and invalid create requests for 'node' entity type.
CreateTest::testCreateUser in core/modules/rest/src/Tests/CreateTest.php
Tests several valid and invalid create requests for 'user' entity type.

File

core/modules/rest/src/Tests/CreateTest.php, line 379
Contains \Drupal\rest\Tests\CreateTest.

Class

CreateTest
Tests the creation of resources.

Namespace

Drupal\rest\Tests

Code

public function assertReadEntityIdFromHeaderAndDb($entity_type, EntityInterface $entity, array $entity_values = array()) {

  // Get the location from the HTTP response header.
  $location_url = $this
    ->drupalGetHeader('location');
  $url_parts = explode('/', $location_url);
  $id = end($url_parts);

  // Get the entity using the ID found.
  $loaded_entity = \Drupal::entityManager()
    ->getStorage($entity_type)
    ->load($id);
  $this
    ->assertNotIdentical(FALSE, $loaded_entity, 'The new ' . $entity_type . ' was found in the database.');
  $this
    ->assertEqual($entity
    ->uuid(), $loaded_entity
    ->uuid(), 'UUID of created entity is correct.');

  // Verify that the field values sent and received from DB are the same.
  foreach ($entity_values as $property => $value) {
    $actual_value = $loaded_entity
      ->get($property)->value;
    $send_value = $entity
      ->get($property)->value;
    $this
      ->assertEqual($send_value, $actual_value, 'Created property ' . $property . ' expected: ' . $send_value . ', actual: ' . $actual_value);
  }

  // Delete the entity loaded from DB.
  $loaded_entity
    ->delete();
}