diff --git a/tests/Controller/FoodOrderControllerTest.php b/tests/Controller/FoodOrderControllerTest.php index a7c222e..3abd8a2 100644 --- a/tests/Controller/FoodOrderControllerTest.php +++ b/tests/Controller/FoodOrderControllerTest.php @@ -8,10 +8,13 @@ use App\Entity\MenuItem; use App\Entity\OrderItem; use App\Tests\DbWebTest; use Override; +use Symfony\Component\BrowserKit\Cookie; use Symfony\Component\DomCrawler\Crawler; +use function assert; use function range; use function sprintf; +use function str_ends_with; final class FoodOrderControllerTest extends DbWebTest { @@ -137,10 +140,10 @@ final class FoodOrderControllerTest extends DbWebTest } /** - * @testWith [1, 0, 1] - * [2, 1, 1] - * [3, 1, 1] - * [4, 1, 0, 5] + * @testWith [1, 0, 2] + * [2, 1, 3] + * [3, 2, 4] + * [4, 3, 0, 5] */ public function testPaginatedFirstPage(int $page, int $prevPage, int $nextPage, int $items = 10): void { @@ -154,22 +157,27 @@ final class FoodOrderControllerTest extends DbWebTest $items, 'nobody' ); - $this->assertElementContainsCount( - $crawler, - 'a', - $nextPage, - 'next page' - ); - $this->assertElementContainsCount( - $crawler, - 'a', - $prevPage, - 'previous page' - ); + if ($prevPage > 0) { + $prevPage = $prevPage === 1 ? '' : "/{$prevPage}"; + $node = $crawler->filter('a') + ->reduce(static fn(Crawler $node, $i): bool => $node->text() === 'previous page') + ->first(); + $target = $node->attr('href'); + $this->assertTrue(str_ends_with((string) $target, $prevPage)); + } + if ($prevPage > 3) { + $node = $crawler->filter('a') + ->reduce(static fn(Crawler $node, $i): bool => $node->text() === 'next page') + ->first(); + $target = $node->attr('href'); + $this->assertTrue(str_ends_with((string) $target, "/{$nextPage}")); + } } public function testNew(): void { + $this->client->getCookieJar() + ->set(new Cookie('username', 'Testing-1')); $this->client->request('GET', sprintf('%snew', $this->path)); self::assertResponseStatusCodeSame(200); @@ -180,6 +188,10 @@ final class FoodOrderControllerTest extends DbWebTest self::assertResponseRedirects("{$this->path}list"); self::assertSame(1, $this->repository->count([])); + $order = $this->repository->findOneBy([ + 'createdBy' => 'Testing-1', + ]); + assert($order instanceof FoodOrder); } public function testOpen(): void