package catalogreconcile

import (
	"testing"

	"github.com/nexuscrm/kernel/pkg/formula"
)

func TestCatalogCompilerAdmitsServiceWindowTermMonthsIntrinsics(t *testing.T) {
	_, err := formula.ParseFunctionBundlePayload([]byte(`{
		"functions": [{
			"name": "SERVICE_WINDOW_TERM_MONTHS",
			"minArgs": 2,
			"maxArgs": 2,
			"return": {"kind": "fixed", "type": "number"},
			"args": [
				{"type": "date", "nullable": true},
				{"type": "date", "nullable": true}
			],
			"evaluator": {
				"kind": "formula_expr_v1",
				"params": ["startDate", "endDate"],
				"body": "IF(AND(12 * (YEAR(DATE_ADD(endDate, 1)) - YEAR(startDate)) + MONTH(DATE_ADD(endDate, 1)) - MONTH(startDate) > 0, __DATE_ADD_MONTHS_TARGET_CLAMP__(startDate, 12 * (YEAR(DATE_ADD(endDate, 1)) - YEAR(startDate)) + MONTH(DATE_ADD(endDate, 1)) - MONTH(startDate)) = DATE_ADD(endDate, 1)), 12 * (YEAR(DATE_ADD(endDate, 1)) - YEAR(startDate)) + MONTH(DATE_ADD(endDate, 1)) - MONTH(startDate), ROUND((__DATE_DIFF_DAYS__(endDate, startDate) + 1) / 30.4375, 1))"
			}
		}]
	}`))
	if err != nil {
		t.Fatalf("Catalog compiler rejected the service-window formula supported by Core: %v", err)
	}
}
