package packs

import (
	"strings"
	"testing"
)

func TestSourceBackedAccessPolicySidecarOwnsPolicyComponents(t *testing.T) {
	metadataSrc := readPacksSourceForStructureTest(t, "source_backed_metadata_components.go")
	sidecarSrc := readPacksSourceForStructureTest(t, "source_backed_access_policy_sidecar.go")

	for _, symbol := range []string{
		"func newSourceBackedObjectRecordMutationPolicyComponent(",
		"type sourceBackedObjectRecordMutationPolicyRow struct",
		"func sourceBackedObjectRecordMutationPolicyProjection(",
		"func newSourceBackedObjectLifecyclePolicyComponent(",
		"type sourceBackedObjectLifecyclePolicyRow struct",
		"func sourceBackedObjectLifecyclePolicyProjection(",
		"func decodeObjectAccessPolicy(",
		"func canonicalPackSidecarJSON(",
		"func nullStringTrimmed(",
	} {
		if strings.Contains(metadataSrc, symbol) {
			t.Fatalf("source_backed_metadata_components.go still owns access-policy sidecar symbol %q", symbol)
		}
		if !strings.Contains(sidecarSrc, symbol) {
			t.Fatalf("source_backed_access_policy_sidecar.go is missing access-policy sidecar symbol %q", symbol)
		}
	}
}
