<?php

declare(strict_types=1);

namespace Drupal\Tests\path\Kernel\Migrate\d7;

use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;

/**
 * Tests URL alias migration.
 */
#[Group('path')]
#[RunTestsInSeparateProcesses]
class MigrateUrlAliasTest extends MigrateUrlAliasTestBase {

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

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->executeMigrations([
      'd7_node_translation',
      'd7_url_alias',
    ]);
  }

  /**
   * Tests the URL alias migration with translated nodes.
   */
  public function testUrlAliasWithTranslatedNodes(): void {
    // Alias for the 'The thing about Deep Space 9' node in English.
    $path_alias = $this->loadPathAliasByConditions(['alias' => '/deep-space-9']);
    $this->assertSame('/node/2', $path_alias->getPath());
    $this->assertSame('en', $path_alias->get('langcode')->value);

    // Alias for the 'The thing about Deep Space 9' Icelandic translation,
    // which should now point to node/2 instead of node/3.
    $path_alias = $this->loadPathAliasByConditions(['alias' => '/deep-space-9-is']);
    $this->assertSame('/node/2', $path_alias->getPath());
    $this->assertSame('is', $path_alias->get('langcode')->value);

    // Alias for the 'The thing about Firefly' node in Icelandic.
    $path_alias = $this->loadPathAliasByConditions(['alias' => '/firefly-is']);
    $this->assertSame('/node/4', $path_alias->getPath());
    $this->assertSame('is', $path_alias->get('langcode')->value);

    // Alias for the 'The thing about Firefly' English translation,
    // which should now point to node/4 instead of node/5.
    $path_alias = $this->loadPathAliasByConditions(['alias' => '/firefly']);
    $this->assertSame('/node/4', $path_alias->getPath());
    $this->assertSame('en', $path_alias->get('langcode')->value);
  }

}
