77 lines
2.1 KiB
Go
77 lines
2.1 KiB
Go
package roomadmin
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestNormalizeRoomListSortKeepsOnlyContributionSort(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
query listQuery
|
|
wantOrder string
|
|
}{
|
|
{
|
|
name: "default",
|
|
query: listQuery{},
|
|
wantOrder: "rle.created_at_ms DESC, rle.room_id DESC",
|
|
},
|
|
{
|
|
name: "contribution_desc",
|
|
query: listQuery{SortBy: "room_contribution", SortDirection: "desc"},
|
|
wantOrder: "rle.heat DESC, rle.created_at_ms DESC, rle.room_id DESC",
|
|
},
|
|
{
|
|
name: "contribution_asc",
|
|
query: listQuery{SortBy: "heat", SortDirection: "asc"},
|
|
wantOrder: "rle.heat ASC, rle.created_at_ms DESC, rle.room_id DESC",
|
|
},
|
|
{
|
|
name: "unknown_falls_back",
|
|
query: listQuery{SortBy: "owner_user_id", SortDirection: "asc"},
|
|
wantOrder: "rle.created_at_ms DESC, rle.room_id DESC",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
query := normalizeListQuery(test.query)
|
|
if got := roomListOrderBy(query); got != test.wantOrder {
|
|
t.Fatalf("order by mismatch: got %q want %q", got, test.wantOrder)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRobotRoomProfileFromOwnerUsesOwnerNameAndAvatar(t *testing.T) {
|
|
name, avatar, err := robotRoomProfileFromOwner(RoomOwner{
|
|
Username: " Robot Host ",
|
|
Avatar: " https://cdn.example.com/robot.png ",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("robot room owner profile should be valid: %v", err)
|
|
}
|
|
if name != "Robot Host" || avatar != "https://cdn.example.com/robot.png" {
|
|
t.Fatalf("owner profile mismatch: name=%q avatar=%q", name, avatar)
|
|
}
|
|
}
|
|
|
|
func TestRobotRoomProfileFromOwnerRequiresNameAndAvatar(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
owner RoomOwner
|
|
}{
|
|
{name: "missing_name", owner: RoomOwner{Avatar: "https://cdn.example.com/robot.png"}},
|
|
{name: "missing_avatar", owner: RoomOwner{Username: "Robot Host"}},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
_, _, err := robotRoomProfileFromOwner(test.owner)
|
|
if !errors.Is(err, ErrInvalidArgument) {
|
|
t.Fatalf("expected ErrInvalidArgument, got %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|