<?php
declare(strict_types=1);

namespace FreshCloud\Mail\Tests\MimeContent;

use FreshCloud\Mail\MimeContent\MimeContent;
use FreshCloud\Mail\MimeContent\MimeContentBuilder;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\TestCase;

#[CoversClass(MimeContentBuilder::class)]
final class MimeContentBuilderTest extends TestCase
{
    public function testBuildMimeContent(): void
    {
        $content = (new MimeContentBuilder())
            ->type('text')
            ->subtype('plain')
            ->body('Hello World')
            ->build();
        
        $this->assertInstanceOf(MimeContent::class, $content);
        $this->assertSame('text', $content->type);
        $this->assertSame('plain', $content->subtype);
        $this->assertSame('Hello World', $content->body);
    }

    public function testDefaultValues(): void
    {
        $content = (new MimeContentBuilder())->build();
        $this->assertSame('utf-8', $content->charset);
        $this->assertSame('7bit', $content->encoding);
        $this->assertSame('', $content->body);
        $this->assertNull($content->raw);
    }

    public function testChaining(): void
    {
        $builder = new MimeContentBuilder();
        $this->assertSame($builder, $builder->type('text'));
        $this->assertSame($builder, $builder->subtype('html'));
    }
}