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\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