class ExtractTest
@coversDefaultClass \Drupal\migrate\Plugin\migrate\process\Extract
      
    
@group migrate
Hierarchy
- class \Drupal\Tests\UnitTestCase uses \Drupal\Tests\Traits\PhpUnitWarnings, \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, \Drupal\Tests\RandomGeneratorTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\migrate\Unit\MigrateTestCase extends \Drupal\Tests\UnitTestCase
- class \Drupal\Tests\migrate\Unit\process\MigrateProcessTestCase extends \Drupal\Tests\migrate\Unit\MigrateTestCase
- class \Drupal\Tests\migrate\Unit\process\ExtractTest extends \Drupal\Tests\migrate\Unit\process\MigrateProcessTestCase
 
 
 - class \Drupal\Tests\migrate\Unit\process\MigrateProcessTestCase extends \Drupal\Tests\migrate\Unit\MigrateTestCase
 
 - class \Drupal\Tests\migrate\Unit\MigrateTestCase extends \Drupal\Tests\UnitTestCase
 
Expanded class hierarchy of ExtractTest
File
- 
              core/
modules/ migrate/ tests/ src/ Unit/ process/ ExtractTest.php, line 14  
Namespace
Drupal\Tests\migrate\Unit\processView source
class ExtractTest extends MigrateProcessTestCase {
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    $configuration['index'] = [
      'foo',
    ];
    $this->plugin = new Extract($configuration, 'map', []);
    parent::setUp();
  }
  
  /**
   * Tests successful extraction.
   */
  public function testExtract() : void {
    $value = $this->plugin
      ->transform([
      'foo' => 'bar',
    ], $this->migrateExecutable, $this->row, 'destination_property');
    $this->assertSame('bar', $value);
  }
  
  /**
   * Tests invalid input.
   *
   * @dataProvider providerTestExtractInvalid
   */
  public function testExtractInvalid($value) : void {
    $this->expectException(MigrateException::class);
    $type = gettype($value);
    $this->expectExceptionMessage(sprintf("Input should be an array, instead it was of type '%s'", $type));
    $this->plugin
      ->transform($value, $this->migrateExecutable, $this->row, 'destination_property');
  }
  
  /**
   * Tests unsuccessful extraction.
   */
  public function testExtractFail() : void {
    $this->expectException(MigrateException::class);
    $this->expectExceptionMessage("Array index missing, extraction failed for 'array(\n  'bar' => 'foo',\n)'. Consider adding a `default` key to the configuration.");
    $this->plugin
      ->transform([
      'bar' => 'foo',
    ], $this->migrateExecutable, $this->row, 'destination_property');
  }
  
  /**
   * Tests unsuccessful extraction.
   */
  public function testExtractFailDefault() : void {
    $plugin = new Extract([
      'index' => [
        'foo',
      ],
      'default' => 'test',
    ], 'map', []);
    $value = $plugin->transform([
      'bar' => 'foo',
    ], $this->migrateExecutable, $this->row, 'destination_property');
    $this->assertSame('test', $value, '');
  }
  
  /**
   * Test the extract plugin with default values.
   *
   * @param array $value
   *   The process plugin input value.
   * @param array $configuration
   *   The plugin configuration.
   * @param string|null $expected
   *   The expected transformed value.
   *
   * @throws \Drupal\migrate\MigrateException
   *
   * @dataProvider providerExtractDefault
   */
  public function testExtractDefault(array $value, array $configuration, $expected) : void {
    $this->plugin = new Extract($configuration, 'map', []);
    $value = $this->plugin
      ->transform($value, $this->migrateExecutable, $this->row, 'destination_property');
    $this->assertSame($expected, $value);
  }
  
  /**
   * Data provider for testExtractDefault.
   */
  public static function providerExtractDefault() {
    return [
      [
        [
          'foo' => 'bar',
        ],
        [
          'index' => [
            'foo',
          ],
          'default' => 'one',
        ],
        'bar',
      ],
      [
        [
          'foo' => 'bar',
        ],
        [
          'index' => [
            'not_key',
          ],
          'default' => 'two',
        ],
        'two',
      ],
      [
        [
          'foo' => 'bar',
        ],
        [
          'index' => [
            'not_key',
          ],
          'default' => NULL,
        ],
        NULL,
      ],
      [
        [
          'foo' => 'bar',
        ],
        [
          'index' => [
            'not_key',
          ],
          'default' => TRUE,
        ],
        TRUE,
      ],
      [
        [
          'foo' => 'bar',
        ],
        [
          'index' => [
            'not_key',
          ],
          'default' => FALSE,
        ],
        FALSE,
      ],
      [
        [
          'foo' => '',
        ],
        [
          'index' => [
            'foo',
          ],
          'default' => NULL,
        ],
        '',
      ],
    ];
  }
  
  /**
   * Provides data for the testExtractInvalid.
   */
  public static function providerTestExtractInvalid() {
    $xml_str = <<<XML
    <xml version='1.0'?>
      <authors>
        <name>Test Extract Invalid</name>
      </authors>
    XML;
    $object = (object) [
      'one' => 'test1',
      'two' => 'test2',
      'three' => 'test3',
    ];
    return [
      'empty string' => [
        '',
      ],
      'string' => [
        'Extract Test',
      ],
      'integer' => [
        1,
      ],
      'float' => [
        1.0,
      ],
      'NULL' => [
        NULL,
      ],
      'boolean' => [
        TRUE,
      ],
      'xml' => [
        $xml_str,
      ],
      'object' => [
        $object,
      ],
    ];
  }
}
Members
| Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides | 
|---|---|---|---|---|---|---|
| ExtractTest::providerExtractDefault | public static | function | Data provider for testExtractDefault. | |||
| ExtractTest::providerTestExtractInvalid | public static | function | Provides data for the testExtractInvalid. | |||
| ExtractTest::setUp | protected | function | Overrides MigrateProcessTestCase::setUp | |||
| ExtractTest::testExtract | public | function | Tests successful extraction. | |||
| ExtractTest::testExtractDefault | public | function | Test the extract plugin with default values. | |||
| ExtractTest::testExtractFail | public | function | Tests unsuccessful extraction. | |||
| ExtractTest::testExtractFailDefault | public | function | Tests unsuccessful extraction. | |||
| ExtractTest::testExtractInvalid | public | function | Tests invalid input. | |||
| MigrateProcessTestCase::$migrateExecutable | protected | property | ||||
| MigrateProcessTestCase::$plugin | protected | property | 1 | |||
| MigrateProcessTestCase::$row | protected | property | ||||
| MigrateTestCase::$idMap | protected | property | The migration ID map. | |||
| MigrateTestCase::$migrationConfiguration | protected | property | An array of migration configuration values. | 10 | ||
| MigrateTestCase::$migrationStatus | protected | property | Local store for mocking setStatus()/getStatus(). | |||
| MigrateTestCase::createSchemaFromRow | protected | function | Generates a table schema from a row. | |||
| MigrateTestCase::getDatabase | protected | function | Gets an SQLite database connection object for use in tests. | |||
| MigrateTestCase::getMigration | protected | function | Retrieves a mocked migration. | |||
| MigrateTestCase::getValue | protected | function | Gets the value on a row for a given key. | |||
| MigrateTestCase::queryResultTest | public | function | Tests a query. | |||
| MigrateTestCase::retrievalAssertHelper | protected | function | Asserts tested values during test retrieval. | |||
| PhpUnitWarnings::$deprecationWarnings | private static | property | Deprecation warnings from PHPUnit to raise with @trigger_error(). | |||
| PhpUnitWarnings::addWarning | public | function | Converts PHPUnit deprecation warnings to E_USER_DEPRECATED. | |||
| RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | |||
| RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | |||
| RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | |||
| RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |||
| RandomGeneratorTrait::randomStringValidate | Deprecated | public | function | Callback for random string validation. | ||
| UnitTestCase::$root | protected | property | The app root. | 1 | ||
| UnitTestCase::getClassResolverStub | protected | function | Returns a stub class resolver. | |||
| UnitTestCase::getConfigFactoryStub | public | function | Returns a stub config factory that behaves according to the passed array. | |||
| UnitTestCase::getConfigStorageStub | public | function | Returns a stub config storage that returns the supplied configuration. | |||
| UnitTestCase::getContainerWithCacheTagsInvalidator | protected | function | Sets up a container with a cache tags invalidator. | |||
| UnitTestCase::getStringTranslationStub | public | function | Returns a stub translation manager that just returns the passed string. | |||
| UnitTestCase::setUpBeforeClass | public static | function | ||||
| UnitTestCase::__get | public | function | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.