You are here

public function MigrateNodeTest::testNode in Drupal 9

Same name in this branch
  1. 9 core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeTest.php \Drupal\Tests\node\Kernel\Migrate\d6\MigrateNodeTest::testNode()
  2. 9 core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php \Drupal\Tests\node\Kernel\Migrate\d7\MigrateNodeTest::testNode()
Same name and namespace in other branches
  1. 8 core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php \Drupal\Tests\node\Kernel\Migrate\d7\MigrateNodeTest::testNode()

Tests node migration from Drupal 7 to 8.

File

core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php, line 149

Class

MigrateNodeTest
Tests node migration.

Namespace

Drupal\Tests\node\Kernel\Migrate\d7

Code

public function testNode() {

  // Confirm there are only classic node migration map tables. This shows
  // that only the classic migration ran.
  $results = $this
    ->nodeMigrateMapTableCount('7');
  $this
    ->assertSame(9, $results['node']);
  $this
    ->assertSame(0, $results['node_complete']);
  $this
    ->assertEntity(1, 'test_content_type', 'en', 'An English Node', '2', TRUE, '1421727515', '1441032132', TRUE, FALSE);
  $this
    ->assertRevision(1, 'An English Node', '1', NULL, '1441032132');
  $node = Node::load(1);
  $this
    ->assertNotEmpty($node->field_boolean->value);
  $this
    ->assertEquals('99-99-99-99', $node->field_phone->value);
  $this
    ->assertSame('2015-01-20T04:15:00', $node->field_date->value);
  $this
    ->assertSame('2015-01-20', $node->field_date_without_time->value);
  $this
    ->assertSame('2015-01-20', $node->field_datetime_without_time->value);
  $this
    ->assertEquals(1, $node->field_float->value);
  $this
    ->assertEquals('5', $node->field_integer->value);
  $this
    ->assertEquals('Some more text', $node->field_text_list[0]->value);
  $this
    ->assertEquals('7', $node->field_integer_list[0]->value);
  $this
    ->assertEquals('qwerty', $node->field_text->value);
  $this
    ->assertEquals('2', $node->field_file->target_id);
  $this
    ->assertEquals('file desc', $node->field_file->description);
  $this
    ->assertNotEmpty($node->field_file->display);
  $this
    ->assertEquals('1', $node->field_images->target_id);
  $this
    ->assertEquals('alt text', $node->field_images->alt);
  $this
    ->assertEquals('title text', $node->field_images->title);
  $this
    ->assertEquals('93', $node->field_images->width);
  $this
    ->assertEquals('93', $node->field_images->height);
  $this
    ->assertEquals('http://google.com', $node->field_link->uri);
  $this
    ->assertEquals('Click Here', $node->field_link->title);

  // Test that an email field is migrated.
  $this
    ->assertEquals('default@example.com', $node->field_email->value);
  $this
    ->assertEquals('another@example.com', $node->field_email[1]->value);
  $this
    ->assertEquals(CommentItemInterface::OPEN, $node->comment_node_test_content_type->status);
  $this
    ->assertEquals('3.1416', $node->field_float_list[0]->value);
  $node = Node::load(2);
  $this
    ->assertEquals('en', $node->langcode->value);
  $this
    ->assertEquals("...is that it's the absolute best show ever. Trust me, I would know.", $node->body->value);
  $this
    ->assertEquals('The thing about Deep Space 9', $node
    ->label());
  $this
    ->assertEquals('internal:/', $node->field_link->uri);
  $this
    ->assertEquals('Home', $node->field_link->title);
  $this
    ->assertEquals(CommentItemInterface::OPEN, $node->comment_node_article->status);
  $term_ref = $node
    ->get('field_vocab_localize')->target_id;
  $this
    ->assertSame('20', $term_ref);
  $this
    ->assertSame('DS9', Term::load($term_ref)
    ->getName());
  $term_ref = $node
    ->get('field_vocab_translate')->target_id;
  $this
    ->assertSame('21', $term_ref);
  $this
    ->assertSame('High council', Term::load($term_ref)
    ->getName());
  $term_ref = $node
    ->get('field_vocab_fixed')->target_id;
  $this
    ->assertSame('24', $term_ref);
  $this
    ->assertTrue($node
    ->hasTranslation('is'), "Node 2 has an Icelandic translation");
  $translation = $node
    ->getTranslation('is');
  $this
    ->assertEquals('is', $translation->langcode->value);
  $this
    ->assertEquals("is - ...is that it's the absolute best show ever. Trust me, I would know.", $translation->body->value);
  $this
    ->assertEquals('is - The thing about Deep Space 9', $translation
    ->label());
  $this
    ->assertEquals('internal:/', $translation->field_link->uri);
  $this
    ->assertEquals(CommentItemInterface::OPEN, $translation->comment_node_article->status);
  $this
    ->assertEquals('Home', $translation->field_link->title);
  $term_ref = $translation
    ->get('field_vocab_localize')->target_id;
  $this
    ->assertSame('20', $term_ref);
  $this
    ->assertSame('DS9', Term::load($term_ref)
    ->getName());
  $term_ref = $translation
    ->get('field_vocab_translate')->target_id;
  $this
    ->assertSame('23', $term_ref);
  $this
    ->assertSame('is - High council', Term::load($term_ref)
    ->getName());
  $term_ref = $translation
    ->get('field_vocab_fixed')->target_id;
  $this
    ->assertNulL($term_ref);

  // Test that content_translation_source is set.
  $manager = $this->container
    ->get('content_translation.manager');
  $this
    ->assertEquals('en', $manager
    ->getTranslationMetadata($node
    ->getTranslation('is'))
    ->getSource());

  // Node 3 is a translation of node 2, and should not be imported separately.
  $this
    ->assertNull(Node::load(3), "Node 3 doesn't exist in D8, it was a translation");

  // Test that content_translation_source for a source other than English.
  $node = Node::load(4);
  $this
    ->assertEquals('is', $manager
    ->getTranslationMetadata($node
    ->getTranslation('en'))
    ->getSource());
  $this
    ->assertEquals(CommentItemInterface::CLOSED, $node->comment_node_article->status);
  $translation = $node
    ->getTranslation('en');
  $this
    ->assertEquals(CommentItemInterface::CLOSED, $translation->comment_node_article->status);
  $node = Node::load(6);
  $this
    ->assertEquals(CommentItemInterface::CLOSED, $node->comment_forum->status);
  $node = Node::load(7);
  $this
    ->assertEquals(CommentItemInterface::OPEN, $node->comment_forum->status);

  // Test synchronized field.
  $value = 'Kai Opaka';
  $node = Node::load(2);
  $this
    ->assertSame($value, $node->field_text_plain->value);
  $this
    ->assertArrayNotHasKey('field_text_plain', $node
    ->getTranslatableFields());
  $node = $node
    ->getTranslation('is');
  $this
    ->assertSame($value, $node->field_text_plain->value);

  // Tests node entity translations migration from Drupal 7 to 8.
  $manager = $this->container
    ->get('content_translation.manager');

  // Get the node and its translations.
  $node = Node::load(1);
  $node_fr = $node
    ->getTranslation('fr');
  $node_is = $node
    ->getTranslation('is');

  // Test that fields translated with Entity Translation are migrated.
  $this
    ->assertSame('An English Node', $node
    ->getTitle());
  $this
    ->assertSame('A French Node', $node_fr
    ->getTitle());
  $this
    ->assertSame('An Icelandic Node', $node_is
    ->getTitle());
  $this
    ->assertSame('5', $node->field_integer->value);
  $this
    ->assertSame('6', $node_fr->field_integer->value);
  $this
    ->assertSame('7', $node_is->field_integer->value);

  // Test that the French translation metadata is correctly migrated.
  $metadata_fr = $manager
    ->getTranslationMetadata($node_fr);
  $this
    ->assertSame('en', $metadata_fr
    ->getSource());
  $this
    ->assertTrue($metadata_fr
    ->isOutdated());
  $this
    ->assertSame('2', $node_fr
    ->getOwnerId());
  $this
    ->assertSame('1529615802', $node_fr
    ->getCreatedTime());
  $this
    ->assertSame('1529615802', $node_fr
    ->getChangedTime());
  $this
    ->assertTrue($node_fr
    ->isPublished());

  // Test that the Icelandic translation metadata is correctly migrated.
  $metadata_is = $manager
    ->getTranslationMetadata($node_is);
  $this
    ->assertSame('en', $metadata_is
    ->getSource());
  $this
    ->assertFalse($metadata_is
    ->isOutdated());
  $this
    ->assertSame('1', $node_is
    ->getOwnerId());
  $this
    ->assertSame('1529615813', $node_is
    ->getCreatedTime());
  $this
    ->assertSame('1529615813', $node_is
    ->getChangedTime());
  $this
    ->assertFalse($node_is
    ->isPublished());
}