Extend functional tests

This commit is contained in:
Daniel Siepmann 2023-01-04 08:16:02 +01:00
parent eb2a143031
commit 7aed483b33
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
9 changed files with 234 additions and 15 deletions

View file

@ -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;
}
}

View file

@ -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(),
],
];
}
}

View file

@ -30,6 +30,7 @@ class AssignTemplateVariables
public function __invoke(AssignTemplateVariablesEvent $event): void
{
$event->setVariables(array_merge($event->getVariables(), [
'pluginName' => $event->getPluginName(),
'customVariable' => 'modifiedVariable',
]));
}

View file

@ -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]

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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);