class FlattenTest

Same name in other branches
  1. 9 core/modules/migrate/tests/src/Unit/process/FlattenTest.php \Drupal\Tests\migrate\Unit\process\FlattenTest
  2. 8.9.x core/modules/migrate/tests/src/Unit/process/FlattenTest.php \Drupal\Tests\migrate\Unit\process\FlattenTest
  3. 10 core/modules/migrate/tests/src/Unit/process/FlattenTest.php \Drupal\Tests\migrate\Unit\process\FlattenTest

Tests the flatten plugin.

@group migrate

Hierarchy

Expanded class hierarchy of FlattenTest

File

core/modules/migrate/tests/src/Unit/process/FlattenTest.php, line 15

Namespace

Drupal\Tests\migrate\Unit\process
View source
class FlattenTest extends MigrateProcessTestCase {
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        $this->plugin = new Flatten([], 'flatten', []);
        parent::setUp();
    }
    
    /**
     * Tests that various array flatten operations work properly.
     *
     * @dataProvider providerTestFlatten
     */
    public function testFlatten($value, $expected) : void {
        $flattened = $this->plugin
            ->transform($value, $this->migrateExecutable, $this->row, 'destination_property');
        $this->assertSame($expected, $flattened);
    }
    
    /**
     * Provides data for the testFlatten.
     */
    public static function providerTestFlatten() {
        $object = (object) [
            'a' => 'test',
            'b' => '1.2',
            'c' => 'NULL',
        ];
        return [
            'array' => [
                [
                    1,
                    2,
                    [
                        3,
                        4,
                        [
                            5,
                        ],
                    ],
                    [],
                    [
                        7,
                        8,
                    ],
                ],
                [
                    1,
                    2,
                    3,
                    4,
                    5,
                    7,
                    8,
                ],
            ],
            'object' => [
                $object,
                [
                    'test',
                    '1.2',
                    'NULL',
                ],
            ],
        ];
    }
    
    /**
     * Tests that Flatten throws a MigrateException.
     *
     * @dataProvider providerTestFlattenInvalid
     */
    public function testFlattenInvalid($value) : void {
        $this->expectException(MigrateException::class);
        $type = gettype($value);
        $this->expectExceptionMessage(sprintf("Input should be an array or an object, instead it was of type '%s'", $type));
        $this->plugin
            ->transform($value, $this->migrateExecutable, $this->row, 'destination_property');
    }
    
    /**
     * Provides data for the testFlattenInvalid.
     */
    public static function providerTestFlattenInvalid() {
        $xml_str = <<<XML
<xml version='1.0'?>
<authors>
 <name>Ada Lovelace</name>
</authors>
XML;
        return [
            'empty string' => [
                '',
            ],
            'string' => [
                'Kate Sheppard',
            ],
            'integer' => [
                1,
            ],
            'float' => [
                1.2,
            ],
            'NULL' => [
                NULL,
            ],
            'boolean' => [
                TRUE,
            ],
            'xml' => [
                $xml_str,
            ],
        ];
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
ExpectDeprecationTrait::expectDeprecation public function Adds an expected deprecation.
ExpectDeprecationTrait::getCallableName private static function Returns a callable as a string suitable for inclusion in a message.
ExpectDeprecationTrait::setUpErrorHandler public function Sets up the test error handler.
ExpectDeprecationTrait::tearDownErrorHandler public function Tears down the test error handler.
FlattenTest::providerTestFlatten public static function Provides data for the testFlatten.
FlattenTest::providerTestFlattenInvalid public static function Provides data for the testFlattenInvalid.
FlattenTest::setUp protected function Overrides MigrateProcessTestCase::setUp
FlattenTest::testFlatten public function Tests that various array flatten operations work properly.
FlattenTest::testFlattenInvalid public function Tests that Flatten throws a MigrateException.
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.
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.
UnitTestCase::$root protected property The app root.
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::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::setDebugDumpHandler public static function Registers the dumper CLI handler when the DebugDump extension is enabled.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.