class CallbackTest

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

Tests the callback process plugin.

@group migrate

Hierarchy

Expanded class hierarchy of CallbackTest

File

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

Namespace

Drupal\Tests\migrate\Unit\process
View source
class CallbackTest extends MigrateProcessTestCase {
    
    /**
     * Tests callback with valid "callable".
     *
     * @dataProvider providerCallback
     */
    public function testCallback($callable) : void {
        $configuration = [
            'callable' => $callable,
        ];
        $this->plugin = new Callback($configuration, 'map', []);
        $value = $this->plugin
            ->transform('FooBar', $this->migrateExecutable, $this->row, 'destination_property');
        $this->assertSame('foobar', $value);
    }
    
    /**
     * Data provider for ::testCallback().
     */
    public static function providerCallback() {
        return [
            'function' => [
                'strtolower',
            ],
            'class method' => [
                [
                    self::class,
                    'strtolower',
                ],
            ],
        ];
    }
    
    /**
     * Test callback with valid "callable" and multiple arguments.
     *
     * @dataProvider providerCallbackArray
     */
    public function testCallbackArray($callable, $args, $result) : void {
        $configuration = [
            'callable' => $callable,
            'unpack_source' => TRUE,
        ];
        $this->plugin = new Callback($configuration, 'map', []);
        $value = $this->plugin
            ->transform($args, $this->migrateExecutable, $this->row, 'destination_property');
        $this->assertSame($result, $value);
    }
    
    /**
     * Data provider for ::testCallbackArray().
     */
    public static function providerCallbackArray() {
        return [
            'date format' => [
                'date',
                [
                    'Y-m-d',
                    995328000,
                ],
                '2001-07-17',
            ],
            'rtrim' => [
                'rtrim',
                [
                    'https://www.example.com/',
                    '/',
                ],
                'https://www.example.com',
            ],
            'str_replace' => [
                'str_replace',
                [
                    [
                        'One',
                        'two',
                    ],
                    [
                        '1',
                        '2',
                    ],
                    'One, two, three!',
                ],
                '1, 2, three!',
            ],
            'pi' => [
                'pi',
                [],
                pi(),
            ],
        ];
    }
    
    /**
     * Tests callback exceptions.
     *
     * @param string $message
     *   The expected exception message.
     * @param array $configuration
     *   The plugin configuration being tested.
     * @param string $class
     *   (optional) The expected exception class.
     * @param mixed $args
     *   (optional) Arguments to pass to the transform() method.
     *
     * @dataProvider providerCallbackExceptions
     */
    public function testCallbackExceptions($message, array $configuration, $class = 'InvalidArgumentException', $args = NULL) : void {
        $this->expectException($class);
        $this->expectExceptionMessage($message);
        $this->plugin = new Callback($configuration, 'map', []);
        $this->plugin
            ->transform($args, $this->migrateExecutable, $this->row, 'destination_property');
    }
    
    /**
     * Data provider for ::testCallbackExceptions().
     */
    public static function providerCallbackExceptions() {
        return [
            'not set' => [
                'message' => 'The "callable" must be set.',
                'configuration' => [],
            ],
            'invalid method' => [
                'message' => 'The "callable" must be a valid function or method.',
                'configuration' => [
                    'callable' => 'nonexistent_callable',
                ],
            ],
            'array required' => [
                'message' => "When 'unpack_source' is set, the source must be an array. Instead it was of type 'string'",
                'configuration' => [
                    'callable' => 'count',
                    'unpack_source' => TRUE,
                ],
                'class' => MigrateException::class,
                'args' => 'This string is not an array.',
            ],
        ];
    }
    
    /**
     * Makes a string lowercase for testing purposes.
     *
     * @param string $string
     *   The input string.
     *
     * @return string
     *   The lowercased string.
     *
     * @see \Drupal\Tests\migrate\Unit\process\CallbackTest::providerCallback()
     */
    public static function strToLower($string) {
        return mb_strtolower($string);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
CallbackTest::providerCallback public static function Data provider for ::testCallback().
CallbackTest::providerCallbackArray public static function Data provider for ::testCallbackArray().
CallbackTest::providerCallbackExceptions public static function Data provider for ::testCallbackExceptions().
CallbackTest::strToLower public static function Makes a string lowercase for testing purposes.
CallbackTest::testCallback public function Tests callback with valid "callable".
CallbackTest::testCallbackArray public function Test callback with valid "callable" and multiple arguments.
CallbackTest::testCallbackExceptions public function Tests callback exceptions.
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.
MigrateProcessTestCase::$migrateExecutable protected property
MigrateProcessTestCase::$plugin protected property 1
MigrateProcessTestCase::$row protected property
MigrateProcessTestCase::setUp protected function Overrides UnitTestCase::setUp 16
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.