diff --git a/tests/data/simple_xml_reduce_single_value.xml b/tests/data/simple_xml_reduce_single_value.xml new file mode 100644 index 0000000..0cffd28 --- /dev/null +++ b/tests/data/simple_xml_reduce_single_value.xml @@ -0,0 +1,14 @@ + + + + + Value 1 + Value 2 + + + + + Value 1 (single) + + + diff --git a/tests/src/Kernel/Plugin/migrate_plus/data_parser/SimpleXmlTest.php b/tests/src/Kernel/Plugin/migrate_plus/data_parser/SimpleXmlTest.php new file mode 100644 index 0000000..fe6b345 --- /dev/null +++ b/tests/src/Kernel/Plugin/migrate_plus/data_parser/SimpleXmlTest.php @@ -0,0 +1,77 @@ +container + ->get('module_handler') + ->getModule('migrate_plus') + ->getPath(); + $url = $path . '/tests/data/simple_xml_reduce_single_value.xml'; + + /** @var \Drupal\migrate_plus\DataParserPluginManager $plugin_manager */ + $plugin_manager = $this->container + ->get('plugin.manager.migrate_plus.data_parser'); + $conf = [ + 'plugin' => 'url', + 'data_fetcher_plugin' => 'file', + 'data_parser_plugin' => 'simple_xml', + 'destination' => 'node', + 'urls' => [$url], + 'ids' => ['id' => ['type' => 'integer']], + 'fields' => [ + [ + 'name' => 'id', + 'label' => 'Id', + 'selector' => '@id', + ], + [ + 'name' => 'values', + 'label' => 'Values', + 'selector' => 'values', + ], + ], + 'item_selector' => '/items/item', + ]; + $parser = $plugin_manager->createInstance('simple_xml', $conf); + + $data = []; + foreach ($parser as $item) { + $values = []; + foreach ($item['values'] as $value) { + $values[] = (string) $value; + } + $data[] = $values; + } + + $expected = [ + [ + 'Value 1', + 'Value 2', + ], + [ + 'Value 1 (single)', + ], + ]; + + $this->assertEquals($expected, $data); + } + +}