improve unit tests #68
1 changed files with 28 additions and 16 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue