package tidb

import (
	"strings"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestTaskParentAuthorityMigrationContract(t *testing.T) {
	t.Parallel()

	frontier := readMigrationSQL(t, migrationFiles, "migrations/00366_task_parent_authority_frontier.sql")
	frontierUp := extractMigrationUpSQL(t, frontier)
	require.Contains(t, frontierUp, "workspace_ref")
	require.Contains(t, frontierUp, "channel_ref")
	require.Contains(t, frontierUp, "task_boards_workspace_channel_ref_key")
	require.NotContains(t, strings.ToUpper(frontierUp), "MODIFY COLUMN")
	require.NotContains(t, frontierUp, "ADD COLUMN `authority_from_at`\n,")
	require.NotContains(t, frontierUp, "ADD COLUMN `authority_to_at`\n,")
	require.Equal(t, 1, strings.Count(frontierUp, "DROP INDEX IF EXISTS"))
	require.Equal(t, 2, strings.Count(frontierUp, "DROP COLUMN IF EXISTS"))
	require.NotContains(t, frontierUp, "workspace_channel_ref_key` ON `task_boards`,")
}
