X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fmigrate%2Ftests%2Fsrc%2FKernel%2Fprocess%2FExtractTest.php;fp=web%2Fcore%2Fmodules%2Fmigrate%2Ftests%2Fsrc%2FKernel%2Fprocess%2FExtractTest.php;h=8c747abadf5cba52307870adb346540f67c10342;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php b/web/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php new file mode 100644 index 000000000..8c747abad --- /dev/null +++ b/web/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php @@ -0,0 +1,111 @@ + [ + 'plugin' => 'embedded_data', + 'data_rows' => [], + 'ids' => [ + 'id' => ['type' => 'string'], + ], + ], + 'process' => [ + 'first' => [ + 'plugin' => 'extract', + 'index' => [0], + 'source' => 'simple_array', + ], + 'second' => [ + 'plugin' => 'extract', + 'index' => [1], + 'source' => 'complex_array', + ], + ], + 'destination' => [ + 'plugin' => 'config', + 'config_name' => 'migrate_test.settings', + ], + ]; + } + + /** + * Tests multiple value handling. + * + * @dataProvider multipleValueProviderSource + * + * @param array $source_data + * @param array $expected_data + */ + public function testMultipleValueExplode(array $source_data, array $expected_data) { + $definition = $this->getDefinition(); + $definition['source']['data_rows'] = [$source_data]; + + $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition); + + $executable = new MigrateExecutable($migration, new MigrateMessage()); + $result = $executable->import(); + + // Migration needs to succeed before further assertions are made. + $this->assertSame(MigrationInterface::RESULT_COMPLETED, $result); + + // Compare with expected data. + $this->assertEquals($expected_data, \Drupal::config('migrate_test.settings')->get()); + } + + /** + * Provides multiple source data for "extract" process plugin test. + */ + public function multipleValueProviderSource() { + $tests = [ + [ + 'source_data' => [ + 'id' => '1', + 'simple_array' => ['alpha', 'beta'], + 'complex_array' => [['alpha', 'beta'], ['psi', 'omega']], + ], + 'expected_data' => [ + 'first' => 'alpha', + 'second' => ['psi', 'omega'], + ], + ], + [ + 'source_data' => [ + 'id' => '2', + 'simple_array' => ['one'], + 'complex_array' => [0, 1], + ], + 'expected_data' => [ + 'first' => 'one', + 'second' => 1, + ], + ], + ]; + + return $tests; + } + +}