<?php declare(strict_types=1); namespace App\Tests\Controller; use App\Entity\FoodOrder; use App\Entity\FoodVendor; use App\Tests\DbWebTest; use Override; use Symfony\Component\DomCrawler\Crawler; use function sprintf; final class FoodOrderControllerTest extends DbWebTest { private string $path = '/food/order/'; private FoodVendor $vendor; #[Override] public function setUp(): void { parent::setUp(); $this->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); 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 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); self::assertSame(1, $this->repository->count([])); } }