Skip to content

Commit 7943c1c

Browse files
authored
Merge pull request #87 from sertxudev/sertxudev/failing-test
Fake mailbox queries fail when adding any query clauses
2 parents 89a0ba3 + a26f8b0 commit 7943c1c

4 files changed

Lines changed: 27 additions & 6 deletions

File tree

src/MessageQuery.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,16 @@
1313
use DirectoryTree\ImapEngine\Enums\ImapFlag;
1414
use DirectoryTree\ImapEngine\Exceptions\ImapCommandException;
1515
use DirectoryTree\ImapEngine\Pagination\LengthAwarePaginator;
16-
use DirectoryTree\ImapEngine\Support\ForwardsCalls;
1716
use DirectoryTree\ImapEngine\Support\Str;
1817
use Illuminate\Support\Collection;
1918
use Illuminate\Support\ItemNotFoundException;
20-
use Illuminate\Support\Traits\Conditionable;
2119

2220
/**
2321
* @mixin \DirectoryTree\ImapEngine\Connection\ImapQueryBuilder
2422
*/
2523
class MessageQuery implements MessageQueryInterface
2624
{
27-
use Conditionable, ForwardsCalls, QueriesMessages;
25+
use QueriesMessages;
2826

2927
/**
3028
* Constructor.

src/QueriesMessages.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
namespace DirectoryTree\ImapEngine;
44

55
use DirectoryTree\ImapEngine\Connection\ImapQueryBuilder;
6+
use DirectoryTree\ImapEngine\Support\ForwardsCalls;
7+
use Illuminate\Support\Traits\Conditionable;
68

79
trait QueriesMessages
810
{
11+
use Conditionable, ForwardsCalls;
12+
913
/**
1014
* The query builder instance.
1115
*/

src/Testing/FakeMessageQuery.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace DirectoryTree\ImapEngine\Testing;
44

55
use DirectoryTree\ImapEngine\Collections\MessageCollection;
6+
use DirectoryTree\ImapEngine\Connection\ImapQueryBuilder;
67
use DirectoryTree\ImapEngine\Enums\ImapFetchIdentifier;
78
use DirectoryTree\ImapEngine\MessageInterface;
89
use DirectoryTree\ImapEngine\MessageQueryInterface;
@@ -17,7 +18,8 @@ class FakeMessageQuery implements MessageQueryInterface
1718
* Constructor.
1819
*/
1920
public function __construct(
20-
protected FakeFolder $folder
21+
protected FakeFolder $folder,
22+
protected ImapQueryBuilder $query = new ImapQueryBuilder
2123
) {}
2224

2325
/**

tests/Unit/Testing/FakeFolderTest.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171

7272
test('it can set mailbox', function () {
7373
$folder = new FakeFolder('INBOX');
74+
7475
$mailbox = new FakeMailbox(['host' => 'imap.example.com']);
7576

7677
$folder->setMailbox($mailbox);
@@ -80,9 +81,11 @@
8081

8182
test('it can set messages', function () {
8283
$folder = new FakeFolder('INBOX');
83-
$messages = [new FakeMessage(1), new FakeMessage(2)];
8484

85-
$folder->setMessages($messages);
85+
$folder->setMessages([
86+
new FakeMessage(1),
87+
new FakeMessage(2),
88+
]);
8689

8790
expect($folder->messages()->count())->toBe(2);
8891
});
@@ -94,3 +97,17 @@
9497

9598
expect($folder->delimiter())->toBe('.');
9699
});
100+
101+
test('it can query messages from a fake mailbox folder', function () {
102+
$folder = new FakeFolder('inbox', ['\\HasNoChildren'], [
103+
new FakeMessage(1, [''], 'Message 1'),
104+
new FakeMessage(2, [''], 'Message 2'),
105+
new FakeMessage(3, ['\\Seen'], 'Message 3'),
106+
]);
107+
108+
// These should all have the same count because
109+
// no filtering should actually take place
110+
expect($folder->messages()->count())->toBe(3);
111+
expect($folder->messages()->where('Unseen')->count())->toBe(3);
112+
expect($folder->messages()->where('Seen')->count())->toBe(3);
113+
});

0 commit comments

Comments
 (0)