<?php

namespace App\Tests\Entity;

use App\Entity\BilletDesign;
use App\Entity\Event;
use PHPUnit\Framework\TestCase;

class BilletDesignTest extends TestCase
{
    public function testDefaults(): void
    {
        $design = new BilletDesign();

        self::assertNull($design->getId());
        self::assertNull($design->getEvent());
        self::assertSame('#4f46e5', $design->getAccentColor());
        self::assertSame('Invitation', $design->getInvitationTitle());
        self::assertSame('#d4a017', $design->getInvitationColor());
        self::assertInstanceOf(\DateTimeImmutable::class, $design->getUpdatedAt());
    }

    public function testSetAndGetEvent(): void
    {
        $design = new BilletDesign();
        $event = new Event();
        $result = $design->setEvent($event);

        self::assertSame($event, $design->getEvent());
        self::assertSame($design, $result);
    }

    public function testSetAndGetAccentColor(): void
    {
        $design = new BilletDesign();
        $result = $design->setAccentColor('#ff0000');

        self::assertSame('#ff0000', $design->getAccentColor());
        self::assertSame($design, $result);
    }

    public function testSetAndGetInvitationTitle(): void
    {
        $design = new BilletDesign();
        $result = $design->setInvitationTitle('VIP Pass');

        self::assertSame('VIP Pass', $design->getInvitationTitle());
        self::assertSame($design, $result);
    }

    public function testSetAndGetInvitationColor(): void
    {
        $design = new BilletDesign();
        $result = $design->setInvitationColor('#00ff00');

        self::assertSame('#00ff00', $design->getInvitationColor());
        self::assertSame($design, $result);
    }

    public function testSetAndGetUpdatedAt(): void
    {
        $design = new BilletDesign();
        $date = new \DateTimeImmutable('2026-01-01');
        $result = $design->setUpdatedAt($date);

        self::assertSame($date, $design->getUpdatedAt());
        self::assertSame($design, $result);
    }
}
