diff --git a/phpunit.xml b/phpunit.xml index e624e74..1da196e 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -14,8 +14,8 @@ failOnWarning="true"> - tests/Controller - tests/Entity + tests/Feature + tests/Unit @@ -29,7 +29,10 @@ - - + + + + + diff --git a/src/Form/MenuItemType.php b/src/Form/MenuItemType.php index 6d94034..7b89e52 100644 --- a/src/Form/MenuItemType.php +++ b/src/Form/MenuItemType.php @@ -14,15 +14,12 @@ use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\Length; use Symfony\Component\Validator\Constraints\NotBlank; -use function assert; - final class MenuItemType extends AbstractType { #[Override] public function buildForm(FormBuilderInterface $builder, array $options): void { $item = $options['data']; - assert($item instanceof MenuItem); $builder->add('name', TextType::class, [ 'constraints' => [ diff --git a/tests/Controller/HomeControllerTest.php b/tests/Controller/HomeControllerTest.php deleted file mode 100644 index b8398b9..0000000 --- a/tests/Controller/HomeControllerTest.php +++ /dev/null @@ -1,81 +0,0 @@ -client->request( - 'GET', - '/' - ); - - self::assertResponseStatusCodeSame(302); - self::assertResponseHeaderSame('Location', '/food/order/list'); - - } - - public function testSetUsername(): void - { - $this->client->request( - 'GET', - '/username', - ); - - self::assertResponseStatusCodeSame(200); - - $this->client->submitForm('Save', [ - 'user_name_form[username]' => 'Testing-1', - ]); - self::assertResponseStatusCodeSame(302); - self::assertResponseHeaderSame('Location', '/food/order/list'); - self::assertResponseCookieValueSame('username', 'Testing-1'); - - $crawler = $this->client->request( - 'GET', - '/username', - ); - - self::assertResponseStatusCodeSame(200); - - $this->assertSame( - $crawler->filter('#user_name_form_username') - ->last() - ->attr('value', ''), - 'Testing-1' - ); - - } - - public function testRemoveUsername(): void - { - $this->client->request( - 'GET', - '/username', - ); - - self::assertResponseStatusCodeSame(200); - - $this->client->submitForm('Save', [ - 'user_name_form[username]' => '', - ]); - self::assertResponseStatusCodeSame(302); - self::assertResponseHeaderSame('Location', '/food/order/list'); - self::assertResponseCookieValueSame('username', ''); - } - - #[Override] - public function getEntityClass(): string - { - return ''; - } -} diff --git a/tests/DbWebTest.php b/tests/DbWebTest.php index c7a22f8..181dce1 100644 --- a/tests/DbWebTest.php +++ b/tests/DbWebTest.php @@ -17,11 +17,11 @@ use function str_contains; abstract class DbWebTest extends WebTestCase { - abstract public function getEntityClass(): string; - protected KernelBrowser $client; protected EntityManagerInterface $manager; protected EntityRepository $repository; + protected string $entityClass = ''; + protected string $path = ''; #[Override] protected function setUp(): void @@ -33,10 +33,6 @@ abstract class DbWebTest extends WebTestCase ->getAllMetadata(); $schemaTool->dropDatabase(); $schemaTool->updateSchema($metadata); - - if ($this->getEntityClass() !== '') { - $this->repository = $this->manager->getRepository($this->getEntityClass()); - } } protected function generateOldUlid(int $daysToSubtract = 10): Ulid @@ -56,4 +52,15 @@ abstract class DbWebTest extends WebTestCase ) ); } + + protected function setEntityClass(string $entityClass): void + { + $this->entityClass = $entityClass; + $this->repository = $this->manager->getRepository($this->entityClass); + } + + protected function setPath(string $path): void + { + $this->path = $path; + } } diff --git a/tests/Entity/FoodOrderTest.php b/tests/Entity/FoodOrderTest.php deleted file mode 100644 index 332f389..0000000 --- a/tests/Entity/FoodOrderTest.php +++ /dev/null @@ -1,27 +0,0 @@ -assertCount(0, $order->getOrderItems()); - $order->addOrderItem($orderItem); - $order->addOrderItem($orderItem); - $this->assertCount(1, $order->getOrderItems()); - $this->assertSame($order, $orderItem->getFoodOrder()); - $order->removeOrderItem($orderItem); - $this->assertCount(0, $order->getOrderItems()); - $this->assertNull($orderItem->getFoodOrder()); - } -} diff --git a/tests/Controller/FoodOrderControllerTest.php b/tests/Feature/Controller/FoodOrderControllerTest.php similarity index 72% rename from tests/Controller/FoodOrderControllerTest.php rename to tests/Feature/Controller/FoodOrderControllerTest.php index cac12c0..322f619 100644 --- a/tests/Controller/FoodOrderControllerTest.php +++ b/tests/Feature/Controller/FoodOrderControllerTest.php @@ -1,6 +1,6 @@ beforeEach(function (): void { + $this->setEntityClass(FoodOrder::class); + $this->setPath('/food/order/'); + $this->repository = $this->manager->getRepository($this->entityClass); $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 - { +describe(FoodOrderController::class, function (): void { + test('index', function (): void { $order = new FoodOrder; $order->setFoodVendor($this->vendor); @@ -63,17 +43,16 @@ final class FoodOrderControllerTest extends DbWebTest $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}list"); - self::assertResponseStatusCodeSame(200); - self::assertPageTitleContains('FoodOrder index'); + $this->assertResponseStatusCodeSame(200); + $this->assertPageTitleContains('FoodOrder index'); $this->assertCount( 1, $crawler->filter('td') ->reduce(fn(Crawler $node, $i): bool => $node->text() === $this->vendor->getName()), ); - } + }); - public function testOrderedItems(): void - { + test('orderedItems', function (): void { $order = new FoodOrder; $order->setFoodVendor($this->vendor); @@ -119,7 +98,7 @@ final class FoodOrderControllerTest extends DbWebTest $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}{$order->getId()}"); - self::assertResponseIsSuccessful(); + $this->assertResponseIsSuccessful(); $tdContent = $crawler->filter( 'table.table:nth-child(6) > tbody:nth-child(2) > tr:nth-child(1) > td:nth-child(2)' )->text(); @@ -132,14 +111,20 @@ final class FoodOrderControllerTest extends DbWebTest 'table.table:nth-child(6) > tbody:nth-child(2) > tr:nth-child(3) > td:nth-child(2)' )->text(); $this->assertEquals('C', $tdContent); - } + }); - public function testPaginatedIndex(): void - { - $this->generatePaginatedOrders(); + test('paginatedIndex', function (): void { + foreach (range(1, 35) as $i) { + $order = new FoodOrder($this->generateOldUlid()); + $order->setFoodVendor($this->vendor); + $order->close(); + $this->manager->persist($order); + + } + $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}list"); - self::assertResponseStatusCodeSame(200); - self::assertPageTitleContains('FoodOrder index'); + $this->assertResponseStatusCodeSame(200); + $this->assertPageTitleContains('FoodOrder index'); $this->assertElementContainsCount( $crawler, 'td', @@ -152,20 +137,20 @@ final class FoodOrderControllerTest extends DbWebTest 0, 'next page' ); - } + }); - /** - * @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 - { - $this->generatePaginatedOrders(); + test('paginatedFirstPage', function (int $page, int $prevPage, int $nextPage, int $items = 10): void { + foreach (range(1, 35) as $i) { + $order = new FoodOrder($this->generateOldUlid()); + $order->setFoodVendor($this->vendor); + $order->close(); + $this->manager->persist($order); + + } + $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}list/archive/{$page}"); - self::assertResponseStatusCodeSame(200); - self::assertPageTitleContains('FoodOrder index'); + $this->assertResponseStatusCodeSame(200); + $this->assertPageTitleContains('FoodOrder index'); $this->assertElementContainsCount( $crawler, 'td', @@ -187,30 +172,36 @@ final class FoodOrderControllerTest extends DbWebTest $target = $node->attr('href'); $this->assertTrue(str_ends_with((string) $target, "/{$nextPage}")); } - } + }) + ->with( + [ + [1, 0, 2], + [2, 1, 3], + [3, 2, 4], + [4, 3, 0, 5], + ] + ); - public function testNew(): void - { + test('new', function (): void { $this->client->getCookieJar() ->set(new Cookie('username', 'Testing-1')); $this->client->request('GET', sprintf('%snew', $this->path)); - self::assertResponseStatusCodeSame(200); + $this->assertResponseStatusCodeSame(200); $this->client->submitForm('Save', [ 'food_order[foodVendor]' => $this->vendor->getId(), ]); - self::assertResponseRedirects("{$this->path}list"); - self::assertSame(1, $this->repository->count([])); + $this->assertResponseRedirects("{$this->path}list"); + $this->assertSame(1, $this->repository->count([])); $order = $this->repository->findOneBy([ 'createdBy' => 'Testing-1', ]); assert($order instanceof FoodOrder); - } + }); - public function testOpen(): void - { + test('open', function (): void { $order = new FoodOrder; $order->setFoodVendor($this->vendor); $order->close(); @@ -220,13 +211,12 @@ final class FoodOrderControllerTest extends DbWebTest $this->manager->flush(); $this->client->request('GET', sprintf('%s%s/open', $this->path, $order->getId())); - self::assertResponseRedirects("{$this->path}{$order->getId()}"); + $this->assertResponseRedirects("{$this->path}{$order->getId()}"); $openOrder = $this->repository->find($order->getId()); $this->assertFalse($openOrder->isClosed()); - } + }); - public function testClose(): void - { + test('close', function (): void { $order = new FoodOrder; $order->setClosedAt(); $order->setFoodVendor($this->vendor); @@ -236,20 +226,19 @@ final class FoodOrderControllerTest extends DbWebTest $this->manager->flush(); $this->client->request('GET', sprintf('%s%s/close', $this->path, $order->getId())); - self::assertResponseRedirects("{$this->path}{$order->getId()}"); + $this->assertResponseRedirects("{$this->path}{$order->getId()}"); $openOrder = $this->repository->find($order->getId()); $this->assertTrue($openOrder->isClosed()); - } + }); - private function generatePaginatedOrders(): void - { - foreach (range(1, 35) as $i) { - $order = new FoodOrder($this->generateOldUlid()); - $order->setFoodVendor($this->vendor); - $order->close(); - $this->manager->persist($order); - - } - $this->manager->flush(); - } -} +}) + ->covers( + FoodOrderController::class, + FoodOrder::class, + FoodVendor::class, + FoodOrderRepository::class, + MenuItem::class, + OrderItem::class, + FoodOrderType::class, + FoodVendorRepository::class + ); diff --git a/tests/Controller/FoodVendorControllerTest.php b/tests/Feature/Controller/FoodVendorControllerTest.php similarity index 72% rename from tests/Controller/FoodVendorControllerTest.php rename to tests/Feature/Controller/FoodVendorControllerTest.php index 801877b..d6d64cb 100644 --- a/tests/Controller/FoodVendorControllerTest.php +++ b/tests/Feature/Controller/FoodVendorControllerTest.php @@ -1,6 +1,6 @@ beforeEach(function (): void { + $this->setEntityClass(FoodVendor::class); + $this->setPath('/food/vendor/'); + $this->repository = $this->manager->getRepository($this->entityClass); + }); - public function testIndex(): void - { +describe(FoodVendorController::class, function (): void { + test('index', function (): void { $this->client->request('GET', $this->path); - self::assertResponseStatusCodeSame(200); - self::assertPageTitleContains('FoodVendor index'); - } + $this->assertResponseStatusCodeSame(200); + $this->assertPageTitleContains('FoodVendor index'); + }); - public function testNew(): void - { - self::assertSame(0, $this->repository->count([])); + test('new', function (): void { + $this->assertSame(0, $this->repository->count([])); $this->client->request('GET', sprintf('%snew', $this->path)); - self::assertResponseStatusCodeSame(200); + $this->assertResponseStatusCodeSame(200); $this->client->submitForm('Save', [ 'food_vendor[name]' => 'TestingNew', @@ -55,12 +46,11 @@ final class FoodVendorControllerTest extends DbWebTest 'name' => 'TestingNew', ]); $this->assertInstanceof(FoodVendor::class, $newVendor); - self::assertSame(1, $this->repository->count([])); + $this->assertSame(1, $this->repository->count([])); - } + }); - public function testShow(): void - { + test('show', function (): void { $fixture = new FoodVendor; $fixture->setName('My Title'); $fixture->setMenuLink('https://example.com/'); @@ -82,10 +72,9 @@ final class FoodVendorControllerTest extends DbWebTest )->text(); $this->assertSame('My Title', $nameNode); $this->assertSame('https://example.com/', $menuLinkNode); - } + }); - public function testShowMenuItems(): void - { + test('show with menu items', function (): void { $fixture = new FoodVendor; $fixture->setName('My Title'); @@ -133,10 +122,9 @@ final class FoodVendorControllerTest extends DbWebTest $itemNodes = $crawler->filter('li'); $this->assertCount(4, $itemNodes); - } + }); - public function testEdit(): void - { + test('edit', function (): void { $fixture = new FoodVendor; $fixture->setName('Value'); $fixture->setMenuLink('Value'); @@ -171,18 +159,26 @@ final class FoodVendorControllerTest extends DbWebTest 'food_vendor[phone]' => '1234567890', ]); - self::assertResponseRedirects('/food/vendor/'); + $this->assertResponseRedirects('/food/vendor/'); $fixture = $this->repository->findAll(); - self::assertSame('Something New', $fixture[0]->getName()); - self::assertSame('https://example.com/', $fixture[0]->getMenuLink()); - self::assertSame('1234567890', $fixture[0]->getPhone()); - } + $this->assertSame('Something New', $fixture[0]->getName()); + $this->assertSame('https://example.com/', $fixture[0]->getMenuLink()); + $this->assertSame('1234567890', $fixture[0]->getPhone()); + }); - #[Override] - public function getEntityClass(): string - { - return FoodVendor::class; - } -} +}) + ->covers( + FoodOrder::class, + FoodVendor::class, + FoodOrderRepository::class, + MenuItem::class, + OrderItem::class, + FoodOrderType::class, + FoodVendorRepository::class, + FoodVendorController::class, + FoodVendorType::class + ) + +; diff --git a/tests/Feature/Controller/HomeControllerTest.php b/tests/Feature/Controller/HomeControllerTest.php new file mode 100644 index 0000000..76152b6 --- /dev/null +++ b/tests/Feature/Controller/HomeControllerTest.php @@ -0,0 +1,71 @@ +client->request( + 'GET', + '/' + ); + + $this->assertResponseStatusCodeSame(302); + $this->assertResponseHeaderSame('Location', '/food/order/list'); + + }); + + test('username', function (): void { + $this->client->request( + 'GET', + '/username', + ); + + $this->assertResponseStatusCodeSame(200); + + $this->client->submitForm('Save', [ + 'user_name_form[username]' => 'Testing-1', + ]); + $this->assertResponseStatusCodeSame(302); + $this->assertResponseHeaderSame('Location', '/food/order/list'); + $this->assertResponseCookieValueSame('username', 'Testing-1'); + + $crawler = $this->client->request( + 'GET', + '/username', + ); + + $this->assertResponseStatusCodeSame(200); + + $this->assertSame( + $crawler->filter('#user_name_form_username') + ->last() + ->attr('value', ''), + 'Testing-1' + ); + + }); + + test('username empty', function (): void { + $this->client->request( + 'GET', + '/username', + ); + + $this->assertResponseStatusCodeSame(200); + + $this->client->submitForm('Save', [ + 'user_name_form[username]' => '', + ]); + $this->assertResponseStatusCodeSame(302); + $this->assertResponseHeaderSame('Location', '/food/order/list'); + $this->assertResponseCookieValueSame('username', ''); + }); +}) + ->covers(HomeController::class, UserNameFormType::class); diff --git a/tests/Controller/MenuItemControllerTest.php b/tests/Feature/Controller/MenuItemControllerTest.php similarity index 77% rename from tests/Controller/MenuItemControllerTest.php rename to tests/Feature/Controller/MenuItemControllerTest.php index 75cee64..fd63447 100644 --- a/tests/Controller/MenuItemControllerTest.php +++ b/tests/Feature/Controller/MenuItemControllerTest.php @@ -1,6 +1,6 @@ beforeEach(function (): void { + $this->setEntityClass(MenuItem::class); + $this->setPath('/menu/item/'); + + $this->repository = $this->manager->getRepository($this->entityClass); - #[Override] - public function setUp(): void - { - parent::setUp(); $this->vendor = new FoodVendor; $this->vendor->setName('Food Vendor'); $this->manager->persist($this->vendor); - $this->menuItem = new MenuItem; $this->menuItem->setName('Testing 1 2'); @@ -70,16 +54,10 @@ final class MenuItemControllerTest extends DbWebTest $this->manager->persist($this->menuItem); $this->manager->flush(); - } + }); - #[Override] - public function getEntityClass(): string - { - return MenuItem::class; - } - - public function testShow(): void - { +describe(MenuItemController::class, function (): void { + test('show', function (): void { $crawler = $this->client->request('GET', "{$this->path}{$this->menuItem->getId()}"); $idValue = $crawler->filter( @@ -95,15 +73,14 @@ final class MenuItemControllerTest extends DbWebTest $aliasOneNameValue = $crawler->filter( '.table > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(2) > ul:nth-child(1) > li:nth-child(2)' )->text(); - self::assertResponseStatusCodeSame(200); + $this->assertResponseStatusCodeSame(200); $this->assertEquals($idValue, $this->menuItem->getId()); $this->assertEquals($nameValue, $this->menuItem->getName()); $this->assertEquals($aliasTwoNameValue, $this->aliasOne->getName()); $this->assertEquals($aliasOneNameValue, $this->aliasTwo->getName()); - } + }); - public function testEdit(): void - { + test('edit', function (): void { $crawler = $this->client->request('GET', sprintf('%s%s/edit', $this->path, $this->menuItem->getId())); $nameElem = $crawler->filter('#menu_item_name'); $this->assertEquals( @@ -118,16 +95,15 @@ final class MenuItemControllerTest extends DbWebTest $this->client->submit($form); - self::assertResponseRedirects(sprintf('/menu/item/%s', $this->menuItem->getId())); + $this->assertResponseRedirects(sprintf('/menu/item/%s', $this->menuItem->getId())); $menuItem = $this->repository->find($this->menuItem->getId()); $this->assertEquals('Testing-1', $menuItem->getName()); $this->assertEquals(1, $menuItem->getAliases()->count()); $aliasOne = $this->repository->find($this->aliasOne->getId()); $this->assertNull($aliasOne->getAliasOf()); - } + }); - public function testEditInvalid(): void - { + test('edit invalid', function (): void { $crawler = $this->client->request('GET', sprintf('%s%s/edit', $this->path, $this->menuItem->getId())); $nameElem = $crawler->filter('#menu_item_name'); $this->assertEquals( @@ -141,11 +117,10 @@ final class MenuItemControllerTest extends DbWebTest $this->client->submit($form); - self::assertResponseStatusCodeSame(422); - } + $this->assertResponseStatusCodeSame(422); + }); - public function testDelete(): void - { + test('delete', function (): void { $order = new FoodOrder; $order->setFoodVendor($this->vendor); @@ -168,5 +143,17 @@ final class MenuItemControllerTest extends DbWebTest $this->assertResponseIsSuccessful(); - } -} + }); +}) + ->covers( + MenuItemController::class, + OrderItemController::class, + OrderItemType::class, + MenuItemRepository::class, + FoodOrder::class, + FoodVendor::class, + MenuItem::class, + OrderItem::class, + FoodOrderRepository::class, + MenuItemType::class, + ); diff --git a/tests/Controller/OrderItemControllerTest.php b/tests/Feature/Controller/OrderItemControllerTest.php similarity index 66% rename from tests/Controller/OrderItemControllerTest.php rename to tests/Feature/Controller/OrderItemControllerTest.php index 91facaf..afbed56 100644 --- a/tests/Controller/OrderItemControllerTest.php +++ b/tests/Feature/Controller/OrderItemControllerTest.php @@ -1,6 +1,6 @@ beforeEach(function (): void { + $this->setEntityClass(OrderItem::class); + $this->setPath('/order/item/'); + $this->repository = $this->manager->getRepository($this->entityClass); - #[Override] - public function setUp(): void - { - parent::setUp(); $this->vendor = new FoodVendor; $this->vendor->setName('Food Vendor'); @@ -65,11 +50,11 @@ final class OrderItemControllerTest extends DbWebTest $this->manager->persist($this->menuItem); $this->manager->flush(); - $this->menuItemRepository = static::getContainer()->get(MenuItemRepository::class); - } + $this->menuItemRepository = $this::getContainer()->get(MenuItemRepository::class); + }); - public function testNew(): void - { +describe(OrderItemController::class, function (): void { + test('new', function (): void { $crawler = $this->client->request( 'GET', sprintf('%snew/%s', $this->path, $this->order->getId()) @@ -80,23 +65,22 @@ final class OrderItemControllerTest extends DbWebTest $this->assertCount(1, $children); - self::assertResponseStatusCodeSame(200); + $this->assertResponseStatusCodeSame(200); $this->client->submitForm('Save', [ 'order_item[name]' => 'Testing', 'order_item[extras]' => 'Testing', ]); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - self::assertSame(1, $this->repository->count([])); - self::assertSame(1, $this->menuItemRepository->count([ + $this->assertSame(1, $this->repository->count([])); + $this->assertSame(1, $this->menuItemRepository->count([ 'foodVendor' => $this->vendor->getId(), ])); - } + }); - public function testNewOrderClosed(): void - { + test('new order closed', function (): void { $this->order->setClosedAt(new DateTimeImmutable('-1 Hour')); $this->manager->persist($this->order); @@ -107,33 +91,31 @@ final class OrderItemControllerTest extends DbWebTest sprintf('%snew/%s', $this->path, $this->order->getId()) ); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - self::assertSame(0, $this->repository->count([])); - } + $this->assertSame(0, $this->repository->count([])); + }); - public function testNewCreateMenuItem(): void - { + test('new create menu item', function (): void { $this->client->request( 'GET', sprintf('%snew/%s', $this->path, $this->order->getId()) ); - self::assertResponseStatusCodeSame(200); + $this->assertResponseStatusCodeSame(200); $this->client->submitForm('Save', [ 'order_item[name]' => 'Testing-1', 'order_item[extras]' => 'Testing-1', ]); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - self::assertSame(1, $this->repository->count([])); - self::assertSame(3, $this->menuItemRepository->count([])); - } + $this->assertSame(1, $this->repository->count([])); + $this->assertSame(3, $this->menuItemRepository->count([])); + }); - public function testRemove(): void - { + test('remove', function (): void { $fixture = new OrderItem; $fixture->setName('Testing'); $fixture->setExtras('Value'); @@ -146,12 +128,11 @@ final class OrderItemControllerTest extends DbWebTest $this->client->request('GET', sprintf('%sdelete/%s', $this->path, $fixture->getId())); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - self::assertSame(0, $this->repository->count([])); - } + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertSame(0, $this->repository->count([])); + }); - public function testOrderClosed(): void - { + test('order closed', function (): void { $fixture = new OrderItem; $fixture->setName('Testing'); $fixture->setExtras('Value'); @@ -166,12 +147,11 @@ final class OrderItemControllerTest extends DbWebTest $this->client->request('GET', sprintf('%sdelete/%s', $this->path, $fixture->getId())); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - self::assertSame(1, $this->repository->count([])); - } + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertSame(1, $this->repository->count([])); + }); - public function testEdit(): void - { + test('edit', function (): void { $orderItem = new OrderItem; $orderItem->setName('Testing'); $orderItem->setExtras('My Extra'); @@ -199,15 +179,14 @@ final class OrderItemControllerTest extends DbWebTest 'order_item[extras]' => 'Testing-1', ]); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - self::assertSame(1, $this->repository->count([])); - self::assertSame(3, $this->menuItemRepository->count([])); + $this->assertSame(1, $this->repository->count([])); + $this->assertSame(3, $this->menuItemRepository->count([])); - } + }); - public function testEditOrderClosed(): void - { + test('edit order closed', function (): void { $orderItem = new OrderItem; $orderItem->setName('Testing'); $orderItem->setExtras('My Extra'); @@ -221,11 +200,10 @@ final class OrderItemControllerTest extends DbWebTest $this->manager->flush(); $this->client->request('GET', sprintf('%s%s/edit', $this->path, $orderItem->getId())); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); - } + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + }); - public function testCopy(): void - { + test('copy', function (): void { $orderItem = new OrderItem; $orderItem->setName('My Title'); $orderItem->setExtras('My Title'); @@ -236,7 +214,7 @@ final class OrderItemControllerTest extends DbWebTest $this->manager->flush(); $this->client->request('GET', sprintf('%s%s/copy', $this->path, $orderItem->getId())); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); $result = $this->repository->findBy([ 'foodOrder' => $this->order->getId(), @@ -246,10 +224,9 @@ final class OrderItemControllerTest extends DbWebTest $this->assertSame($orderItem->getName(), $item->getName()); $this->assertSame($orderItem->getExtras(), $item->getExtras()); } - } + }); - public function testCopyOrderClosed(): void - { + test('copy order closed', function (): void { $orderItem = new OrderItem; $orderItem->setName('My Title'); $orderItem->setExtras('My Title'); @@ -262,17 +239,23 @@ final class OrderItemControllerTest extends DbWebTest $this->manager->flush(); $this->client->request('GET', sprintf('%s%s/copy', $this->path, $orderItem->getId())); - self::assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); + $this->assertResponseRedirects(sprintf('/food/order/%s', $this->order->getId())); $result = $this->repository->findBy([ 'foodOrder' => $this->order->getId(), ]); $this->assertCount(1, $result); - } + }); - #[Override] - public function getEntityClass(): string - { - return OrderItem::class; - } -} +}) + ->covers( + OrderItemController::class, + MenuItemRepository::class, + OrderItemRepository::class, + OrderItemType::class, + FoodOrder::class, + FoodVendor::class, + MenuItem::class, + OrderItem::class, + FoodOrderRepository::class, + ); diff --git a/tests/Pest.php b/tests/Pest.php index b14cf4f..846dfad 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -1,5 +1,7 @@ extends(DbWebTest::class)->in('Feature/Controller/*.php'); + /* |-------------------------------------------------------------------------- | Functions diff --git a/tests/Unit/Entity/FoodOrderTest.php b/tests/Unit/Entity/FoodOrderTest.php new file mode 100644 index 0000000..b0c6a39 --- /dev/null +++ b/tests/Unit/Entity/FoodOrderTest.php @@ -0,0 +1,32 @@ +getOrderItems()) + ->toBeEmpty(); + $order->addOrderItem($orderItem); + $order->addOrderItem($orderItem); + + expect($order->getOrderItems()) + ->toHaveCount(1) + ->and($orderItem->getFoodOrder()) + ->toBe($order); + + $order->removeOrderItem($orderItem); + + expect($order->getOrderItems()) + ->toBeEmpty() + ->and($orderItem->getFoodOrder()) + ->toBeNull(); + +}) + ->covers(FoodOrder::class, OrderItem::class); diff --git a/tests/Entity/FoodVendorTest.php b/tests/Unit/Entity/FoodVendorTest.php similarity index 82% rename from tests/Entity/FoodVendorTest.php rename to tests/Unit/Entity/FoodVendorTest.php index 1075ee8..88ab094 100644 --- a/tests/Entity/FoodVendorTest.php +++ b/tests/Unit/Entity/FoodVendorTest.php @@ -1,21 +1,17 @@ setName('Test'); $this->assertEquals('Test', $vendor->getName()); @@ -33,11 +29,9 @@ final class FoodVendorTest extends TestCase $vendor->removeFoodOrder($order1); $this->assertCount(0, $vendor->getFoodOrders()); $this->assertNull($order1->getFoodVendor()); + }); - } - - public function testMenuItem(): void - { + test('MenutItem entity', function (): void { $vendor = new FoodVendor; $menuItem1 = new MenuItem; $menuItem2 = new MenuItem; @@ -53,10 +47,9 @@ final class FoodVendorTest extends TestCase $vendor->addMenuItem($menuItem2); $this->assertCount(1, $vendor->getMenuItems()); $this->assertCount(2, $vendor->getMenuItems(true)); - } + }); - public function testRemoveForeignMenuItem(): void - { + test('remove foreign menu item', function (): void { $vendor1 = new FoodVendor; $vendor2 = new FoodVendor; $item1 = new MenuItem; @@ -66,5 +59,6 @@ final class FoodVendorTest extends TestCase $vendor2->removeMenuItem($item1); $this->assertCount(1, $vendor1->getMenuItems()); $this->assertSame($vendor1, $item1->getFoodVendor()); - } -} + }); + +})->covers(FoodVendor::class, FoodOrder::class, MenuItem::class); diff --git a/tests/Entity/MenuItemTest.php b/tests/Unit/Entity/MenuItemTest.php similarity index 79% rename from tests/Entity/MenuItemTest.php rename to tests/Unit/Entity/MenuItemTest.php index 8e31423..5e01b05 100644 --- a/tests/Entity/MenuItemTest.php +++ b/tests/Unit/Entity/MenuItemTest.php @@ -1,19 +1,16 @@ setName('Test'); $this->assertEquals('Test', $item->getName()); @@ -29,10 +26,8 @@ final class MenuItemTest extends TestCase $item->delete(); $this->assertTrue($item->isDeleted()); $this->assertInstanceOf(DateTimeImmutable::class, $item->getDeletedAt()); - } - - public function testMenuItemAlias(): void - { + }); + test('MenuItem alias', function (): void { $item = new MenuItem; $item->setName('Test'); $this->assertEquals('Test', $item->getName()); @@ -54,6 +49,5 @@ final class MenuItemTest extends TestCase $item->removeAlias($item2); $this->assertCount(0, $item->getAliases()); $this->assertNull($item2->getAliasOf()); - - } -} + }); +})->covers(MenuItem::class, FoodVendor::class);