Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
32 / 32
100.00% covered (success)
100.00%
1 / 1
CRAP
n/a
0 / 0
buildTestMessage
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3// ╔════════════════════════════════════════════════════════════╗
4// ║ MIT Licence (#Expat) - https://opensource.org/licenses/MIT ║
5// ║ Copyright 2026 Frederic Poeydomenge <dyno@phexium.com>     ║
6// ╚════════════════════════════════════════════════════════════╝
7
8declare(strict_types=1);
9
10pest()->group('unit');
11
12use Phexium\Plugin\Mailer\Adapter\InMemoryMailer;
13use Phexium\Plugin\Mailer\Message;
14use Phexium\Plugin\Mailer\MessageBuilder;
15
16function buildTestMessage(string $subject = 'Test'): Message
17{
18    return MessageBuilder::create()
19        ->from('sender@example.com')
20        ->to('to@example.com')
21        ->subject($subject)
22        ->textBody('Body')
23        ->build()
24    ;
25}
26
27describe('Sending', function (): void {
28    it('stores sent messages', function (): void {
29        $mailer = new InMemoryMailer();
30
31        $mailer->send(buildTestMessage('First'));
32        $mailer->send(buildTestMessage('Second'));
33
34        expect($mailer->getSentMessages())->toHaveCount(2);
35        expect($mailer->count())->toBe(2);
36    });
37
38    it('returns last sent message', function (): void {
39        $mailer = new InMemoryMailer();
40
41        $mailer->send(buildTestMessage('First'));
42        $mailer->send(buildTestMessage('Second'));
43
44        expect($mailer->getLastMessage()->subject)->toBe('Second');
45    });
46});
47
48describe('Reset', function (): void {
49    it('clears messages', function (): void {
50        $mailer = new InMemoryMailer();
51
52        $mailer->send(buildTestMessage());
53        $mailer->reset();
54
55        expect($mailer->getSentMessages())->toBe([]);
56        expect($mailer->count())->toBe(0);
57    });
58});