View source
<?php
namespace Drupal\Tests\node\Kernel\Migrate\d7;
use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
use Drupal\taxonomy\Entity\Term;
use Drupal\Tests\file\Kernel\Migrate\d7\FileMigrationSetupTrait;
use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
use Drupal\node\Entity\Node;
use Drupal\node\NodeInterface;
class MigrateNodeTest extends MigrateDrupal7TestBase {
use FileMigrationSetupTrait;
protected static $modules = [
'content_translation',
'comment',
'datetime',
'datetime_range',
'image',
'language',
'link',
'menu_ui',
'node',
'taxonomy',
'telephone',
'text',
];
protected function setUp() : void {
parent::setUp();
$this
->fileMigrationSetup();
$this
->installEntitySchema('comment');
$this
->installEntitySchema('taxonomy_term');
$this
->installSchema('comment', [
'comment_entity_statistics',
]);
$this
->installSchema('node', [
'node_access',
]);
$this
->migrateUsers();
$this
->migrateFields();
$this
->migrateTaxonomyTerms();
$this
->executeMigrations([
'language',
'd7_language_content_taxonomy_vocabulary_settings',
'd7_taxonomy_term_localized_translation',
'd7_taxonomy_term_translation',
'd7_language_content_settings',
'd7_comment_field',
'd7_comment_field_instance',
'd7_node',
'd7_node_translation',
'd7_entity_translation_settings',
'd7_taxonomy_term_entity_translation',
'd7_node_entity_translation',
]);
}
protected function getFileMigrationInfo() {
return [
'path' => 'public://sites/default/files/cube.jpeg',
'size' => '3620',
'base_path' => 'public://',
'plugin_id' => 'd7_file',
];
}
protected function assertEntity(string $id, string $type, string $langcode, string $title, int $uid, bool $status, int $created, int $changed, bool $promoted, bool $sticky) : void {
$node = Node::load($id);
$this
->assertInstanceOf(NodeInterface::class, $node);
$this
->assertEquals($type, $node
->getType());
$this
->assertEquals($langcode, $node->langcode->value);
$this
->assertEquals($title, $node
->getTitle());
$this
->assertEquals($uid, $node
->getOwnerId());
$this
->assertEquals($status, $node
->isPublished());
$this
->assertEquals($created, $node
->getCreatedTime());
if (isset($changed)) {
$this
->assertEquals($changed, $node
->getChangedTime());
}
$this
->assertEquals($promoted, $node
->isPromoted());
$this
->assertEquals($sticky, $node
->isSticky());
}
protected function assertRevision(int $id, string $title, int $uid, ?string $log, int $timestamp) : void {
$revision = \Drupal::entityTypeManager()
->getStorage('node')
->loadRevision($id);
$this
->assertInstanceOf(NodeInterface::class, $revision);
$this
->assertEquals($title, $revision
->getTitle());
$this
->assertEquals($uid, $revision
->getRevisionUser()
->id());
$this
->assertEquals($log, $revision->revision_log->value);
$this
->assertEquals($timestamp, $revision
->getRevisionCreationTime());
}
public function testNode() {
$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);
$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);
$manager = $this->container
->get('content_translation.manager');
$this
->assertEquals('en', $manager
->getTranslationMetadata($node
->getTranslation('is'))
->getSource());
$this
->assertNull(Node::load(3), "Node 3 doesn't exist in D8, it was a translation");
$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);
$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);
$manager = $this->container
->get('content_translation.manager');
$node = Node::load(1);
$node_fr = $node
->getTranslation('fr');
$node_is = $node
->getTranslation('is');
$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);
$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());
$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());
}
}