tome-8.x-1.x-dev/modules/tome_sync/tests/src/Kernel/ImporterTest.php

modules/tome_sync/tests/src/Kernel/ImporterTest.php
<?php

namespace Drupal\Tests\tome_sync\Kernel;

use Drupal\Core\Site\Settings;
use Drupal\node\Entity\Node;
use Drupal\Tests\tome_base\Kernel\TestBase;
use Drupal\tome_sync\TomeSyncHelper;

/**
 * Tests that the importer works.
 *
 * @coversDefaultClass \Drupal\tome_sync\Importer
 * @group tome_sync
 */
class ImporterTest extends TestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'tome_sync',
  ];

  /**
   * {@inheritdoc}
   */
  public function setUp(): void {
    parent::setUp();
    $this->installSchema('tome_sync', ['tome_sync_content_hash']);
  }

  /**
   * @covers \Drupal\tome_sync\Importer::importContent
   */
  public function testImportContent() {
    /** @var \Drupal\Core\Entity\EntityRepository $repository */
    $repository = \Drupal::service('entity.repository');

    /** @var \Drupal\tome_sync\Exporter $exporter */
    $exporter = \Drupal::service('tome_sync.exporter');
    /** @var \Drupal\tome_sync\Importer $importer */
    $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');
  }

    /**
   * @covers \Drupal\tome_sync\Importer::importContent
   */
  public function testImportContentYaml() {
    $settings = Settings::getInstance() ? Settings::getAll() : [];
    $settings['tome_sync_encoder'] = 'yaml';
    new Settings($settings);
    drupal_flush_all_caches();

    /** @var \Drupal\Core\Entity\EntityRepository $repository */
    $repository = \Drupal::service('entity.repository');

    /** @var \Drupal\tome_sync\Exporter $exporter */
    $exporter = \Drupal::service('tome_sync.exporter');
    /** @var \Drupal\tome_sync\Importer $importer */
    $importer = \Drupal::service('tome_sync.importer');

    $uuid = \Drupal::service('uuid')->generate();
    $article = Node::create([
      'type' => 'article',
      'title' => 'My article',
      'uuid' => $uuid,
    ]);
    $exporter->exportContent($article);
    $yml_file = Settings::get('tome_content_directory', '../content') . '/node.' . $uuid . '.yml';
    $json_file = Settings::get('tome_content_directory', '../content') . '/node.' . $uuid . '.json';
    $this->assertFileExists($yml_file);
    $this->assertFileDoesNotExist($json_file);

    $this->assertFalse((bool) $repository->loadEntityByUuid('node', $uuid));
    $importer->importContent('node', $uuid);
    $this->assertTrue((bool) $repository->loadEntityByUuid('node', $uuid));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc