package records

import (
	"reflect"
	"testing"

	"github.com/nexuscrm/metadata/catalogsnapshot"
)

func runtimeRollupBinding() RollupDeltaDefinitionBinding {
	return RollupDeltaDefinitionBinding{
		OrgID: "org-test", AppInstallationID: "installation-test", RuntimeCapabilityID: "runtime.records.mutate.v1",
		CatalogRevision: 9, SchemaGeneration: 8, EngineGeneration: 3,
		CatalogSnapshotDigest:     catalogsnapshot.Digest("sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
		RuntimeMetadataViewDigest: catalogsnapshot.Digest("sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"),
	}
}

func TestRuntimeRollupReadinessOwnsCompleteQueueShape(t *testing.T) {
	want := map[string]string{
		"Id": "varchar(255)", "SourceObject": "varchar(255)", "SourceRecordId": "varchar(255)",
		"ParentObject": "varchar(255)", "ParentRecordId": "varchar(255)", "RollupField": "varchar(255)",
		"Delta": "bigint", "DedupeKey": "varchar(64)", "ScopeDigest": "char(64)",
		"OrgId": "varchar(255)", "AppInstallationId": "varchar(255)", "RuntimeCapabilityId": "varchar(255)",
		"CatalogRevision": "decimal(20,0)", "SchemaGeneration": "decimal(20,0)", "EngineGeneration": "decimal(20,0)",
		"CatalogSnapshotDigest": "char(71)", "RuntimeMetadataViewDigest": "char(71)",
		"Status": "varchar(32)", "RetryCount": "int", "LastError": "text", "LastErrorAt": "datetime",
		"NextAttemptAt": "datetime", "ProcessedAt": "datetime",
		"RepairId": "varchar(255)", "RepairReason": "varchar(1024)", "RepairCount": "int", "LastRepairAt": "datetime(6)",
		"CreatedDate": "datetime", "LastModifiedDate": "datetime",
	}
	if !reflect.DeepEqual(runtimeRollupDeltaRequiredColumns, want) {
		t.Fatalf("Runtime rollup readiness queue shape = %#v, want %#v", runtimeRollupDeltaRequiredColumns, want)
	}
}
