<?php

namespace Tests\Unit\Models;

use App\Models\PromptLandingPage;
use App\Models\PromptLandingPageVersion;
use Illuminate\Database\QueryException;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Schema;
use Tests\TestCase;

class PromptLandingPageVersionTest extends TestCase
{
    use RefreshDatabase;

    public function test_version_index_names_fit_the_mysql_identifier_limit(): void
    {
        foreach (Schema::getIndexListing('prompt_landing_page_versions') as $name) {
            $this->assertLessThanOrEqual(64, strlen($name));
        }
    }

    public function test_the_same_page_cannot_store_two_rows_for_the_same_version_number(): void
    {
        $page = PromptLandingPage::factory()->approved()->create();
        PromptLandingPageVersion::factory()->for($page, 'page')->create([
            'version' => 2,
        ]);

        $this->expectException(QueryException::class);

        PromptLandingPageVersion::factory()->for($page, 'page')->create([
            'version' => 2,
        ]);
    }
}
