32 lines
1.0 KiB
Go
32 lines
1.0 KiB
Go
package service
|
|
|
|
import "testing"
|
|
|
|
func TestNormalizeSortByRules(t *testing.T) {
|
|
t.Run("field asc and desc", func(t *testing.T) {
|
|
if got := normalizeSortByRules("name", sortField("name")); got != "name ASC" {
|
|
t.Fatalf("unexpected asc sort: %q", got)
|
|
}
|
|
if got := normalizeSortByRules("-name", sortField("name")); got != "name DESC" {
|
|
t.Fatalf("unexpected desc sort: %q", got)
|
|
}
|
|
})
|
|
|
|
t.Run("alias and custom expression", func(t *testing.T) {
|
|
got := normalizeSortByRules("sort_order", sortExpr("sort_order ASC, created_at DESC", "sort_order DESC, created_at DESC", "sort_order"))
|
|
if got != "sort_order ASC, created_at DESC" {
|
|
t.Fatalf("unexpected custom sort: %q", got)
|
|
}
|
|
got = normalizeSortByRules("-hospital_name", sortField("hospital_name", "name", "hospital_name"))
|
|
if got != "hospital_name DESC" {
|
|
t.Fatalf("unexpected alias sort: %q", got)
|
|
}
|
|
})
|
|
|
|
t.Run("unknown", func(t *testing.T) {
|
|
if got := normalizeSortByRules("unknown", sortField("name")); got != "" {
|
|
t.Fatalf("expected empty for unknown, got %q", got)
|
|
}
|
|
})
|
|
}
|