From c6eb905222290c92c94215dca6e614ca580301f0 Mon Sep 17 00:00:00 2001
From: Dave Long <dave@longwaveconsulting.com>
Date: Thu, 11 Jan 2024 12:11:53 +0000
Subject: [PATCH] Issue #3371828 by quietone: NodeCompleteNodeTranslationLookup
 should return NULL for non translated lookups

---
 .../NodeCompleteNodeTranslationLookup.php     |  4 +++
 .../Kernel/Migrate/d6/MigrateUrlAliasTest.php | 26 ++++++++++++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php
index 9722273af169..36b193eb28e8 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/NodeCompleteNodeTranslationLookup.php
@@ -30,6 +30,10 @@ class NodeCompleteNodeTranslationLookup extends ProcessPluginBase {
    */
   public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
     if (is_array($value) && count($value) === 3) {
+      // If the language is 'und' then the node was not translated.
+      if ($value[2] === 'und') {
+        return NULL;
+      }
       unset($value[1]);
       return array_values($value);
     }
diff --git a/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php b/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php
index d79eaf26c94b..5515e9c9de00 100644
--- a/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php
+++ b/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php
@@ -43,9 +43,6 @@ protected function setUp(): void {
     $this->executeMigrations([
       'language',
       'd6_node_settings',
-      'd6_node',
-      'd6_node_translation',
-      'd6_url_alias',
     ]);
   }
 
@@ -72,6 +69,29 @@ private function assertPath(int $pid, array $conditions, PathAliasInterface $pat
    * Tests the URL alias migration.
    */
   public function testUrlAlias() {
+    $this->executeMigrations([
+      'd6_node',
+      'd6_node_translation',
+      'd6_url_alias',
+    ]);
+    $this->checkUrlMigration();
+  }
+
+  /**
+   * Tests the URL alias migration using the node complete migration.
+   */
+  public function testNodeCompleteUrlAlias() {
+    $this->executeMigrations([
+      'd6_node_complete',
+      'd6_url_alias',
+    ]);
+    $this->checkUrlMigration();
+  }
+
+  /**
+   * Checks the migration results.
+   */
+  protected function checkUrlMigration() {
     $id_map = $this->getMigration('d6_url_alias')->getIdMap();
     // Test that the field exists.
     $conditions = [
-- 
GitLab