package persistence

import (
	"context"
	"testing"
)

func TestPermissionAuthoringAuditDisplayMigrationWidensWarmTiDBSchema(t *testing.T) {
	db, cleanup := openSchemaDDLTiDB(t)
	defer cleanup()
	if _, err := db.Exec(`CREATE TABLE _System_SetupAuditTrail (
		Id VARCHAR(255) NOT NULL PRIMARY KEY,
		Display TEXT NULL
	)`); err != nil {
		t.Fatalf("create legacy SetupAuditTrail: %v", err)
	}
	repo := &SchemaRepository{db: db}
	if err := repo.reconcilePermissionAuthoringAuditDisplayCapacity(context.Background()); err != nil {
		t.Fatalf("widen legacy SetupAuditTrail: %v", err)
	}
	if err := repo.reconcilePermissionAuthoringAuditDisplayCapacity(context.Background()); err != nil {
		t.Fatalf("repeat SetupAuditTrail migration: %v", err)
	}

	columnType, nullable, err := inspectPermissionAuthoringAuditDisplay(context.Background(), db)
	if err != nil {
		t.Fatalf("inspect migrated SetupAuditTrail: %v", err)
	}
	if columnType != "mediumtext" || nullable != "YES" {
		t.Fatalf("migrated Display = %s/nullable=%s, want mediumtext/YES", columnType, nullable)
	}
}
