Chris@5
|
1 <?php
|
Chris@5
|
2
|
Chris@5
|
3 namespace Drupal\Tests\migrate_plus\Unit\process;
|
Chris@5
|
4
|
Chris@5
|
5 use Drupal\Component\Utility\Html;
|
Chris@5
|
6 use Drupal\migrate\MigrateException;
|
Chris@5
|
7 use Drupal\migrate_plus\Plugin\migrate\process\Dom;
|
Chris@5
|
8 use Drupal\Tests\migrate\Unit\process\MigrateProcessTestCase;
|
Chris@5
|
9
|
Chris@5
|
10 /**
|
Chris@5
|
11 * Tests the dom process plugin.
|
Chris@5
|
12 *
|
Chris@5
|
13 * @group migrate
|
Chris@5
|
14 * @coversDefaultClass \Drupal\migrate_plus\Plugin\migrate\process\Dom
|
Chris@5
|
15 */
|
Chris@5
|
16 class DomTest extends MigrateProcessTestCase {
|
Chris@5
|
17
|
Chris@5
|
18 /**
|
Chris@5
|
19 * @covers ::__construct
|
Chris@5
|
20 */
|
Chris@5
|
21 public function testConfigMethodEmpty() {
|
Chris@5
|
22 $configuration = [];
|
Chris@5
|
23 $value = '<p>A simple paragraph.</p>';
|
Chris@5
|
24 $this->setExpectedException(\InvalidArgumentException::class, 'The "method" must be set.');
|
Chris@5
|
25 (new Dom($configuration, 'dom', []))
|
Chris@5
|
26 ->transform($value, $this->migrateExecutable, $this->row, 'destinationproperty');
|
Chris@5
|
27 }
|
Chris@5
|
28
|
Chris@5
|
29 /**
|
Chris@5
|
30 * @covers ::__construct
|
Chris@5
|
31 */
|
Chris@5
|
32 public function testConfigMethodInvalid() {
|
Chris@5
|
33 $configuration['method'] = 'invalid';
|
Chris@5
|
34 $value = '<p>A simple paragraph.</p>';
|
Chris@5
|
35 $this->setExpectedException(\InvalidArgumentException::class, 'The "method" must be "import" or "export".');
|
Chris@5
|
36 (new Dom($configuration, 'dom', []))
|
Chris@5
|
37 ->transform($value, $this->migrateExecutable, $this->row, 'destinationproperty');
|
Chris@5
|
38 }
|
Chris@5
|
39
|
Chris@5
|
40 /**
|
Chris@5
|
41 * @covers ::import
|
Chris@5
|
42 */
|
Chris@5
|
43 public function testImportNonRoot() {
|
Chris@5
|
44 $configuration['method'] = 'import';
|
Chris@5
|
45 $value = '<p>A simple paragraph.</p>';
|
Chris@5
|
46 $document = (new Dom($configuration, 'dom', []))
|
Chris@5
|
47 ->transform($value, $this->migrateExecutable, $this->row, 'destinationproperty');
|
Chris@5
|
48 $this->assertTrue($document instanceof \DOMDocument);
|
Chris@5
|
49 }
|
Chris@5
|
50
|
Chris@5
|
51 /**
|
Chris@5
|
52 * @covers ::import
|
Chris@5
|
53 */
|
Chris@5
|
54 public function testImportNonRootInvalidInput() {
|
Chris@5
|
55 $configuration['method'] = 'import';
|
Chris@5
|
56 $value = [1, 1];
|
Chris@5
|
57 $this->setExpectedException(MigrateException::class, 'Cannot import a non-string value.');
|
Chris@5
|
58 (new Dom($configuration, 'dom', []))
|
Chris@5
|
59 ->transform($value, $this->migrateExecutable, $this->row, 'destinationproperty');
|
Chris@5
|
60 }
|
Chris@5
|
61
|
Chris@5
|
62 /**
|
Chris@5
|
63 * @covers ::export
|
Chris@5
|
64 */
|
Chris@5
|
65 public function testExportNonRoot() {
|
Chris@5
|
66 $configuration['method'] = 'export';
|
Chris@5
|
67 $partial = '<p>A simple paragraph.</p>';
|
Chris@5
|
68 $document = Html::load($partial);
|
Chris@5
|
69 $value = (new Dom($configuration, 'dom', []))
|
Chris@5
|
70 ->transform($document, $this->migrateExecutable, $this->row, 'destinationproperty');
|
Chris@5
|
71 $this->assertEquals($value, $partial);
|
Chris@5
|
72 }
|
Chris@5
|
73
|
Chris@5
|
74 /**
|
Chris@5
|
75 * @covers ::export
|
Chris@5
|
76 */
|
Chris@5
|
77 public function testExportNonRootInvalidInput() {
|
Chris@5
|
78 $configuration['method'] = 'export';
|
Chris@5
|
79 $this->setExpectedException(MigrateException::class, 'Cannot export a "string".');
|
Chris@5
|
80 (new Dom($configuration, 'dom', []))
|
Chris@5
|
81 ->transform('string is not DOMDocument', $this->migrateExecutable, $this->row, 'destinationproperty');
|
Chris@5
|
82 }
|
Chris@5
|
83
|
Chris@5
|
84 }
|