<?php namespace Wrm\Events\Tests\Unit\Service\DestinationDataImportService; use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\Prophecy\ObjectProphecy; use TYPO3\CMS\Extbase\Configuration\ConfigurationManager; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use Wrm\Events\Domain\DestinationData\Import; use Wrm\Events\Service\DestinationDataImportService\UrlFactory; use PHPUnit\Framework\TestCase; /** * @covers \Wrm\Events\Service\DestinationDataImportService\UrlFactory */ class UrlFactoryTest extends TestCase { use ProphecyTrait; /** * @test */ public function canBeCreated(): void { $configurationManager = $this->prophesize(ConfigurationManager::class); $configurationManager->getConfiguration( ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, 'Events', 'Pi1' )->willReturn([]); $subject = new UrlFactory( $configurationManager->reveal() ); self::assertInstanceOf( UrlFactory::class, $subject ); } /** * @test * @dataProvider possibleImports */ public function createSearchResultUrl( ObjectProphecy $import, array $settings, string $expectedResult ): void { $configurationManager = $this->prophesize(ConfigurationManager::class); $configurationManager->getConfiguration( ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, 'Events', 'Pi1' )->willReturn(['destinationData' => $settings]); $subject = new UrlFactory( $configurationManager->reveal() ); $result = $subject->createSearchResultUrl($import->reveal()); self::assertSame( $result, $expectedResult ); } public function possibleImports(): array { return [ 'All provided' => [ 'import' => (function () { $import = $this->prophesize(Import::class); $import->getRestExperience()->willReturn('experience'); return $import; })(), 'settings' => [ 'restUrl' => 'https://example.com/path', 'license' => 'licenseKey', 'restType' => 'restType', 'restMode' => 'restMode', 'restLimit' => 'restLimit', 'restTemplate' => 'restTemplate', ], 'expectedResult' => 'https://example.com/path?experience=experience&licensekey=licenseKey&type=restType&mode=restMode&limit=restLimit&template=restTemplate', ], 'All missing' => [ 'import' => (function () { $import = $this->prophesize(Import::class); $import->getRestExperience()->willReturn(''); return $import; })(), 'settings' => [ 'restUrl' => 'https://example.com/path', ], 'expectedResult' => 'https://example.com/path', ], 'Some missing' => [ 'import' => (function () { $import = $this->prophesize(Import::class); $import->getRestExperience()->willReturn('experience'); return $import; })(), 'settings' => [ 'restUrl' => 'https://example.com/path', 'license' => 'licenseKey', 'restLimit' => 'restLimit', 'restTemplate' => 'restTemplate', ], 'expectedResult' => 'https://example.com/path?experience=experience&licensekey=licenseKey&limit=restLimit&template=restTemplate', ], ]; } }