33 lines
1,005 B
PHP
33 lines
1,005 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace Tests\Unit\Movies;
|
||
|
|
|
||
|
|
use App\Modules\Movies\Models\Movie;
|
||
|
|
use App\Modules\Movies\Services\Browse\ListMoviesService;
|
||
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||
|
|
use Tests\TestCase;
|
||
|
|
|
||
|
|
class ListMoviesServiceTest extends TestCase
|
||
|
|
{
|
||
|
|
use RefreshDatabase;
|
||
|
|
|
||
|
|
public function test_paginates_and_filters_by_title(): void
|
||
|
|
{
|
||
|
|
Movie::factory()->count(15)->create(['title' => 'Alpha']);
|
||
|
|
Movie::factory()->count(10)->create(['title' => 'Beta']);
|
||
|
|
|
||
|
|
$service = new ListMoviesService();
|
||
|
|
|
||
|
|
// Default per_page = 20, filter 'Alpha' returns 15 on first page
|
||
|
|
$page = $service->list(['q' => 'Alpha']);
|
||
|
|
$this->assertSame(15, $page->total());
|
||
|
|
$this->assertSame(1, $page->currentPage());
|
||
|
|
$this->assertCount(15, $page->items());
|
||
|
|
|
||
|
|
// Request per_page 10
|
||
|
|
$page10 = $service->list(['q' => 'Beta', 'per_page' => 10]);
|
||
|
|
$this->assertSame(10, $page10->total());
|
||
|
|
$this->assertCount(10, $page10->items());
|
||
|
|
}
|
||
|
|
}
|