package userstore import ( "testing" "galaxy/user/internal/domain/policy" "github.com/stretchr/testify/require" ) func TestDeriveEligibilityMarkerValuesCollapsesUnderPermanentBlock(t *testing.T) { t.Parallel() activeCodes := map[policy.SanctionCode]struct{}{ policy.SanctionCodePermanentBlock: {}, } values := deriveEligibilityMarkerValues(true, activeCodes) require.False(t, values[policy.EligibilityMarkerCanLogin]) require.False(t, values[policy.EligibilityMarkerCanCreatePrivateGame]) require.False(t, values[policy.EligibilityMarkerCanManagePrivateGame]) require.False(t, values[policy.EligibilityMarkerCanJoinGame]) require.False(t, values[policy.EligibilityMarkerCanUpdateProfile]) } func TestDeriveEligibilityMarkerValuesPermanentBlockDominatesOtherSanctions(t *testing.T) { t.Parallel() activeCodes := map[policy.SanctionCode]struct{}{ policy.SanctionCodePermanentBlock: {}, policy.SanctionCodeLoginBlock: {}, policy.SanctionCodeGameJoinBlock: {}, } values := deriveEligibilityMarkerValues(false, activeCodes) for marker, value := range values { require.Falsef(t, value, "marker %q must be false under permanent_block", marker) } } func TestDeriveEligibilityMarkerValuesFreeUserWithoutPermanentBlock(t *testing.T) { t.Parallel() values := deriveEligibilityMarkerValues(false, map[policy.SanctionCode]struct{}{}) require.True(t, values[policy.EligibilityMarkerCanLogin]) require.False(t, values[policy.EligibilityMarkerCanCreatePrivateGame]) require.False(t, values[policy.EligibilityMarkerCanManagePrivateGame]) require.True(t, values[policy.EligibilityMarkerCanJoinGame]) require.True(t, values[policy.EligibilityMarkerCanUpdateProfile]) } func TestKnownCatalogsIncludeStage22Codes(t *testing.T) { t.Parallel() require.Contains(t, knownSanctionCodes, policy.SanctionCodePermanentBlock) require.Contains(t, knownLimitCodes, policy.LimitCodeMaxRegisteredRaceNames) }