package persistence

import (
	"strings"
	"testing"

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

// The admission config guard is the persistence-side whitelist for layout
// content: any PageLayout field missing from it is silently dropped on the
// field-admission save path. This pins primaryHeaderActions into that
// contract so the pinned-primary-row configuration survives round-trips.
func TestAdmissionConfigGuardCarriesPrimaryHeaderActions(t *testing.T) {
	layout := &models.PageLayout{
		ID:                   "layout-guard-primary",
		ObjectAPIName:        "Widget",
		PrimaryHeaderActions: []string{"standard-action:createQuote", "metadata-action:AddProducts"},
	}
	guardJSON, err := pageLayoutAdmissionConfigGuardFromLayout(layout)
	if err != nil {
		t.Fatalf("pageLayoutAdmissionConfigGuardFromLayout() error = %v", err)
	}
	if !strings.Contains(guardJSON, `"primaryHeaderActions":["standard-action:createQuote","metadata-action:AddProducts"]`) {
		t.Fatalf("guard JSON missing primaryHeaderActions: %s", guardJSON)
	}
}
