mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-10 07:36:09 +01:00
120 lines
3.8 KiB
PHP
120 lines
3.8 KiB
PHP
|
<?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',
|
||
|
],
|
||
|
];
|
||
|
}
|
||
|
}
|