diff --git a/src/MessageQueryInterface.php b/src/MessageQueryInterface.php index 72b79ba..98199e9 100644 --- a/src/MessageQueryInterface.php +++ b/src/MessageQueryInterface.php @@ -111,6 +111,16 @@ public function setFetchOrderAsc(): MessageQueryInterface; */ public function setFetchOrderDesc(): MessageQueryInterface; + /** + * Set the fetch order to show oldest messages first (ascending). + */ + public function oldest(): MessageQueryInterface; + + /** + * Set the fetch order to show newest messages first (descending). + */ + public function newest(): MessageQueryInterface; + /** * Count all available messages matching the current search criteria. */ diff --git a/src/QueriesMessages.php b/src/QueriesMessages.php index 3620699..be825fc 100644 --- a/src/QueriesMessages.php +++ b/src/QueriesMessages.php @@ -272,4 +272,20 @@ public function setFetchOrderDesc(): MessageQueryInterface { return $this->setFetchOrder('desc'); } + + /** + * {@inheritDoc} + */ + public function oldest(): MessageQueryInterface + { + return $this->setFetchOrder('asc'); + } + + /** + * {@inheritDoc} + */ + public function newest(): MessageQueryInterface + { + return $this->setFetchOrder('desc'); + } } diff --git a/tests/Unit/MessageQueryTest.php b/tests/Unit/MessageQueryTest.php index 5d87941..77f0bff 100644 --- a/tests/Unit/MessageQueryTest.php +++ b/tests/Unit/MessageQueryTest.php @@ -67,3 +67,26 @@ function query(?Mailbox $mailbox = null): MessageQuery $stream->assertWritten('TAG2 UID STORE 1,2,3 +FLAGS.SILENT (\Deleted)'); }); + +test('oldest sets fetch order to asc', function () { + $query = query(); + + $query->oldest(); + + expect($query->getFetchOrder())->toBe('asc'); +}); + +test('newest sets fetch order to desc', function () { + $query = query(); + + $query->newest(); + + expect($query->getFetchOrder())->toBe('desc'); +}); + +test('oldest and newest return query instance for chaining', function () { + $query = query(); + + expect($query->oldest())->toBe($query); + expect($query->newest())->toBe($query); +});