package audit

import (
	"testing"
)

func TestHistoryEligibilityCompatibilityMatrixTiDB(t *testing.T) {
	db, cleanup := openAuditTiDB(t)
	defer cleanup()

	for _, statement := range []string{
		`CREATE TABLE _System_Object (Id VARCHAR(255) PRIMARY KEY, ApiName VARCHAR(255) NOT NULL, IsDeleted TINYINT(1) NOT NULL DEFAULT 0)`,
		`CREATE TABLE _System_Field (Id VARCHAR(255) PRIMARY KEY, ObjectId VARCHAR(255) NOT NULL, ApiName VARCHAR(255) NOT NULL, IsDeleted TINYINT(1) NOT NULL DEFAULT 0)`,
		`CREATE TABLE _System_FieldHistoryTrackingInterval (Id VARCHAR(255) PRIMARY KEY, FieldId VARCHAR(255) NOT NULL, StartedSequence BIGINT NOT NULL, EndedSequence BIGINT NULL)`,
		`INSERT INTO _System_Object (Id, ApiName) VALUES ('object-account', 'Account')`,
		`INSERT INTO _System_Field (Id, ObjectId, ApiName) VALUES ('field-name', 'object-account', 'Name')`,
		`INSERT INTO _System_FieldHistoryTrackingInterval (Id, FieldId, StartedSequence) VALUES ('interval-name', 'field-name', 10)`,
		`INSERT INTO _System_AuditLog (Id, ObjectApiName, RecordId, FieldName, OldValue, NewValue, ChangedById, ChangedAt, HistorySequence, FieldHistoryEligible) VALUES
			('stamped-true', 'Account', 'record-1', 'Name', 'a', 'b', 'user-1', '2026-08-28 00:00:01', NULL, TRUE),
			('stamped-false', 'Account', 'record-1', 'Name', 'b', 'c', 'user-1', '2026-08-28 00:00:02', 11, FALSE),
			('legacy-eligible', 'Account', 'record-1', 'Name', 'c', 'd', 'user-1', '2026-08-28 00:00:03', 12, NULL),
			('legacy-unproven', 'Account', 'record-1', 'Name', 'd', 'e', 'user-1', '2026-08-28 00:00:04', NULL, NULL)`,
	} {
		if _, err := db.Exec(statement); err != nil {
			t.Fatalf("prepare compatibility matrix: %v", err)
		}
	}

	rows, err := ExecuteHistoryPlan(t.Context(), db, HistoryQueryPlan{
		ObjectApiName: "Account",
		AllowedFields: []string{"Name"},
	}, "record-1", 0, 0, false, "", "")
	if err != nil {
		t.Fatal(err)
	}
	if len(rows) != 2 || rows[0].ID != "stamped-true" || rows[1].ID != "legacy-eligible" {
		t.Fatalf("compatibility rows = %#v, want stamped true plus interval-proven legacy row", rows)
	}
}
