doTransform($value); $this->assertSame($expected, $actual); } /** * Provides test cases for LinkUriTest::testTransform(). * * @return array * An array of test cases, each which the following values: * - The value array to pass to LinkUri::transform(). * - The expected path returned by LinkUri::transform(). */ public function providerTestRouted() { $tests = []; $value = ['http://example.com']; $expected = 'http://example.com'; $tests['with_scheme'] = [$value, $expected]; $value = ['']; $expected = 'internal:/'; $tests['front'] = [$value, $expected]; return $tests; } /** * Tests that Non routed URLs throws an exception. * * @param array $value * The value to pass to LinkUri::transform(). * @param string $exception_message * The expected exception message. * * @dataProvider providerTestNotRouted */ public function testNotRouted(array $value, $exception_message) { $this->setExpectedException(MigrateException::class, $exception_message); $this->doTransform($value); } /** * Provides test cases for LinkUriTest::testNotRouted(). * * @return array * An array of test cases, each which the following values: * - The value array to pass to LinkUri::transform(). * - The expected path returned by LinkUri::transform(). * - (optional) A URL object that the path validator prophecy will return. */ public function providerTestNotRouted() { $tests = []; $message = 'The path "%s" failed validation.'; $value = ['/test']; $expected = 'internal:/test'; $exception_message = sprintf($message, $expected); $tests['leading_slash'] = [$value, $exception_message]; $value = ['test']; $expected = 'internal:/test'; $exception_message = sprintf($message, $expected); $tests['without_scheme'] = [$value, $exception_message]; return $tests; } /** * Transforms a link path into an 'internal:' or 'entity:' URI. * * @param array $value * The value to pass to LinkUri::transform(). * * @return string * The transformed link. */ public function doTransform(array $value) { $entityTypeManager = $this->container->get('entity_type.manager'); $routeBuilder = $this->container->get('router.builder'); $row = new Row(); $executable = $this->prophesize(MigrateExecutableInterface::class)->reveal(); $plugin = new LinkUri([], 'link_uri', [], $entityTypeManager, $routeBuilder); $actual = $plugin->transform($value, $executable, $row, 'destinationproperty'); return $actual; } }