-
-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathFakeMessageTest.php
More file actions
75 lines (57 loc) · 2.32 KB
/
FakeMessageTest.php
File metadata and controls
75 lines (57 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
use DirectoryTree\ImapEngine\Testing\FakeMessage;
test('it can be created with basic properties', function () {
$message = new FakeMessage(1, ['\\Seen'], 'Test message content');
expect($message)->toBeInstanceOf(FakeMessage::class);
expect($message->uid())->toBe(1);
expect((string) $message)->toBe('Test message content');
});
test('it returns uid correctly', function () {
$message = new FakeMessage(123);
expect($message->uid())->toBe(123);
});
test('it can be cast to string', function () {
$message = new FakeMessage(1, [], 'Hello world');
expect((string) $message)->toBe('Hello world');
});
test('it can store message content', function () {
$content = <<<'EOT'
From: "John Doe" <john@example.com>
To: "Jane Smith" <jane@example.com>
Subject: Test Subject
Date: Wed, 19 Feb 2025 12:34:56 -0500
Message-ID: <unique-id@example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Hello World
EOT;
$message = new FakeMessage(1, [], $content);
expect($message->date()->toDateTimeString())->toBe('2025-02-19 12:34:56');
expect($message->subject())->toBe('Test Subject');
expect($message->messageId())->toBe('unique-id@example.com');
expect($message->from()->email())->toBe('john@example.com');
expect($message->to())->toHaveCount(1);
expect($message->to()[0]->email())->toBe('jane@example.com');
expect((string) $message)->toBe($content);
});
test('it handles empty content', function () {
$message = new FakeMessage(1);
// Don't call methods that would trigger parse() on an empty message
expect($message->uid())->toBe(1);
expect((string) $message)->toBe('');
});
test('it can determine if two messages are the same', function () {
$message1 = new FakeMessage(1, ['\\Seen'], 'Test content');
$message2 = new FakeMessage(1, ['\\Seen'], 'Test content');
$message3 = new FakeMessage(2, ['\\Seen'], 'Test content');
$message4 = new FakeMessage(1, ['\\Draft'], 'Test content');
$message5 = new FakeMessage(1, ['\\Seen'], 'Different content');
// Same messages
expect($message1->is($message2))->toBeTrue();
// Different UID
expect($message1->is($message3))->toBeFalse();
// Different flags
expect($message1->is($message4))->toBeFalse();
// Different content
expect($message1->is($message5))->toBeFalse();
});