<?php declare(strict_types=1);

namespace App\Tests\Entity;

use App\Entity\FoodVendor;
use App\Entity\MenuItem;
use DateTimeImmutable;
use PHPUnit\Framework\TestCase;

final class MenuItemTest extends TestCase
{
    public function testMenuItem(): void
    {
        $item = new MenuItem;
        $item->setName('Test');
        $this->assertEquals('Test', $item->getName());

        $vendor = new FoodVendor;
        $vendor->setName('Test');

        $item->setFoodVendor($vendor);
        $this->assertEquals($vendor, $item->getFoodVendor());

        $this->assertFalse($item->isDeleted());
        $this->assertNull($item->getDeletedAt());
        $item->delete();
        $this->assertTrue($item->isDeleted());
        $this->assertInstanceOf(DateTimeImmutable::class, $item->getDeletedAt());
    }

    public function testMenuItemAlias(): void
    {
        $item = new MenuItem;
        $item->setName('Test');
        $this->assertEquals('Test', $item->getName());

        $vendor = new FoodVendor;
        $vendor->setName('Test');

        $item->setFoodVendor($vendor);

        $item2 = new MenuItem;
        $item2->setName('Test2');
        $item2->setFoodVendor($vendor);

        $item->addAlias($item2);

        $this->assertCount(1, $item->getAliases());
        $this->assertSame($item, $item2->getAliasOf());

        $item->removeAlias($item2);
        $this->assertCount(0, $item->getAliases());
        $this->assertNull($item2->getAliasOf());

    }
}