package packs

import (
	"strings"
	"testing"
)

func TestPlatformStandardActionsStayOutOfUXPackRootFile(t *testing.T) {
	uxSrc := readPacksSourceForStructureTest(t, "platform_ux.go")
	actionsSrc := readPacksSourceForStructureTest(t, "platform_standard_actions.go")

	uxSymbols := []string{
		"type PlatformUXPack struct{}",
		"func (p *PlatformUXPack) Apply(",
		"func applyThemes(",
		"func applyUIComponents(",
		"func applySetupPages(",
		"func ApplyFlowRuntimeMaintenance(",
	}
	for _, symbol := range uxSymbols {
		if !strings.Contains(uxSrc, symbol) {
			t.Fatalf("%s should remain in platform_ux.go", symbol)
		}
		if strings.Contains(actionsSrc, symbol) {
			t.Fatalf("%s should not move into platform_standard_actions.go", symbol)
		}
	}

	actionSymbols := []string{
		"type standardActionDef struct",
		"type standardActionRow struct",
		"func StandardActionID(",
		"func verifyStandardActions(",
		"func validateStandardActionFieldMappings(",
		"func CheckStrictActionChildCopyKeys(",
		"func parseStandardActionPayload(",
		"func expandStandardActionRows(",
		"func buildStandardActionsUpsertSQL(",
		"func applyStandardActions(",
		"func markStalePackActionsDeleted(",
		"func ensureStandardActionRowsOwned(",
	}
	for _, symbol := range actionSymbols {
		if strings.Contains(uxSrc, symbol) {
			t.Fatalf("%s should stay in platform_standard_actions.go, not platform_ux.go", symbol)
		}
		if !strings.Contains(actionsSrc, symbol) {
			t.Fatalf("%s should live in platform_standard_actions.go", symbol)
		}
	}
}
