feat: instant preview of edited email template

This commit is contained in:
Björn Fromme
2026-08-17 12:17:05 +02:00
parent 489aafed3e
commit 0e1df6da7c
12 changed files with 250 additions and 58 deletions
+58
View File
@@ -179,6 +179,64 @@ class EmailTextRendererTest extends KernelTestCase
$this->assertSame('Einsatz Ski & Snowboard', $rendered->subject);
}
/**
* The admin preview renders what is in the form, not what is in the database - a
* preview showing the stored wording while the admin types a new one would be
* pointless.
*/
public function testGivenValuesAreRenderedInsteadOfTheStoredOnes(): void
{
$repository = $this->createMock(EmailTextRepository::class);
$repository
->method('findByKey')
->willReturn($this->emailText(subject: 'Gespeichert', body: 'Gespeicherter Text'))
;
self::bootKernel();
$renderer = new EmailTextRenderer(
self::getContainer()->get(EmailTextCatalog::class),
$repository
);
$rendered = $renderer->renderValues(
EmailTextKey::APPLICATION_REJECTED,
'Entwurf {destination}',
'Überschrift',
'Entwurfstext *fett*',
['destination' => 'Skireise']
);
$this->assertSame('Entwurf Skireise', $rendered->subject);
$this->assertSame('Überschrift', $rendered->headline);
$this->assertSame('<p>Entwurfstext <strong>fett</strong></p>', $rendered->bodyHtml);
}
/**
* A preview is asked for while the form is still half filled.
*/
public function testEmptyDraftValuesRenderWithoutFallingBackToTheDefault(): void
{
self::bootKernel();
$renderer = new EmailTextRenderer(
self::getContainer()->get(EmailTextCatalog::class),
$this->createMock(EmailTextRepository::class)
);
$rendered = $renderer->renderValues(
EmailTextKey::APPLICATION_REJECTED,
null,
null,
null,
['destination' => 'Skireise']
);
$this->assertSame('', $rendered->subject);
$this->assertSame('', $rendered->headline);
$this->assertSame('', $rendered->bodyHtml);
}
/**
* @param array<string, string|int|null> $placeholders
*/