You are here

protected function ExportTest::validateNodeCdfObject in Acquia Content Hub 8.2

Validated "node with a text field" CDF object.

Parameters

int $nid: The Node ID.

string $title_expected: Expected node title.

string $bundle_expected: Expected bundle.

int $status_expected: Expected node publishing status.

array $field_expected: Expected field value.

array $field_metadata_expected: Expected field metadata.

See also

\Drupal\Tests\acquia_contenthub\Kernel\ExportTest::createNodeTypes()

\Drupal\Tests\acquia_contenthub\Kernel\ExportTest::createTaxonomyVocabulary()

\Drupal\Tests\acquia_contenthub\Kernel\ExportTest::createTaxonomyTerms()

File

tests/src/Kernel/ExportTest.php, line 1375

Class

ExportTest
Tests entity exports.

Namespace

Drupal\Tests\acquia_contenthub\Kernel

Code

protected function validateNodeCdfObject($nid, $title_expected, $bundle_expected, $status_expected, array $field_expected = [], array $field_metadata_expected = []) {
  $this
    ->validateBaseCdfObject();
  $cdf = $this->cdfObject;

  // Validate Type attribute.
  $type = $cdf
    ->getType();
  $this
    ->assertEquals('drupal8_content_entity', $type);

  // Validate Metadata attribute.
  $metadata = $cdf
    ->getMetadata();
  $this
    ->assertNotEmpty($metadata['dependencies']['entity']);

  // Validate Metadata's "dependencies" element.
  $uuids = array_keys($metadata['dependencies']['entity']);
  $content_type_uuid = reset($uuids);
  foreach ($uuids as $uuid) {
    $has_node_type_dependency = in_array($uuid, $this->nodeTypeUuids, TRUE);
    $has_taxonomy_vocabulary_dependency = in_array($uuid, $this->vocabularyUuids, TRUE);
    $has_taxonomy_term_dependency = in_array($uuid, $this->termUuids, TRUE);
    $has_user_dependency = in_array($uuid, $this->userUuids, TRUE);
    $has_file_dependency = in_array($uuid, $this->fieldUuids, TRUE);
    $has_valid_dependency = $has_node_type_dependency || $has_taxonomy_vocabulary_dependency || $has_taxonomy_term_dependency || $has_user_dependency || $has_file_dependency;
    $this
      ->assertTrue($has_valid_dependency);
  }
  unset($metadata['dependencies']);
  unset($metadata['data']);
  $metadata_expected = [
    'default_language' => 'en',
    'field' => [
      'uuid' => [
        'type' => 'uuid',
      ],
      'type' => [
        'type' => 'entity_reference',
        'target' => 'node_type',
      ],
      'revision_timestamp' => [
        'type' => 'created',
      ],
      'revision_uid' => [
        'type' => 'entity_reference',
        'target' => 'user',
      ],
      'revision_log' => [
        'type' => 'string_long',
      ],
      'status' => [
        'type' => 'boolean',
      ],
      'title' => [
        'type' => 'string',
      ],
      'uid' => [
        'type' => 'entity_reference',
        'target' => 'user',
      ],
      'created' => [
        'type' => 'created',
      ],
      'changed' => [
        'type' => 'changed',
      ],
      'promote' => [
        'type' => 'boolean',
      ],
      'sticky' => [
        'type' => 'boolean',
      ],
      'default_langcode' => [
        'type' => 'boolean',
      ],
      'revision_default' => [
        'type' => 'boolean',
      ],
      'revision_translation_affected' => [
        'type' => 'boolean',
      ],
    ],
    'languages' => [
      'en',
    ],
    'version' => 2,
  ];
  $metadata_expected['field'] = array_merge($metadata_expected['field'], $field_metadata_expected);
  $this
    ->assertEquals($metadata_expected, $metadata);

  // Validate "Data" attribute.
  $data = $this
    ->getCdfDataAttribute($cdf);
  $created_timestamp = $data['created']['value']['en']['value'];
  $is_timestamp = is_numeric($created_timestamp) && (int) $created_timestamp == $created_timestamp;
  $this
    ->assertTrue($is_timestamp);
  unset($data['revision_uid']);
  unset($data['uid']);
  $data_expected = [
    'uuid' => [
      'value' => [
        'en' => [
          'value' => $cdf
            ->getUuid(),
        ],
      ],
    ],
    'type' => [
      'value' => [
        'en' => $content_type_uuid,
      ],
    ],
    'revision_timestamp' => [
      'value' => [
        'en' => [
          'value' => $created_timestamp,
        ],
      ],
    ],
    'revision_log' => [
      'value' => [
        'en' => [],
      ],
    ],
    'status' => [
      'value' => [
        'en' => (string) $status_expected,
      ],
    ],
    'title' => [
      'value' => [
        'en' => $title_expected,
      ],
    ],
    'created' => [
      'value' => [
        'en' => [
          'value' => $created_timestamp,
        ],
      ],
    ],
    'changed' => [
      'value' => [
        'en' => [
          'value' => $created_timestamp,
        ],
      ],
    ],
    'promote' => [
      'value' => [
        'en' => '1',
      ],
    ],
    'sticky' => [
      'value' => [
        'en' => '0',
      ],
    ],
    'default_langcode' => [
      'value' => [
        'en' => '1',
      ],
    ],
    'revision_default' => [
      'value' => [
        'en' => '1',
      ],
    ],
    'revision_translation_affected' => [
      'value' => [
        'en' => '1',
      ],
    ],
  ];
  $data_expected = array_merge($data_expected, $field_expected);
  $this
    ->assertEquals($data_expected, $data);

  // Validate entity type.
  $entity_type = $this
    ->getCdfAttribute($cdf, 'entity_type');
  $this
    ->assertEquals('node', $entity_type);

  // Validate bundle.
  $bundle = $this
    ->getCdfAttribute($cdf, 'bundle');
  $this
    ->assertEquals($bundle_expected, $bundle);

  // Validate node title.
  $title = $this
    ->getCdfAttribute($cdf, 'label', 'en');
  $this
    ->assertEquals($title_expected, $title);

  // Validate "url" attribute.
  $url_attribute = $this
    ->getCdfAttribute($cdf, 'url');
  $url = Url::fromUserInput('/', [
    'absolute' => TRUE,
  ]);
  $url = $url
    ->toString();
  $this
    ->assertEquals($url . $entity_type . '/' . $nid, $url_attribute);
}