package metadata

import (
	"testing"

	"github.com/pingcap-inc/nexuscrm-contract/pkg/metadatair"
)

func TestNeutralMetadataIRComesFromContractModule(t *testing.T) {
	version, err := metadatair.ParseVersion("1.0.0")
	if err != nil {
		t.Fatalf("ParseVersion() error = %v", err)
	}

	doc := metadatair.Document{
		Version: version,
		Nodes: []metadatair.NodeHeader{{
			ID:   "Issue.Status",
			Kind: metadatair.NodeKindField,
			Owner: metadatair.Owner{
				Layer:     metadatair.OwnerLayerL1,
				OwnerPack: "toy-workflow-pack",
			},
			Source: metadatair.SourceLocation{
				Format:    metadatair.SourceFormatPackComponentJSON,
				URI:       "pack://toy-workflow/objects/Issue.json",
				Component: "objects/Issue",
				Path:      "/fields/Status",
			},
			Boundary: metadatair.LoweringBoundary{
				From: metadatair.SourceFormatPackComponentJSON,
				To:   metadatair.TargetSurfaceNeutralIR,
			},
		}},
	}

	if err := doc.Validate(); err != nil {
		t.Fatalf("metadata IR contract validation failed: %v", err)
	}
}
