public function EntityFieldTest::testIterator

Tests iterating over properties.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php, line 321
Definition of Drupal\Core\Entity\Tests\EntityFieldTest.

Class

EntityFieldTest
Tests Entity API base functionality.

Namespace

Drupal\system\Tests\Entity

Code

public function testIterator() {
  $entity = $this
    ->createTestEntity();
  foreach ($entity as $name => $field) {
    $this
      ->assertTrue($field instanceof FieldInterface, "Field {$name} implements interface.");
    foreach ($field as $delta => $item) {
      $this
        ->assertTrue($field[0] instanceof FieldItemInterface, "Item {$delta} of field {$name} implements interface.");
      foreach ($item as $value_name => $value_property) {
        $this
          ->assertTrue($value_property instanceof TypedDataInterface, "Value {$value_name} of item {$delta} of field {$name} implements interface.");
        $value = $value_property
          ->getValue();
        $this
          ->assertTrue(!isset($value) || is_scalar($value) || $value instanceof EntityInterface, "Value {$value_name} of item {$delta} of field {$name} is a primitive or an entity.");
      }
    }
  }
  $properties = $entity
    ->getProperties();
  $this
    ->assertEqual(array_keys($properties), array_keys($entity
    ->getPropertyDefinitions()), 'All properties returned.');
  $this
    ->assertEqual($properties, iterator_to_array($entity
    ->getIterator()), 'Entity iterator iterates over all properties.');
}