Skip to content

Commit 77cd241

Browse files
authored
Merge pull request #698 from meilisearch/feat/add-tasks-reverse
Add parameter to get tasks in reverse order
2 parents ff24520 + 05c441c commit 77cd241

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

src/Contracts/TasksQuery.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class TasksQuery
2222
*/
2323
private ?array $canceledBy = null;
2424

25+
private ?bool $reverse = null;
26+
2527
/**
2628
* @return $this
2729
*/
@@ -54,6 +56,16 @@ public function setLimit(int $limit): self
5456
return $this;
5557
}
5658

59+
/**
60+
* @return $this
61+
*/
62+
public function setReverse(bool $reverse): self
63+
{
64+
$this->reverse = $reverse;
65+
66+
return $this;
67+
}
68+
5769
public function toArray(): array
5870
{
5971
return array_filter(
@@ -63,8 +75,12 @@ public function toArray(): array
6375
'from' => $this->from,
6476
'limit' => $this->limit,
6577
'canceledBy' => $this->formatArray($this->canceledBy),
78+
'reverse' => (null !== $this->reverse ? ($this->reverse ? 'true' : 'false') : null),
6679
]
67-
), static function ($item) { return null !== $item; }
80+
),
81+
static function ($item) {
82+
return null !== $item;
83+
}
6884
);
6985
}
7086
}

tests/Contracts/TasksQueryTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace Tests\Contracts;
66

7+
// TODO: refactor to make sure these tests clean up after themselves
8+
79
use Meilisearch\Contracts\TasksQuery;
810
use PHPUnit\Framework\TestCase;
911

@@ -109,4 +111,15 @@ public function testSetFrom(): void
109111

110112
self::assertSame(['from' => 1], $data->toArray());
111113
}
114+
115+
/**
116+
* @testWith [true, "true"]
117+
* [false, "false"]
118+
*/
119+
public function testSetReverse(bool $reverse, string $expected): void
120+
{
121+
$data = (new TasksQuery())->setReverse($reverse);
122+
123+
self::assertSame(['reverse' => $expected], $data->toArray());
124+
}
112125
}

tests/Endpoints/TasksTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,22 @@ public function testCancelTasksWithFilter(): void
140140
self::assertSame('succeeded', $response['status']);
141141
}
142142

143+
public function testGetAllTasksInReverseOrder(): void
144+
{
145+
$startDate = new \DateTimeImmutable('now');
146+
147+
$tasks = $this->client->getTasks((new TasksQuery())
148+
->setAfterEnqueuedAt($startDate)
149+
);
150+
$reversedTasks = $this->client->getTasks((new TasksQuery())
151+
->setAfterEnqueuedAt($startDate)
152+
->setReverse(true)
153+
);
154+
155+
self::assertSameSize($tasks->getResults(), $reversedTasks->getResults());
156+
self::assertSame($tasks->getResults(), array_reverse($reversedTasks->getResults()));
157+
}
158+
143159
public function testExceptionIfNoTaskIdWhenGetting(): void
144160
{
145161
$this->expectException(ApiException::class);

0 commit comments

Comments
 (0)