package local import ( "testing" "time" "galaxy/user/internal/domain/account" "galaxy/user/internal/domain/common" "galaxy/user/internal/service/shared" "github.com/stretchr/testify/require" ) func TestRaceNamePolicyCanonicalKey(t *testing.T) { t.Parallel() policy, err := NewRaceNamePolicy() require.NoError(t, err) tests := []struct { name string left common.RaceName right common.RaceName }{ { name: "case insensitive collision", left: common.RaceName("Pilot Nova"), right: common.RaceName("pilot nova"), }, { name: "ascii anti fraud collision", left: common.RaceName("Pilot Nova"), right: common.RaceName("P1lot N0va"), }, { name: "unicode confusable collision", left: common.RaceName("paypal"), right: common.RaceName("раураl"), }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() leftKey, err := policy.CanonicalKey(tt.left) require.NoError(t, err) rightKey, err := policy.CanonicalKey(tt.right) require.NoError(t, err) require.Equal(t, rightKey, leftKey) }) } } func TestBuildRaceNameReservationPreservesOriginalDisplayValue(t *testing.T) { t.Parallel() policy, err := NewRaceNamePolicy() require.NoError(t, err) record, err := shared.BuildRaceNameReservation( policy, common.UserID("user-123"), common.RaceName("P1lot Nova"), time.Unix(1_775_240_000, 0).UTC(), ) require.NoError(t, err) require.Equal(t, common.RaceName("P1lot Nova"), record.RaceName) require.NotEqual(t, account.RaceNameCanonicalKey(""), record.CanonicalKey) }