mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-24 19:16:10 +01:00
Weimar events
Add event to alter the View Variables in foreign code. This is used for grouped dates list on weimar.
This commit is contained in:
parent
0a56a5d482
commit
0fe793307a
9 changed files with 693 additions and 35 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace Wrm\Events\Controller;
|
namespace Wrm\Events\Controller;
|
||||||
|
|
||||||
use TYPO3\CMS\Core\Database\QueryGenerator;
|
use TYPO3\CMS\Core\EventDispatcher\EventDispatcher;
|
||||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||||
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
||||||
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
|
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
|
||||||
|
@ -12,6 +12,8 @@ use Wrm\Events\Domain\Model\Dto\DateDemandFactory;
|
||||||
use Wrm\Events\Domain\Repository\CategoryRepository;
|
use Wrm\Events\Domain\Repository\CategoryRepository;
|
||||||
use Wrm\Events\Domain\Repository\DateRepository;
|
use Wrm\Events\Domain\Repository\DateRepository;
|
||||||
use Wrm\Events\Domain\Repository\RegionRepository;
|
use Wrm\Events\Domain\Repository\RegionRepository;
|
||||||
|
use Wrm\Events\Events\Controller\DateListVariables;
|
||||||
|
use Wrm\Events\Events\Controller\DateSearchVariables;
|
||||||
use Wrm\Events\Service\DataProcessingForModels;
|
use Wrm\Events\Service\DataProcessingForModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,43 +42,29 @@ class DateController extends AbstractController
|
||||||
protected $categoryRepository;
|
protected $categoryRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var QueryGenerator
|
* @var EventDispatcher
|
||||||
*/
|
*/
|
||||||
protected $queryGenerator;
|
protected $eventDispatcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var DataProcessingForModels
|
* @var DataProcessingForModels
|
||||||
*/
|
*/
|
||||||
protected $dataProcessing;
|
protected $dataProcessing;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
protected $pluginSettings;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @param RegionRepository $regionRepository
|
|
||||||
* @param DateRepository $dateRepository
|
|
||||||
* @param CategoryRepository $categoryRepository
|
|
||||||
*/
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
DateDemandFactory $demandFactory,
|
DateDemandFactory $demandFactory,
|
||||||
RegionRepository $regionRepository,
|
RegionRepository $regionRepository,
|
||||||
DateRepository $dateRepository,
|
DateRepository $dateRepository,
|
||||||
CategoryRepository $categoryRepository
|
CategoryRepository $categoryRepository,
|
||||||
|
DataProcessingForModels $dataProcessing,
|
||||||
|
EventDispatcher $eventDispatcher
|
||||||
) {
|
) {
|
||||||
$this->demandFactory = $demandFactory;
|
$this->demandFactory = $demandFactory;
|
||||||
$this->regionRepository = $regionRepository;
|
$this->regionRepository = $regionRepository;
|
||||||
$this->dateRepository = $dateRepository;
|
$this->dateRepository = $dateRepository;
|
||||||
$this->categoryRepository = $categoryRepository;
|
$this->categoryRepository = $categoryRepository;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param DataProcessingForModels $dataProcessing
|
|
||||||
*/
|
|
||||||
public function injectDataProcessingForModels(DataProcessingForModels $dataProcessing): void
|
|
||||||
{
|
|
||||||
$this->dataProcessing = $dataProcessing;
|
$this->dataProcessing = $dataProcessing;
|
||||||
|
$this->eventDispatcher = $eventDispatcher;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function initializeAction(): void
|
protected function initializeAction(): void
|
||||||
|
@ -86,9 +74,6 @@ class DateController extends AbstractController
|
||||||
$this->demandFactory->setContentObjectRenderer($contentObject);
|
$this->demandFactory->setContentObjectRenderer($contentObject);
|
||||||
}
|
}
|
||||||
$this->dataProcessing->setConfigurationManager($this->configurationManager);
|
$this->dataProcessing->setConfigurationManager($this->configurationManager);
|
||||||
$this->pluginSettings = $this->configurationManager->getConfiguration(
|
|
||||||
ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -110,11 +95,15 @@ class DateController extends AbstractController
|
||||||
$demand = $this->demandFactory->fromSettings($this->settings);
|
$demand = $this->demandFactory->fromSettings($this->settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->assignMultiple([
|
$event = $this->eventDispatcher->dispatch(new DateListVariables(
|
||||||
'search' => $search,
|
$search,
|
||||||
'demand' => $demand,
|
$demand,
|
||||||
'dates' => $this->dateRepository->findByDemand($demand),
|
$this->dateRepository->findByDemand($demand)
|
||||||
]);
|
));
|
||||||
|
if (!$event instanceof DateListVariables) {
|
||||||
|
throw new \Exception('Did not retrieve DateSearchVariables from event dispatcher, got: ' . get_class($event), 1657542318);
|
||||||
|
}
|
||||||
|
$this->view->assignMultiple($event->getVariablesForView());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -131,18 +120,26 @@ class DateController extends AbstractController
|
||||||
unset($arguments['events_search']);
|
unset($arguments['events_search']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For legacy systems.
|
||||||
$this->view->assignMultiple([
|
$this->view->assignMultiple([
|
||||||
'searchword' => $arguments['searchword'] ?? '',
|
'searchword' => $arguments['searchword'] ?? '',
|
||||||
'selRegion' => $arguments['region'] ?? '',
|
'selRegion' => $arguments['region'] ?? '',
|
||||||
'start' => $arguments['start'] ?? '',
|
'start' => $arguments['start'] ?? '',
|
||||||
'end' => $arguments['end'] ?? '',
|
'end' => $arguments['end'] ?? '',
|
||||||
'considerDate' => $arguments['considerDate'] ?? '',
|
'considerDate' => $arguments['considerDate'] ?? '',
|
||||||
'search' => $search,
|
|
||||||
'demand' => DateDemand::createFromRequestValues($arguments, $this->settings),
|
|
||||||
'regions' => $this->regionRepository->findAll(),
|
|
||||||
'categories' => $this->categoryRepository->findAllCurrentlyAssigned($this->settings['uids']['categoriesParent'] ?? 0, 'categories'),
|
|
||||||
'features' => $this->categoryRepository->findAllCurrentlyAssigned($this->settings['uids']['featuresParent'] ?? 0, 'features'),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$event = $this->eventDispatcher->dispatch(new DateSearchVariables(
|
||||||
|
$search,
|
||||||
|
DateDemand::createFromRequestValues($arguments, $this->settings),
|
||||||
|
$this->regionRepository->findAll(),
|
||||||
|
$this->categoryRepository->findAllCurrentlyAssigned($this->settings['uids']['categoriesParent'] ?? 0, 'categories'),
|
||||||
|
$this->categoryRepository->findAllCurrentlyAssigned($this->settings['uids']['featuresParent'] ?? 0, 'features')
|
||||||
|
));
|
||||||
|
if (!$event instanceof DateSearchVariables) {
|
||||||
|
throw new \Exception('Did not retrieve DateSearchVariables from event dispatcher, got: ' . get_class($event), 1657542318);
|
||||||
|
}
|
||||||
|
$this->view->assignMultiple($event->getVariablesForView());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function teaserAction(): void
|
public function teaserAction(): void
|
||||||
|
|
|
@ -132,7 +132,7 @@ class DateDemand
|
||||||
$instance->setUserCategories($submittedValues['userCategories']);
|
$instance->setUserCategories($submittedValues['userCategories']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($submittedValues['features'])) {
|
if (isset($submittedValues['features']) && is_array($submittedValues['features'])) {
|
||||||
$instance->setFeatures($submittedValues['features']);
|
$instance->setFeatures($submittedValues['features']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -534,6 +534,9 @@ class Event extends AbstractEntity
|
||||||
$this->categories->attach($category);
|
$this->categories->attach($category);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<Category>
|
||||||
|
*/
|
||||||
public function getCategories(): array
|
public function getCategories(): array
|
||||||
{
|
{
|
||||||
$categories = $this->categories->toArray();
|
$categories = $this->categories->toArray();
|
||||||
|
@ -553,6 +556,9 @@ class Event extends AbstractEntity
|
||||||
$this->categories = $categories;
|
$this->categories = $categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<Category>
|
||||||
|
*/
|
||||||
public function getFeatures(): array
|
public function getFeatures(): array
|
||||||
{
|
{
|
||||||
$features = $this->features->toArray();
|
$features = $this->features->toArray();
|
||||||
|
|
76
Classes/Events/Controller/DateListVariables.php
Normal file
76
Classes/Events/Controller/DateListVariables.php
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Wrm\Events\Events\Controller;
|
||||||
|
|
||||||
|
use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult;
|
||||||
|
use Wrm\Events\Domain\Model\Date;
|
||||||
|
use Wrm\Events\Domain\Model\Dto\DateDemand;
|
||||||
|
|
||||||
|
final class DateListVariables
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $search;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var DateDemand
|
||||||
|
*/
|
||||||
|
private $demand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var QueryResult<Date>
|
||||||
|
*/
|
||||||
|
private $dates;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $variables = [];
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
array $search,
|
||||||
|
DateDemand $demand,
|
||||||
|
QueryResult $dates
|
||||||
|
) {
|
||||||
|
$this->search = $search;
|
||||||
|
$this->demand = $demand;
|
||||||
|
$this->dates = $dates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSearch(): array
|
||||||
|
{
|
||||||
|
return $this->search;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDemand(): DateDemand
|
||||||
|
{
|
||||||
|
return $this->demand;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return QueryResult<Date>
|
||||||
|
*/
|
||||||
|
public function getDates(): QueryResult
|
||||||
|
{
|
||||||
|
return $this->dates;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param mixed $value
|
||||||
|
*/
|
||||||
|
public function addVariable(string $key, $value): void
|
||||||
|
{
|
||||||
|
$this->variables[$key] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getVariablesForView(): array
|
||||||
|
{
|
||||||
|
return array_merge([
|
||||||
|
'search' => $this->search,
|
||||||
|
'demand' => $this->demand,
|
||||||
|
'dates' => $this->dates,
|
||||||
|
], $this->variables);
|
||||||
|
}
|
||||||
|
}
|
105
Classes/Events/Controller/DateSearchVariables.php
Normal file
105
Classes/Events/Controller/DateSearchVariables.php
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Wrm\Events\Events\Controller;
|
||||||
|
|
||||||
|
use TYPO3\CMS\Extbase\Domain\Model\Category;
|
||||||
|
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
|
||||||
|
use Wrm\Events\Domain\Model\Dto\DateDemand;
|
||||||
|
use Wrm\Events\Domain\Model\Region;
|
||||||
|
|
||||||
|
class DateSearchVariables
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $search;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var DateDemand
|
||||||
|
*/
|
||||||
|
private $demand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var QueryResultInterface<Region>
|
||||||
|
*/
|
||||||
|
private $regions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array<Category>
|
||||||
|
*/
|
||||||
|
private $categories;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array<Category>
|
||||||
|
*/
|
||||||
|
private $features;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $variables = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param QueryResultInterface<Region> $regions
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
array $search,
|
||||||
|
DateDemand $demand,
|
||||||
|
QueryResultInterface $regions,
|
||||||
|
array $categories,
|
||||||
|
array $features
|
||||||
|
) {
|
||||||
|
$this->search = $search;
|
||||||
|
$this->demand = $demand;
|
||||||
|
$this->regions = $regions;
|
||||||
|
$this->categories = $categories;
|
||||||
|
$this->features = $features;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSearch(): array
|
||||||
|
{
|
||||||
|
return $this->search;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDemand(): DateDemand
|
||||||
|
{
|
||||||
|
return $this->demand;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return QueryResultInterface<Region>
|
||||||
|
*/
|
||||||
|
public function getRegions(): QueryResultInterface
|
||||||
|
{
|
||||||
|
return $this->regions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCategories(): array
|
||||||
|
{
|
||||||
|
return $this->categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFeatures(): array
|
||||||
|
{
|
||||||
|
return $this->features;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param mixed $value
|
||||||
|
*/
|
||||||
|
public function addVariable(string $key, $value): void
|
||||||
|
{
|
||||||
|
$this->variables[$key] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getVariablesForView(): array
|
||||||
|
{
|
||||||
|
return array_merge([
|
||||||
|
'search' => $this->search,
|
||||||
|
'demand' => $this->demand,
|
||||||
|
'regions' => $this->regions,
|
||||||
|
'categories' => $this->categories,
|
||||||
|
'features' => $this->features,
|
||||||
|
], $this->variables);
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,6 +39,11 @@ Features
|
||||||
|
|
||||||
It is possible to add them to user submitted filter.
|
It is possible to add them to user submitted filter.
|
||||||
|
|
||||||
|
* Add PSR-14 events to Date controller. Those events allow to alter the variables
|
||||||
|
assigned to views within list and search action.
|
||||||
|
This might be used to add further variables or to alter variables, e.g. hide some
|
||||||
|
categories, group dates, etc.
|
||||||
|
|
||||||
Fixes
|
Fixes
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
186
Tests/Unit/Events/Controller/DateListVariablesTest.php
Normal file
186
Tests/Unit/Events/Controller/DateListVariablesTest.php
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Wrm\Tests\Unit\Events\Controller;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult;
|
||||||
|
use Wrm\Events\Domain\Model\Dto\DateDemand;
|
||||||
|
use Wrm\Events\Events\Controller\DateListVariables;
|
||||||
|
use Wrm\Events\Tests\ProphecyTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Wrm\Events\Events\Controller\DateListVariables
|
||||||
|
*/
|
||||||
|
class DateListVariablesTest extends TestCase
|
||||||
|
{
|
||||||
|
use ProphecyTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function canBeCreated(): void
|
||||||
|
{
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[],
|
||||||
|
new DateDemand(),
|
||||||
|
$this->prophesize(QueryResult::class)->reveal()
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertInstanceOf(
|
||||||
|
DateListVariables::class,
|
||||||
|
$subject
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialSearch(): void
|
||||||
|
{
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$this->prophesize(QueryResult::class)->reveal()
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$subject->getSearch()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialDemand(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$this->prophesize(QueryResult::class)->reveal()
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
$demand,
|
||||||
|
$subject->getDemand()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialDates(): void
|
||||||
|
{
|
||||||
|
$dates = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$dates
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
$dates,
|
||||||
|
$subject->getDates()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialVariablesForView(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$dates = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$dates
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'search' => [
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
'demand' => $demand,
|
||||||
|
'dates' => $dates,
|
||||||
|
],
|
||||||
|
$subject->getVariablesForView()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsVariablesForViewWithAddedVariables(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$dates = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$dates
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject->addVariable('variable 1', 'Value 1');
|
||||||
|
$subject->addVariable('variable 2', 'Value 2');
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'search' => [
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
'demand' => $demand,
|
||||||
|
'dates' => $dates,
|
||||||
|
'variable 1' => 'Value 1',
|
||||||
|
'variable 2' => 'Value 2',
|
||||||
|
],
|
||||||
|
$subject->getVariablesForView()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsVariablesForViewWithOverwrittenVariables(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$dates = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateListVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$dates
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject->addVariable('variable 1', 'Value 1');
|
||||||
|
$subject->addVariable('variable 1', 'Value 2');
|
||||||
|
$subject->addVariable('dates', 'Value 2');
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'search' => [
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
'demand' => $demand,
|
||||||
|
'dates' => 'Value 2',
|
||||||
|
'variable 1' => 'Value 2',
|
||||||
|
],
|
||||||
|
$subject->getVariablesForView()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
278
Tests/Unit/Events/Controller/DateSearchVariablesTest.php
Normal file
278
Tests/Unit/Events/Controller/DateSearchVariablesTest.php
Normal file
|
@ -0,0 +1,278 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Wrm\Events\Tests\Unit\Events\Controller;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult;
|
||||||
|
use Wrm\Events\Domain\Model\Dto\DateDemand;
|
||||||
|
use Wrm\Events\Events\Controller\DateSearchVariables;
|
||||||
|
use Wrm\Events\Tests\ProphecyTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \Wrm\Events\Events\Controller\DateSearchVariables
|
||||||
|
*/
|
||||||
|
class DateSearchVariablesTest extends TestCase
|
||||||
|
{
|
||||||
|
use ProphecyTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function canBeCreated(): void
|
||||||
|
{
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$this->prophesize(QueryResult::class)->reveal(),
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertInstanceOf(
|
||||||
|
DateSearchVariables::class,
|
||||||
|
$subject
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitializeSearch(): void
|
||||||
|
{
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$this->prophesize(QueryResult::class)->reveal(),
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$subject->getSearch()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitializeDemand(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$this->prophesize(QueryResult::class)->reveal(),
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
$demand,
|
||||||
|
$subject->getDemand()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialRegions(): void
|
||||||
|
{
|
||||||
|
$regions = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$regions,
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
$regions,
|
||||||
|
$subject->getRegions()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialCategories(): void
|
||||||
|
{
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$this->prophesize(QueryResult::class)->reveal(),
|
||||||
|
[
|
||||||
|
['example category'],
|
||||||
|
],
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
['example category'],
|
||||||
|
],
|
||||||
|
$subject->getCategories()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialFeatures(): void
|
||||||
|
{
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
],
|
||||||
|
new DateDemand(),
|
||||||
|
$this->prophesize(QueryResult::class)->reveal(),
|
||||||
|
[
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['example feature category'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
['example feature category'],
|
||||||
|
],
|
||||||
|
$subject->getFeatures()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsInitialVariablesForView(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$regions = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$regions,
|
||||||
|
[
|
||||||
|
['example category category'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['example feature category'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'search' => [
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
'demand' => $demand,
|
||||||
|
'regions' => $regions,
|
||||||
|
'categories' => [
|
||||||
|
['example category category'],
|
||||||
|
],
|
||||||
|
'features' => [
|
||||||
|
['example feature category'],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
$subject->getVariablesForView()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsVariablesForViewWithAddedVariables(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$regions = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$regions,
|
||||||
|
[
|
||||||
|
['example category category'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['example feature category'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject->addVariable('variable 1', 'Value 1');
|
||||||
|
$subject->addVariable('variable 2', 'Value 2');
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'search' => [
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
'demand' => $demand,
|
||||||
|
'regions' => $regions,
|
||||||
|
'categories' => [
|
||||||
|
['example category category'],
|
||||||
|
],
|
||||||
|
'features' => [
|
||||||
|
['example feature category'],
|
||||||
|
],
|
||||||
|
'variable 1' => 'Value 1',
|
||||||
|
'variable 2' => 'Value 2',
|
||||||
|
],
|
||||||
|
$subject->getVariablesForView()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function returnsVariablesForViewWithOverwrittenVariables(): void
|
||||||
|
{
|
||||||
|
$demand = new DateDemand();
|
||||||
|
$regions = $this->prophesize(QueryResult::class)->reveal();
|
||||||
|
$subject = new DateSearchVariables(
|
||||||
|
[
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
$demand,
|
||||||
|
$regions,
|
||||||
|
[
|
||||||
|
['example category category'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['example feature category'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject->addVariable('variable 1', 'Value 1');
|
||||||
|
$subject->addVariable('variable 1', 'Value 2');
|
||||||
|
$subject->addVariable('features', 'Value 2');
|
||||||
|
|
||||||
|
self::assertSame(
|
||||||
|
[
|
||||||
|
'search' => [
|
||||||
|
'executed' => '1',
|
||||||
|
],
|
||||||
|
'demand' => $demand,
|
||||||
|
'regions' => $regions,
|
||||||
|
'categories' => [
|
||||||
|
['example category category'],
|
||||||
|
],
|
||||||
|
'features' => 'Value 2',
|
||||||
|
'variable 1' => 'Value 2',
|
||||||
|
],
|
||||||
|
$subject->getVariablesForView()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,3 +34,8 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: Classes/Service/DestinationDataImportService.php
|
path: Classes/Service/DestinationDataImportService.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Method Wrm\\\\Events\\\\Service\\\\DestinationDataImportService\\\\CategoriesAssignment\\:\\:getCategories\\(\\) should return TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage\\<Wrm\\\\Events\\\\Domain\\\\Model\\\\Category\\> but returns TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage\\<mixed\\>\\.$#"
|
||||||
|
count: 2
|
||||||
|
path: Classes/Service/DestinationDataImportService/CategoriesAssignment.php
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue