diff --git a/backend/internal/model/user.go b/backend/internal/model/user.go index e0827a2e..3db317b1 100644 --- a/backend/internal/model/user.go +++ b/backend/internal/model/user.go @@ -91,10 +91,11 @@ func (u User) FullName() string { func (u User) Initials() string { first := utils.GetFirstCharacter(u.FirstName) last := utils.GetFirstCharacter(u.LastName) - if first == "" && last == "" && len(u.Username) >= 2 { - return strings.ToUpper(u.Username[:2]) + if first != "" || last != "" { + return strings.ToUpper(first + last) } - return strings.ToUpper(first + last) + + return strings.ToUpper(utils.GetFirstCharacter(u.Username)) } func (u User) LastModified() time.Time { diff --git a/backend/internal/model/user_test.go b/backend/internal/model/user_test.go new file mode 100644 index 00000000..1bb24e2d --- /dev/null +++ b/backend/internal/model/user_test.go @@ -0,0 +1,52 @@ +package model + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestUserInitials(t *testing.T) { + tests := []struct { + name string + user User + expected string + }{ + { + name: "first and last name", + user: User{Username: "username", FirstName: "John", LastName: "Doe"}, + expected: "JD", + }, + { + name: "first name only", + user: User{Username: "username", FirstName: "John"}, + expected: "J", + }, + { + name: "last name only", + user: User{Username: "username", LastName: "Doe"}, + expected: "D", + }, + { + name: "ASCII username", + user: User{Username: "username"}, + expected: "U", + }, + { + name: "single-character username", + user: User{Username: "a"}, + expected: "A", + }, + { + name: "empty username", + user: User{}, + expected: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.expected, tt.user.Initials()) + }) + } +}