package persistence

import (
	"testing"

	"github.com/nexuscrm/kernel/pkg/schema"
	"github.com/nexuscrm/shared/pkg/constants"
)

func TestPermissionAuthoringAuditDisplayMigrationRequiresCanonicalCatalogIntent(t *testing.T) {
	canonical := schema.TableDefinition{
		TableName: constants.TableSetupAuditTrail,
		Columns: []schema.ColumnDefinition{{
			Name: permissionAuthoringAuditDisplayColumn, Type: "MEDIUMTEXT", Nullable: true,
		}},
	}
	if !declaresPermissionAuthoringAuditDisplayCapacity(canonical) {
		t.Fatal("canonical SetupAuditTrail display capacity was not recognized")
	}
	canonical.Columns[0].Type = "TEXT"
	if declaresPermissionAuthoringAuditDisplayCapacity(canonical) {
		t.Fatal("legacy TEXT catalog definition authorized its own migration")
	}
	canonical.Columns[0].Type = "MEDIUMTEXT"
	canonical.Columns[0].Nullable = false
	if declaresPermissionAuthoringAuditDisplayCapacity(canonical) {
		t.Fatal("non-null catalog definition authorized the nullable migration")
	}
}
