View source
<?php
namespace Drupal\Tests\tome_sync\Kernel;
use Drupal\node\Entity\Node;
use Drupal\Tests\tome_base\Kernel\TestBase;
use Drupal\tome_sync\TomeSyncHelper;
class ImporterTest extends TestBase {
public static $modules = [
'tome_sync',
];
public function setUp() {
parent::setUp();
$this
->installSchema('tome_sync', [
'tome_sync_content_hash',
]);
}
public function testImportContent() {
$repository = \Drupal::service('entity.repository');
$exporter = \Drupal::service('tome_sync.exporter');
$importer = \Drupal::service('tome_sync.importer');
$uuid = \Drupal::service('uuid')
->generate();
$article = Node::create([
'type' => 'article',
'title' => 'My article',
'uuid' => $uuid,
]);
$exporter
->exportContent($article);
$this
->assertFalse((bool) $repository
->loadEntityByUuid('node', $uuid));
$importer
->importContent('node', $uuid);
$this
->assertTrue((bool) $repository
->loadEntityByUuid('node', $uuid));
$translation = $article
->addTranslation('fr', [
'title' => 'My french article',
]);
$exporter
->exportContent($translation);
$this
->assertFalse($repository
->loadEntityByUuid('node', $uuid)
->hasTranslation('fr'));
$importer
->importContent('node', $uuid, 'fr');
$this
->assertTrue($repository
->loadEntityByUuid('node', $uuid)
->hasTranslation('fr'));
$this
->assertEquals([
[
TomeSyncHelper::getContentName($article),
],
[
TomeSyncHelper::getContentName($article
->getTranslation('fr')),
],
], $importer
->getChunkedNames());
$article
->setTitle('New title');
$exporter
->exportContent($article);
$this
->assertEquals($repository
->loadEntityByUuid('node', $uuid)
->getTitle(), 'My article');
$importer
->importContent('node', $uuid);
$this
->assertTrue($repository
->loadEntityByUuid('node', $uuid)
->hasTranslation('fr'));
$this
->assertEquals($repository
->loadEntityByUuid('node', $uuid)
->getTitle(), 'New title');
$translation
->setTitle('New french title');
$exporter
->exportContent($translation);
$this
->assertEquals($repository
->loadEntityByUuid('node', $uuid)
->getTranslation('fr')
->getTitle(), 'My french article');
$importer
->importContent('node', $uuid, 'fr');
$this
->assertEquals($repository
->loadEntityByUuid('node', $uuid)
->getTranslation('fr')
->getTitle(), 'New french title');
}
}