package metadata

import (
	"context"
	"testing"

	"github.com/nexuscrm/kernel/pkg/formula"
	"github.com/nexuscrm/shared/pkg/constants"
	"github.com/nexuscrm/shared/pkg/models"
)

func TestValidateRecordSkipsValidatorRegistryForRuntimeScopedLookup(t *testing.T) {
	vs := NewValidationService(formula.NewEngine())

	validatorName := "runtime_scoped_lookup"
	validatorConfig := `{"filterMappings":[{"recordField":"OpportunityId","sourceField":"Pricebook2Id","targetField":"Pricebook2Id"}]}`
	schema := &models.ObjectMetadata{
		APIName: "OpportunityLineItem",
		Fields: []models.FieldMetadata{
			{
				APIName:         "PricebookEntryId",
				Type:            constants.FieldTypeReference,
				ReferenceTo:     []string{"PricebookEntry"},
				Validator:       &validatorName,
				ValidatorConfig: &validatorConfig,
			},
			{
				APIName:     "OpportunityId",
				Type:        constants.FieldTypeReference,
				ReferenceTo: []string{"Opportunity"},
			},
		},
	}

	record := models.SObject{
		"PricebookEntryId": "01u000000000001",
		"OpportunityId":    "006000000000001",
	}

	if err := vs.ValidateRecord(context.Background(), record, schema, nil, nil, nil); err != nil {
		t.Fatalf("ValidateRecord() error = %v, want nil", err)
	}
}
