mirror of
https://github.com/werkraum-media/calendar.git
synced 2024-05-20 12:14:07 +02:00
Extend functional tests
This commit is contained in:
parent
eb2a143031
commit
7aed483b33
|
@ -188,10 +188,8 @@ class CalendarController extends ActionController
|
|||
/**
|
||||
* Checks for TypoScript and transforms TypoScript into expected value.
|
||||
* Allows to define defaults other than "now" for arguments.
|
||||
*
|
||||
* @return int|\DateTimeImmutable
|
||||
*/
|
||||
private function getDefaultArgumentValue(string $argumentName)
|
||||
private function getDefaultArgumentValue(string $argumentName): string
|
||||
{
|
||||
$arguments = $this->typoScriptService->convertPlainArrayToTypoScriptArray(
|
||||
$this->settings['arguments'] ?? []
|
||||
|
@ -210,10 +208,6 @@ class CalendarController extends ActionController
|
|||
$fallbackValues[$argumentName]
|
||||
);
|
||||
|
||||
if ($argumentName === 'day') {
|
||||
return new \DateTimeImmutable($value);
|
||||
}
|
||||
|
||||
return (int) $value;
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,15 +23,31 @@ declare(strict_types=1);
|
|||
|
||||
namespace WerkraumMedia\CalendarExample\Domain;
|
||||
|
||||
use WerkraumMedia\Calendar\Domain\Model\Context;
|
||||
use WerkraumMedia\Calendar\Domain\Model\ContextSpecificFactory;
|
||||
use WerkraumMedia\Calendar\Domain\Model\Day;
|
||||
use WerkraumMedia\Calendar\Domain\Model\ForeignDataFactory;
|
||||
|
||||
class ExampleDataFactory implements ForeignDataFactory
|
||||
class ExampleDataFactory implements ForeignDataFactory, ContextSpecificFactory
|
||||
{
|
||||
/**
|
||||
* @var Context
|
||||
*/
|
||||
private $context;
|
||||
|
||||
public function setContext(Context $context): void
|
||||
{
|
||||
$this->context = $context;
|
||||
}
|
||||
|
||||
public function getData(Day $day)
|
||||
{
|
||||
return [
|
||||
'exampleKey' => 'exampleValue',
|
||||
'context' => [
|
||||
'tableName' => $this->context->getTableName(),
|
||||
'databaseRow' => $this->context->getDatabaseRow(),
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ class AssignTemplateVariables
|
|||
public function __invoke(AssignTemplateVariablesEvent $event): void
|
||||
{
|
||||
$event->setVariables(array_merge($event->getVariables(), [
|
||||
'pluginName' => $event->getPluginName(),
|
||||
'customVariable' => 'modifiedVariable',
|
||||
]));
|
||||
}
|
||||
|
|
|
@ -10,3 +10,16 @@ page = PAGE
|
|||
page {
|
||||
10 =< tt_content.calendar_example.20
|
||||
}
|
||||
|
||||
[request.getQueryParams()['typoScriptDefaults'] == 1]
|
||||
plugin.tx_calendar_example {
|
||||
settings {
|
||||
arguments {
|
||||
year = 1988
|
||||
month = 11
|
||||
week = 12
|
||||
day = 1988-11-03
|
||||
}
|
||||
}
|
||||
}
|
||||
[GLOBAL]
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
<h2>{day.dateTimeInstance -> f:format.date(format: 'd.m.Y')}</h2>
|
||||
|
||||
{day.foreignData.exampleKey}
|
||||
Table: {day.foreignData.context.tableName}
|
||||
Title: {day.foreignData.context.databaseRow.title}
|
||||
|
||||
{customVariable}
|
||||
PluginName: {pluginName}
|
||||
</html>
|
||||
|
|
|
@ -7,8 +7,11 @@
|
|||
<f:for each="{week.days}" as="day">
|
||||
{day.dateTimeInstance -> f:format.date(format: 'd')}
|
||||
{day.foreignData.exampleKey}
|
||||
Table: {day.foreignData.context.tableName}
|
||||
Title: {day.foreignData.context.databaseRow.title}
|
||||
</f:for>
|
||||
</f:for>
|
||||
|
||||
{customVariable}
|
||||
PluginName: {pluginName}
|
||||
</html>
|
||||
|
|
|
@ -6,7 +6,10 @@
|
|||
<f:for each="{week.days}" as="day">
|
||||
{day.dateTimeInstance -> f:format.date(format: 'd')}
|
||||
{day.foreignData.exampleKey}
|
||||
Table: {day.foreignData.context.tableName}
|
||||
Title: {day.foreignData.context.databaseRow.title}
|
||||
</f:for>
|
||||
|
||||
{customVariable}
|
||||
PluginName: {pluginName}
|
||||
</html>
|
||||
|
|
|
@ -8,9 +8,12 @@
|
|||
<f:for each="{week.days}" as="day">
|
||||
{day.dateTimeInstance -> f:format.date(format: 'd')}
|
||||
{day.foreignData.exampleKey}
|
||||
Table: {day.foreignData.context.tableName}
|
||||
Title: {day.foreignData.context.databaseRow.title}
|
||||
</f:for>
|
||||
</f:for>
|
||||
</f:for>
|
||||
|
||||
{customVariable}
|
||||
PluginName: {pluginName}
|
||||
</html>
|
||||
|
|
|
@ -67,6 +67,35 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
self::assertStringContainsString('modifiedVariable', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function pluginNameForCurrentDay(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('PluginName: Example', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function contextForCurrentDay(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('Table: pages', $html);
|
||||
self::assertStringContainsString('Title: Page Title', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
@ -85,7 +114,22 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
/**
|
||||
* @test
|
||||
*/
|
||||
public function customDataForProvidedDay(): void
|
||||
public function configuredDay(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('typoScriptDefaults', '1');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('03.11.1988', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function providedDay(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
|
@ -95,7 +139,6 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('03.11.2020', $html);
|
||||
self::assertStringContainsString('exampleValue', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -113,6 +156,37 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
self::assertStringContainsString('modifiedVariable', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function pluginNameForCurrentWeek(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'week');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('PluginName: Example', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function contextForCurrentWeek(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'week');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('Table: pages', $html);
|
||||
self::assertStringContainsString('Title: Page Title', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
@ -132,7 +206,23 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
/**
|
||||
* @test
|
||||
*/
|
||||
public function customDataForProvidedWeek(): void
|
||||
public function configuredWeek(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'week');
|
||||
$request = $request->withQueryParameter('typoScriptDefaults', '1');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('12 1988', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function providedWeek(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
|
@ -144,7 +234,6 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('02 2020', $html);
|
||||
self::assertStringContainsString('exampleValue', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -162,6 +251,37 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
self::assertStringContainsString('modifiedVariable', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function pluginNameForCurrentMonth(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'month');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('PluginName: Example', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function contextForCurrentMonth(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'month');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('Table: pages', $html);
|
||||
self::assertStringContainsString('Title: Page Title', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
@ -181,7 +301,23 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
/**
|
||||
* @test
|
||||
*/
|
||||
public function customDataForProvidedMonth(): void
|
||||
public function configuredMonth(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'month');
|
||||
$request = $request->withQueryParameter('typoScriptDefaults', '1');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('November 1988', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function providedMonth(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
|
@ -211,6 +347,37 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
self::assertStringContainsString('modifiedVariable', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function pluginNameForCurrentYear(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'year');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('PluginName: Example', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function contextForCurrentYear(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'year');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('Table: pages', $html);
|
||||
self::assertStringContainsString('Title: Page Title', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
@ -230,7 +397,23 @@ class CalendarControllerTest extends FunctionalTestCase
|
|||
/**
|
||||
* @test
|
||||
*/
|
||||
public function customDataForProvidedYear(): void
|
||||
public function configuredYear(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
$request = $request->withQueryParameter('tx_calendar_example[action]', 'year');
|
||||
$request = $request->withQueryParameter('typoScriptDefaults', '1');
|
||||
$result = $this->executeFrontendRequest($request);
|
||||
|
||||
self::assertSame(200, $result->getStatusCode());
|
||||
$html = $result->getBody()->__toString();
|
||||
self::assertStringContainsString('1988', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function providedYear(): void
|
||||
{
|
||||
$request = new InternalRequest();
|
||||
$request = $request->withPageId(1);
|
||||
|
|
Loading…
Reference in a new issue