//go:build mysql // +build mysql package mysql import ( "database/sql" "testing" ) func TestNormalizeUserPhone(t *testing.T) { for input, want := range map[string]string{ "13800138000": "+8613800138000", "+8613800138000": "+8613800138000", "tel:+17025550001": "+17025550001", } { got, err := normalizeUserPhone(input) if err != nil { t.Fatalf("normalize %q: %v", input, err) } if got != want { t.Fatalf("normalize %q: got %q, want %q", input, got, want) } } if _, err := normalizeUserPhone("12345"); err == nil { t.Fatal("invalid phone unexpectedly accepted") } } func TestProfilePublicFromFields(t *testing.T) { public := profilePublicFromFields(map[string]any{ "fn": "旧昵称", "name": "旧昵称", "nickname": "旧昵称", "display_name": "旧昵称", "avatar_file_id": "old_avatar", "photo": "old_photo", "public_account": "usrAccount", }, sql.NullString{String: "新昵称", Valid: true}, sql.NullString{String: "file_avatar_1", Valid: true}).(map[string]any) for _, key := range []string{"fn", "name", "nickname", "display_name"} { if public[key] != "新昵称" { t.Fatalf("nickname field %s not overlaid: %#v", key, public) } } if public["avatar_file_id"] != "file_avatar_1" || public["public_account"] != "usrAccount" { t.Fatalf("profile public not overlaid: %#v", public) } public = profilePublicFromFields(map[string]any{ "fn": "旧昵称", "avatar_file_id": "old_avatar", "public_account": "usrAccount", }, sql.NullString{Valid: true}, sql.NullString{Valid: true}).(map[string]any) for _, key := range []string{"fn", "name", "nickname", "display_name", "avatar_file_id", "photo", "avatar"} { if _, ok := public[key]; ok { t.Fatalf("legacy profile field %s should not be read from im_users.public: %#v", key, public) } } if public["public_account"] != "usrAccount" { t.Fatalf("unrelated public field changed: %#v", public) } } func TestProfileSeedFromPublic(t *testing.T) { nickname, avatar := profileSeedFromPublic(map[string]any{ "fn": "旧昵称", "photo": "file_avatar_1", }) if nickname != "旧昵称" || avatar != "file_avatar_1" { t.Fatalf("unexpected profile seed nickname=%q avatar=%q", nickname, avatar) } }