Release 2.27 (#5212)

This commit is contained in:
Kevin Papst
2024-12-22 22:50:42 +01:00
committed by GitHub
parent 4fdfb6f478
commit 4332ef95a2
56 changed files with 354 additions and 256 deletions

View File

@@ -22,16 +22,19 @@ use Symfony\Component\Mime\Email;
*/
class KimaiMailerTest extends TestCase
{
public function getSut(): KimaiMailer
public function getSut(?MailerInterface $mailer = null): KimaiMailer
{
$config = new MailConfiguration('zippel@example.com');
$mailer = $this->createMock(MailerInterface::class);
if ($mailer === null) {
$mailer = $this->createMock(MailerInterface::class);
$mailer->expects(self::once())->method('send');
}
return new KimaiMailer($config, $mailer);
}
public function testSendSetsFrom(): void
public function testSendSetsFromHeaderFromFallback(): void
{
$user = new User();
$user->setUserIdentifier('Testing');
@@ -47,4 +50,83 @@ class KimaiMailerTest extends TestCase
self::assertEquals([new Address('zippel@example.com', 'Kimai')], $message->getFrom());
}
public function testSendToUserSetsFromHeaderFromFallback(): void
{
$user = new User();
$user->setUserIdentifier('Testing');
$user->setEmail('foo@example.com');
$user->setAlias('Super User');
$user->setEnabled(true);
$mailer = $this->getSut();
$message = new Email();
$mailer->sendToUser($user, $message);
self::assertEquals([new Address('zippel@example.com', 'Kimai')], $message->getFrom());
}
public function testSendToUserSendsEmailWhenUserIsEnabledAndHasEmail(): void
{
$user = $this->createMock(User::class);
$user->method('isEnabled')->willReturn(true);
$user->method('getEmail')->willReturn('foo-bar@example.com');
$email = new Email();
self::assertEquals([], $email->getTo());
$mailer = $this->createMock(MailerInterface::class);
$mailer->expects(self::once())->method('send')->with($email);
$sut = $this->getSut($mailer);
$sut->sendToUser($user, $email);
self::assertEquals([new Address('zippel@example.com', 'Kimai')], $email->getFrom());
self::assertEquals([new Address('foo-bar@example.com')], $email->getTo());
}
public function testSendToUserDoesNotSendEmailWhenUserIsDisabled(): void
{
$user = $this->createMock(User::class);
$user->method('isEnabled')->willReturn(false);
$user->method('getEmail')->willReturn('user@example.com');
$email = new Email();
$mailer = $this->createMock(MailerInterface::class);
$mailer->expects(self::never())->method('send');
$sut = $this->getSut($mailer);
$sut->sendToUser($user, $email);
}
public function testSendToUserDoesNotSendEmailWhenUserHasNoEmail(): void
{
$user = $this->createMock(User::class);
$user->method('isEnabled')->willReturn(true);
$user->method('getEmail')->willReturn(null);
$email = new Email();
$mailer = $this->createMock(MailerInterface::class);
$mailer->expects(self::never())->method('send');
$sut = $this->getSut($mailer);
$sut->sendToUser($user, $email);
}
public function testSThrowsOnEmptyFromAddress(): void
{
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Missing email "from" address');
$user = $this->createMock(User::class);
$user->method('isEnabled')->willReturn(true);
$user->method('getEmail')->willReturn('test@example.com');
$email = new Email();
$config = new MailConfiguration('');
$mailer = $this->createMock(MailerInterface::class);
$sut = new KimaiMailer($config, $mailer);
$sut->sendToUser($user, $email);
}
}