package registration

import (
	"context"
	"testing"
	"time"

	"github.com/stretchr/testify/require"
)

func TestDisplayNameFromEmail(t *testing.T) {
	require.Equal(t, "alice", DisplayNameFromEmail("alice@example.com"))
	require.Equal(t, "example", DisplayNameFromEmail(" example "))
	require.Equal(t, "user", DisplayNameFromEmail("  "))
}

func TestLegacyTargetKeys(t *testing.T) {
	require.Equal(t, []string{"bob"}, LegacyTargetKeys("alice", "Alice", "alice", "bob", "BOB"))
	require.Nil(t, LegacyTargetKeys("", "alice"))
}

func TestNextUniqueName(t *testing.T) {
	existing := map[string]bool{"alice": true, "alice1": true}
	name, err := NextUniqueName(context.Background(), "alice", func(_ context.Context, candidate string) (bool, error) {
		return existing[candidate], nil
	})
	require.NoError(t, err)
	require.Equal(t, "alice2", name)
}

func TestBuildUserRecordUsesUTCNow(t *testing.T) {
	now := time.Date(2026, 5, 3, 6, 0, 0, 0, time.FixedZone("CST", 8*3600))
	user := BuildUserRecord(UserRecordParams{ID: "usr_1", Email: "alice@example.com", Name: "alice", Now: now})
	require.Equal(t, "usr_1", user.ID)
	require.Equal(t, "alice@example.com", user.Email)
	require.Equal(t, time.UTC, user.CreatedAt.Location())
	require.Equal(t, user.CreatedAt, user.UpdatedAt)
}
