diff --git a/src/Search/QueryBuilder.php b/src/Search/QueryBuilder.php index fc01ad19f68..5173bad6282 100644 --- a/src/Search/QueryBuilder.php +++ b/src/Search/QueryBuilder.php @@ -87,6 +87,11 @@ protected function collect($items = []) return new DataCollection($items); } + public function whereStatus(string $status) + { + return $this->where('status', $status); + } + public function getTableNameForFakeQuery() { return 'search_'.$this->index->name(); diff --git a/tests/Search/QueryBuilderTest.php b/tests/Search/QueryBuilderTest.php index 0ddbfda0dda..23b3a65a2ad 100644 --- a/tests/Search/QueryBuilderTest.php +++ b/tests/Search/QueryBuilderTest.php @@ -659,6 +659,27 @@ public function values_can_be_plucked() 'Smeagol\'s Precious', ], $query->where('type', 'b')->pluck('title')->all()); } + + #[Test] + public function results_are_found_using_where_status() + { + $items = collect([ + ['reference' => 'a', 'status' => 'published'], + ['reference' => 'b', 'status' => 'draft'], + ['reference' => 'c', 'status' => 'published'], + ['reference' => 'd', 'status' => 'scheduled'], + ]); + + $results = (new FakeQueryBuilder($items))->withoutData()->whereStatus('published')->get(); + + $this->assertCount(2, $results); + $this->assertEquals(['a', 'c'], $results->map->reference->all()); + + $results = (new FakeQueryBuilder($items))->withoutData()->whereStatus('draft')->get(); + + $this->assertCount(1, $results); + $this->assertEquals(['b'], $results->map->reference->all()); + } } class FakeQueryBuilder extends QueryBuilder