Version 1
[yaffs-website] / web / core / modules / migrate / tests / src / Unit / process / ExtractTest.php
diff --git a/web/core/modules/migrate/tests/src/Unit/process/ExtractTest.php b/web/core/modules/migrate/tests/src/Unit/process/ExtractTest.php
new file mode 100644 (file)
index 0000000..14f3f9a
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+namespace Drupal\Tests\migrate\Unit\process;
+
+use Drupal\migrate\MigrateException;
+use Drupal\migrate\Plugin\migrate\process\Extract;
+
+/**
+ * @coversDefaultClass \Drupal\migrate\Plugin\migrate\process\Extract
+ * @group migrate
+ */
+class ExtractTest extends MigrateProcessTestCase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    $configuration['index'] = ['foo'];
+    $this->plugin = new Extract($configuration, 'map', []);
+    parent::setUp();
+  }
+
+  /**
+   * Tests successful extraction.
+   */
+  public function testExtract() {
+    $value = $this->plugin->transform(['foo' => 'bar'], $this->migrateExecutable, $this->row, 'destinationproperty');
+    $this->assertSame($value, 'bar');
+  }
+
+  /**
+   * Tests invalid input.
+   */
+  public function testExtractFromString() {
+    $this->setExpectedException(MigrateException::class, 'Input should be an array.');
+    $this->plugin->transform('bar', $this->migrateExecutable, $this->row, 'destinationproperty');
+  }
+
+  /**
+   * Tests unsuccessful extraction.
+   */
+  public function testExtractFail() {
+    $this->setExpectedException(MigrateException::class, 'Array index missing, extraction failed.');
+    $this->plugin->transform(['bar' => 'foo'], $this->migrateExecutable, $this->row, 'destinationproperty');
+  }
+
+  /**
+   * Tests unsuccessful extraction.
+   */
+  public function testExtractFailDefault() {
+    $plugin = new Extract(['index' => ['foo'], 'default' => 'test'], 'map', []);
+    $value = $plugin->transform(['bar' => 'foo'], $this->migrateExecutable, $this->row, 'destinationproperty');
+    $this->assertSame($value, 'test', '');
+  }
+
+}