package metadata

import (
	"testing"

	"github.com/nexuscrm/shared/pkg/constants"
	"github.com/nexuscrm/shared/pkg/formulastorage"
	"github.com/nexuscrm/shared/pkg/models"
)

func TestNormalizeCreatedFormulaFieldDefaultsActiveMode(t *testing.T) {
	formula := "Amount * 2"
	returnType := constants.FieldTypeCurrency
	field := &models.FieldMetadata{
		APIName:    "DoubleAmount__c",
		Type:       constants.FieldTypeFormula,
		Formula:    &formula,
		ReturnType: &returnType,
	}

	normalizeCreatedFormulaField(field)

	if field.FormulaMode == nil || *field.FormulaMode != "active" {
		t.Fatalf("FormulaMode = %v, want active", field.FormulaMode)
	}
	if !formulastorage.IsActiveComputedField(field) {
		t.Fatal("formulastorage.IsActiveComputedField = false, want true")
	}
}

func TestNormalizeCreatedFormulaFieldPreservesExplicitFrozenMode(t *testing.T) {
	formula := "Amount * 2"
	mode := "frozen"
	field := &models.FieldMetadata{
		APIName:     "SnapshotAmount__c",
		Type:        constants.FieldTypeFormula,
		Formula:     &formula,
		FormulaMode: &mode,
	}

	normalizeCreatedFormulaField(field)

	if field.FormulaMode == nil || *field.FormulaMode != "frozen" {
		t.Fatalf("FormulaMode = %v, want frozen", field.FormulaMode)
	}
	if formulastorage.IsActiveComputedField(field) {
		t.Fatal("formulastorage.IsActiveComputedField = true, want false for frozen formula")
	}
}
