<?php
declare(strict_types=1);

namespace FreshCloud\Mail\Tests\MailClient;

use FreshCloud\Mail\MailClient\MailMessage;
use FreshCloud\Mail\MailClient\MailClientException;
use PHPUnit\Framework\TestCase;

final class MailClientTest extends TestCase
{
    public function testMailMessageCreation(): void
    {
        $message = new MailMessage(
            id: '123',
            subject: 'Test Subject',
            from: 'test@example.com',
            to: ['user@example.com']
        );
        $this->assertSame('123', $message->id);
        $this->assertSame('Test Subject', $message->subject);
        $this->assertSame('test@example.com', $message->from);
        $this->assertEquals(['user@example.com'], $message->to);
    }

    public function testMailMessageDefaultValues(): void
    {
        $message = new MailMessage(
            id: '123',
            subject: '',
            from: '',
            to: []
        );
        $this->assertEquals([], $message->cc);
        $this->assertEquals([], $message->bcc);
        $this->assertNull($message->date);
        $this->assertEquals('INBOX', $message->folder);
        $this->assertEquals([], $message->flags);
    }

    public function testMailClientException(): void
    {
        $this->expectException(MailClientException::class);
        throw new MailClientException('Test exception');
    }
}