diff --git a/src/Engines/MeilisearchEngine.php b/src/Engines/MeilisearchEngine.php index 527282b..e5e9f16 100644 --- a/src/Engines/MeilisearchEngine.php +++ b/src/Engines/MeilisearchEngine.php @@ -107,6 +107,7 @@ public function paginate(Builder $builder, $perPage, $page) return $this->performSearch($builder, array_filter([ 'filters' => $this->filters($builder), 'limit' => $perPage, + 'offset' => ($page - 1) * $perPage, ])); } diff --git a/tests/MeilisearchEngineTest.php b/tests/MeilisearchEngineTest.php index fedfdb1..598c1f0 100644 --- a/tests/MeilisearchEngineTest.php +++ b/tests/MeilisearchEngineTest.php @@ -161,6 +161,29 @@ public function update_empty_searchable_array_does_not_add_objects_to_index() $engine = new MeilisearchEngine($client); $engine->update(Collection::make([new EmptySearchableModel])); } + + /** @test */ + public function pagination_correct_parameters() + { + $perPage = 5; + $page = 2; + + $client = m::mock(Client::class); + $client->shouldReceive('getIndex')->with('table')->andReturn($index = m::mock(stdClass::class)); + $index->shouldReceive('search')->with('mustang', [ + 'filters' => 'foo=1', + 'limit' => $perPage, + 'offset' => ($page - 1) * $perPage, + ]); + + $engine = new MeilisearchEngine($client); + $builder = new Builder(new SearchableModel, 'mustang', function ($meilisearch, $query, $options) { + $options['filters'] = 'foo=1'; + + return $meilisearch->search($query, $options); + }); + $engine->paginate($builder, $perPage, $page); + } } class CustomKeySearchableModel extends SearchableModel