package controlplane

import (
	"context"
	"testing"

	"github.com/pingcap-inc/nexuscrm-controlplane/packs"
)

func TestPackSourceOptionsWithSchemaPreservesOperationReleaseAuthority(t *testing.T) {
	const uri = "urn:nexuscrm:pack:operation-authority"
	base := packs.DefaultPackSourceOptions()
	base.ReleaseRepoSources = map[string]packs.ReleaseRepoSource{
		uri: {Root: "/exact/repository/pack", Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},
	}
	ctx := packs.WithOperationPackSourceOptions(context.Background(), base)

	resolved := packSourceOptionsWithSchema(ctx, nil)
	if got := resolved.ReleaseRepoSources[uri]; got != base.ReleaseRepoSources[uri] {
		t.Fatalf("release authority = %#v, want %#v", got, base.ReleaseRepoSources[uri])
	}
	if resolved.ObjectSchemaResolver != nil {
		t.Fatal("nil database unexpectedly produced a schema resolver")
	}

	outside := packSourceOptionsWithSchema(context.Background(), nil)
	if len(outside.ReleaseRepoSources) != 0 {
		t.Fatal("operation release authority leaked outside the candidate context")
	}
}
