package lookups_test

import (
	"testing"

	"github.com/nexuscrm/tests/contract/ui_api/internal/asserts"
)

func assertLookupResults(t testing.TB, body map[string]any) {
	t.Helper()
	_, value := asserts.RequireAnyField(t, body, "records", "searchRecords", "results")
	records := asserts.RequireSlice(t, value)
	asserts.RequireNonEmptySlice(t, records, "lookup records")

	for i, entry := range records {
		if i >= 5 {
			break
		}
		record := asserts.RequireMap(t, entry)
		assertLookupRecord(t, record)
	}
}

func assertLookupRecord(t testing.TB, record map[string]any) {
	t.Helper()

	if idRaw, ok := record["id"].(string); ok && idRaw != "" {
		asserts.RequireSalesforceID(t, idRaw)
	}
	if idRaw, ok := record["recordId"].(string); ok && idRaw != "" {
		asserts.RequireSalesforceID(t, idRaw)
	}

	_ = asserts.RequireStringFieldAny(t, record, "name", "label", "title", "subtitle")
	asserts.RequireStringIfPresent(t, record, "iconUrl")
	asserts.RequireStringIfPresent(t, record, "objectApiName")
	asserts.RequireMapIfPresent(t, record, "attributes")
	asserts.RequireMapIfPresent(t, record, "fields")
	asserts.RequireBoolIfPresent(t, record, "isRecent")
}
