create(['name' => 'Ridley Scott']); $genre = Genre::factory()->create(['name' => 'Drama']); $m1 = Movie::factory()->create(['title' => 'Gamma']); $m2 = Movie::factory()->create(['title' => 'Delta']); $m1->directors()->sync([$director->id]); $m2->directors()->sync([$director->id]); $m1->genres()->sync([$genre->id]); $m2->genres()->sync([$genre->id]); $svc = new GetDirectorWithMoviesService(); $res = $svc->handle($director->id, ['per_page' => 20]); $this->assertSame($director->id, $res['entity']->id); $this->assertSame(2, $res['movies']->total()); $first = $res['movies']->items()[0]; $this->assertTrue($first->relationLoaded('genres')); $res2 = $svc->handle($director->id, ['q' => 'Gamma']); $this->assertSame(1, $res2['movies']->total()); } }