vendor = new FoodVendor; $this->vendor->setName('Food Vendor'); $this->manager->persist($this->vendor); $this->manager->flush(); } #[Override] public function getEntityClass(): string { return FoodOrder::class; } public function testIndex(): void { $order = new FoodOrder; $order->setFoodVendor($this->vendor); $this->manager->persist($order); $this->manager->persist($this->vendor); $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}list"); self::assertResponseStatusCodeSame(200); self::assertPageTitleContains('FoodOrder index'); $this->assertCount( 1, $crawler->filter('td') ->reduce(fn(Crawler $node, $i): bool => $node->text() === $this->vendor->getName()), ); } public function testPaginatedIndex(): void { $this->generatePaginatedOrders(); $crawler = $this->client->request('GET', "{$this->path}list"); self::assertResponseStatusCodeSame(200); self::assertPageTitleContains('FoodOrder index'); $this->assertElementContainsCount( $crawler, 'td', 1, 'older orders' ); $this->assertElementContainsCount( $crawler, 'td', 0, 'next page' ); } /** * @testWith [1, 0, 1] * [2, 1, 1] * [3, 1, 1] * [4, 1, 0, 5] */ public function testPaginatedFirstPage(int $page, int $prevPage, int $nextPage, int $items = 10): void { $this->generatePaginatedOrders(); $crawler = $this->client->request('GET', "{$this->path}list/archive/{$page}"); self::assertResponseStatusCodeSame(200); self::assertPageTitleContains('FoodOrder index'); $this->assertElementContainsCount( $crawler, 'td', $items, 'nobody' ); $this->assertElementContainsCount( $crawler, 'a', $nextPage, 'next page' ); $this->assertElementContainsCount( $crawler, 'a', $prevPage, 'previous page' ); } public function testNew(): void { $this->client->request('GET', sprintf('%snew', $this->path)); self::assertResponseStatusCodeSame(200); $this->client->submitForm('Save', [ 'food_order[foodVendor]' => $this->vendor->getId(), ]); self::assertResponseRedirects("{$this->path}list"); self::assertSame(1, $this->repository->count([])); } private function generatePaginatedOrders(): void { foreach (range(1, 35) as $i) { $order = new FoodOrder($this->generateOldUlid()); $order->setFoodVendor($this->vendor); $order->close(); $this->manager->persist($order); } $this->manager->flush(); } }