setName('Test'); $this->assertEquals('Test', $vendor->getName()); $this->assertInstanceOf(Ulid::class, $vendor->getId()); $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()); } }