Issue #2850984 by maxocub: Fix path alias migration of translated nodes [D7]

8.4.x
Alex Pott 2017-03-03 15:02:40 +00:00
parent 0179304d0d
commit 0b45cbb70f
3 changed files with 86 additions and 2 deletions

View File

@ -43135,6 +43135,30 @@ $connection->insert('url_alias')
'alias' => 'term33',
'language' => 'und',
))
->values(array(
'pid' => '2',
'source' => 'node/2',
'alias' => 'deep-space-9',
'language' => 'en',
))
->values(array(
'pid' => '3',
'source' => 'node/3',
'alias' => 'deep-space-9-is',
'language' => 'is',
))
->values(array(
'pid' => '4',
'source' => 'node/4',
'alias' => 'firefly-is',
'language' => 'is',
))
->values(array(
'pid' => '5',
'source' => 'node/5',
'alias' => 'firefly',
'language' => 'en',
))
->execute();
$connection->schema()->createTable('users', array(

View File

@ -18,5 +18,17 @@ process:
- constants/slash
- alias
langcode: language
node_translation:
-
plugin: explode
source: source
delimiter: /
-
plugin: extract
index:
- 1
-
plugin: migration
migration: d7_node_translation
destination:
plugin: url_alias

View File

@ -14,14 +14,33 @@ class MigrateUrlAliasTest extends MigrateDrupal7TestBase {
/**
* {@inheritdoc}
*/
public static $modules = ['path'];
public static $modules = [
'content_translation',
'language',
'node',
'path',
'text',
];
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->executeMigration('d7_url_alias');
$this->installEntitySchema('node');
$this->installConfig('node');
$this->installSchema('node', ['node_access']);
$this->executeMigrations([
'language',
'd7_user_role',
'd7_user',
'd7_node_type',
'd7_node',
'd7_node_translation',
'd7_url_alias',
]);
}
/**
@ -38,4 +57,33 @@ class MigrateUrlAliasTest extends MigrateDrupal7TestBase {
$this->assertIdentical('und', $path['langcode']);
}
/**
* Test the URL alias migration with translated nodes.
*/
public function testUrlAliasWithTranslatedNodes() {
$alias_storage = $this->container->get('path.alias_storage');
// Alias for the 'The thing about Deep Space 9' node in English.
$path = $alias_storage->load(['alias' => '/deep-space-9']);
$this->assertSame('/node/2', $path['source']);
$this->assertSame('en', $path['langcode']);
// Alias for the 'The thing about Deep Space 9' Icelandic translation,
// which should now point to node/2 instead of node/3.
$path = $alias_storage->load(['alias' => '/deep-space-9-is']);
$this->assertSame('/node/2', $path['source']);
$this->assertSame('is', $path['langcode']);
// Alias for the 'The thing about Firefly' node in Icelandic.
$path = $alias_storage->load(['alias' => '/firefly-is']);
$this->assertSame('/node/4', $path['source']);
$this->assertSame('is', $path['langcode']);
// Alias for the 'The thing about Firefly' English translation,
// which should now point to node/4 instead of node/5.
$path = $alias_storage->load(['alias' => '/firefly']);
$this->assertSame('/node/4', $path['source']);
$this->assertSame('en', $path['langcode']);
}
}