improve unit tests #68

Merged
lubiana merged 2 commits from improve-unit-tests into main 2024-12-18 23:44:21 +00:00

View file

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