<?php declare(strict_types=1); namespace App\Tests\Entity; use App\Entity\FoodOrder; use App\Entity\FoodVendor; use App\Entity\MenuItem; use PHPUnit\Framework\TestCase; use Symfony\Component\Uid\Ulid; final class FoodVendorTest extends TestCase { public function testFoodVendor(): void { $vendor = new FoodVendor; $vendor->setName('Test'); $this->assertEquals('Test', $vendor->getName()); $this->assertInstanceOf(Ulid::class, $vendor->getId()); $this->assertEmpty($vendor->getPhone()); $vendor->setPhone('1234567890'); $this->assertEquals('1234567890', $vendor->getPhone()); $this->assertCount(0, $vendor->getFoodOrders()); $order1 = new FoodOrder; $vendor->addFoodOrder($order1); $vendor->addFoodOrder($order1); $this->assertCount(1, $vendor->getFoodOrders()); $this->assertSame($vendor, $order1->getFoodVendor()); $vendor->removeFoodOrder($order1); $this->assertCount(0, $vendor->getFoodOrders()); $this->assertNull($order1->getFoodVendor()); } public function testMenuItem(): void { $vendor = new FoodVendor; $menuItem1 = new MenuItem; $menuItem2 = new MenuItem; $this->assertCount(0, $vendor->getMenuItems()); $vendor->addMenuItem($menuItem1); $vendor->addMenuItem($menuItem1); $this->assertCount(1, $vendor->getMenuItems()); $vendor->removeMenuItem($menuItem1); $this->assertCount(0, $vendor->getMenuItems()); $this->assertNull($menuItem1->getFoodVendor()); $vendor->addMenuItem($menuItem1); $menuItem2->delete(); $vendor->addMenuItem($menuItem2); $this->assertCount(1, $vendor->getMenuItems()); $this->assertCount(2, $vendor->getMenuItems(true)); } public function testRemoveForeignMenuItem(): void { $vendor1 = new FoodVendor; $vendor2 = new FoodVendor; $item1 = new MenuItem; $vendor1->addMenuItem($item1); $this->assertCount(1, $vendor1->getMenuItems()); $vendor2->removeMenuItem($item1); $this->assertCount(1, $vendor1->getMenuItems()); $this->assertSame($vendor1, $item1->getFoodVendor()); } }