migmag-1.0.x-dev/migmag_process/tests/src/Unit/Plugin/MigMagUuidGenerateTest.php
migmag_process/tests/src/Unit/Plugin/MigMagUuidGenerateTest.php
<?php namespace Drupal\Tests\migmag_process\Unit\Plugin; use Drupal\Component\Uuid\UuidInterface; use Drupal\Tests\migrate\Unit\process\MigrateProcessTestCase; use Drupal\migmag_process\Plugin\migrate\process\MigMagUuidGenerate; /** * Tests the migmag_uuid_generate process plugin. * * @coversDefaultClass \Drupal\migmag_process\Plugin\migrate\process\MigMagUuidGenerate * * @group migmag_process */ class MigMagUuidGenerateTest extends MigrateProcessTestCase { /** * The UUID service mock. * * @var \Drupal\Component\Uuid\UuidInterface|\PHPUnit\Framework\MockObject\MockObject */ protected $uuidGenerator; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $this->uuidGenerator = $this->getMockBuilder(UuidInterface::class) ->disableOriginalConstructor() ->getMock(); } /** * Tests the transformation of the provided values. * * @param mixed $value * The incoming value to test the transformation with. * @param string|null $generated_uuid * The UUID which should be "generated" by the actual UUID service. If NULL, * then the test expects that the UUID generator shouldn't be invoked. * @param string $expected_result * The expected generated UUID returned by the plugin. * * @covers ::transform * * @dataProvider providerTestTransform */ public function testTransform($value, ?string $generated_uuid, string $expected_result): void { if (is_string($generated_uuid)) { $this->uuidGenerator ->expects($this->once()) ->method('generate') ->willReturn($generated_uuid); } else { $this->uuidGenerator ->expects($this->never()) ->method('generate'); } $plugin = new MigMagUuidGenerate( ['plugin' => 'migmag_uuid_generate'], 'migmag_uuid_generate', [], $this->uuidGenerator ); $actual_result = $plugin->transform( $value, $this->migrateExecutable, $this->row, 'destination_property' ); $this->assertSame($expected_result, $actual_result); } /** * Data provider for ::testTransform. * * @return array[] * The test cases. */ public static function providerTestTransform(): array { // cspell:disable return [ 'no value' => [ 'value' => NULL, 'generated_uuid' => 'e4492b24-2e92-4913-8b61-a037305290e0', 'expected_result' => 'e4492b24-2e92-4913-8b61-a037305290e0', ], 'array value' => [ 'value' => [1], 'generated_uuid' => 'e4492b24-2e92-4913-8b61-a037305290e0', 'expected_result' => 'e4492b24-2e92-4913-8b61-a037305290e0', ], 'object value' => [ 'value' => (object) [1], 'generated_uuid' => 'e4492b24-2e92-4913-8b61-a037305290e0', 'expected_result' => 'e4492b24-2e92-4913-8b61-a037305290e0', ], 'invalid UUID' => [ 'value' => 'abcdef01-2345-6789-abcd-ef0123456789', 'generated_uuid' => 'e4492b24-2e92-4913-8b61-a037305290e0', 'expected_result' => 'e4492b24-2e92-4913-8b61-a037305290e0', ], 'valid UUID' => [ 'value' => 'bfcdcc46-d0ab-486d-b2b1-ceed954e1f2a', 'generated_uuid' => NULL, 'expected_result' => 'bfcdcc46-d0ab-486d-b2b1-ceed954e1f2a', ], 'valid UUID at the beginning' => [ 'value' => 'bfcdcc46-d0ab-486d-b2b1-ceed954e1f2foo-bar-baz', 'generated_uuid' => NULL, 'expected_result' => 'bfcdcc46-d0ab-486d-b2b1-ceed954e1f2f', ], 'valid UUID at the end' => [ 'value' => 'foo-bar-bazbfcdcc46-d0ab-486d-b2b1-ceed954e1f2a', 'generated_uuid' => NULL, 'expected_result' => 'bfcdcc46-d0ab-486d-b2b1-ceed954e1f2a', ], 'valid UUID in the middle' => [ 'value' => 'foo-bafcdcc46-d0ab-486d-b2b1-ceed954e1f2ar-baz', 'generated_uuid' => NULL, 'expected_result' => 'afcdcc46-d0ab-486d-b2b1-ceed954e1f2a', ], ]; // cspell:enable } }