media_migration-8.x-1.x-dev/tests/src/Kernel/VideoEmbedFieldTest.php

tests/src/Kernel/VideoEmbedFieldTest.php
<?php

namespace Drupal\Tests\media_migration\Kernel;

use Drupal\media\Entity\Media;
use Drupal\node\Entity\Node;
use Drupal\Tests\media\Traits\MediaTypeCreationTrait;
use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;

/**
 * Tests Video Embed Field migration.
 *
 * @group media_migration
 */
class VideoEmbedFieldTest extends MigrateDrupal7TestBase {

  use MediaTypeCreationTrait;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'media',
    'media_migration',
    'media_migration_test_oembed',
    'node',
    'smart_sql_idmap',
    'image',
    'text',
    'filter',
  ];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->createMediaType('oembed:video', ['id' => 'remote_video']);
    $this->installEntitySchema('media');
    $this->installEntitySchema('file');
    $this->installEntitySchema('node');
    $this->installConfig(['node']);
    $this->installSchema('file', 'file_usage');

    $this->loadFixture(implode(
      DIRECTORY_SEPARATOR,
      [
        dirname(__DIR__, 2),
        'fixtures',
        'drupal7_video_embed_field_partial.php',
      ]
    ));
  }

  /**
   * {@inheritdoc}
   */
  protected function getFixtureFilePath() {
    return implode(DIRECTORY_SEPARATOR, [
      dirname(__DIR__, 2),
      'fixtures',
      'drupal7_nomedia.php',
    ]);
  }

  /**
   * Tests Video Embed Field migration.
   */
  public function testVideoEmbedFieldMigration(): void {
    $this->startCollectingMessages();
    $this->executeMigrations([
      'd7_field',
      'd7_view_modes',
      'd7_video_embed_field',
      'd7_node_type',
      'd7_field_instance',
      'd7_user_role',
      'd7_user',
      'd7_node_complete:vef_content',
    ]);
    $this->assertEmpty($this->migrateMessages);

    $this->assertCount(2, Node::loadMultiple());
    $this->assertEquals(
      ['field_vid_emb' => [['target_id' => 2]]],
      array_intersect_key(
        Node::load(3273427)->toArray(),
        ['field_vid_emb' => 1]
      )
    );
    $this->assertEquals(
      ['field_vid_emb' => [['target_id' => 1]]],
      array_intersect_key(
        Node::load(3273428)->toArray(),
        ['field_vid_emb' => 1]
      )
    );

    $media_props_to_ignore = [
      'uuid',
      'revision_created',
      'thumbnail',
      'created',
      'changed',
    ];
    $media_entities = Media::loadMultiple();
    $this->assertCount(2, $media_entities);

    $this->assertEquals(
      [
        'mid' => [['value' => '1']],
        'vid' => [['value' => '1']],
        'langcode' => [['value' => 'en']],
        'bundle' => [['target_id' => 'remote_video']],
        'revision_user' => [],
        'revision_log_message' => [],
        'status' => [['value' => '1']],
        'uid' => [['target_id' => '0']],
        'name' => [['value' => 'https://vimeo.com/632060933']],
        'default_langcode' => [['value' => '1']],
        'revision_default' => [['value' => '1']],
        'revision_translation_affected' => [['value' => '1']],
        'field_media_oembed_video' => [
          ['value' => 'https://vimeo.com/632060933'],
        ],
      ],
      array_diff_key(
        $media_entities[1]->toArray(),
        array_combine($media_props_to_ignore, $media_props_to_ignore)
      )
    );

    $this->assertEquals(
      [
        'mid' => [['value' => '2']],
        'vid' => [['value' => '2']],
        'langcode' => [['value' => 'en']],
        'bundle' => [['target_id' => 'remote_video']],
        'revision_user' => [],
        'revision_log_message' => [],
        'status' => [['value' => '1']],
        'uid' => [['target_id' => '0']],
        'name' => [['value' => 'https://www.youtube.com/watch?v=ibqBuhVtACk']],
        'default_langcode' => [['value' => '1']],
        'revision_default' => [['value' => '1']],
        'revision_translation_affected' => [['value' => '1']],
        'field_media_oembed_video' => [
          ['value' => 'https://www.youtube.com/watch?v=ibqBuhVtACk'],
        ],
      ],
      array_diff_key(
        $media_entities[2]->toArray(),
        array_combine($media_props_to_ignore, $media_props_to_ignore)
      )
    );
  }

}

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

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