github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/base/params/orderby_test.go (about) 1 package params 2 3 import ( 4 "testing" 5 6 "github.com/google/go-cmp/cmp" 7 ) 8 9 func TestOrderString(t *testing.T) { 10 expect := "+name" 11 o := &Order{Key: "name", Direction: OrderASC} 12 if expect != o.String() { 13 t.Errorf("String mismatch, expected %s, got %s", expect, o.String()) 14 } 15 } 16 17 func TestOrderByString(t *testing.T) { 18 expect := "+name,-updated" 19 o := OrderBy{ 20 {Key: "name", Direction: OrderASC}, 21 {Key: "updated", Direction: OrderDESC}, 22 } 23 if expect != o.String() { 24 t.Errorf("String mismatch, expected %s, got %s", expect, o.String()) 25 } 26 } 27 28 func TestNewOrder(t *testing.T) { 29 got := NewOrder("", OrderASC) 30 if got != nil { 31 t.Errorf("empty key should return nil order") 32 return 33 } 34 expect := &Order{Key: "name", Direction: OrderASC} 35 got = NewOrder("name", OrderASC) 36 if diff := cmp.Diff(expect, got); diff != "" { 37 t.Errorf("Order mismatch (+want,-got):\n%s", diff) 38 return 39 } 40 } 41 42 func TestNewOrderFromString(t *testing.T) { 43 got := NewOrderFromString("") 44 if got != nil { 45 t.Errorf("empty string should return nil order") 46 return 47 } 48 49 cases := []struct { 50 orderStr string 51 expect *Order 52 }{ 53 {"+name", &Order{Key: "name", Direction: OrderASC}}, 54 {"-updated", &Order{Key: "updated", Direction: OrderDESC}}, 55 {"username", &Order{Key: "username", Direction: OrderASC}}, 56 } 57 for _, c := range cases { 58 got := NewOrderFromString(c.orderStr) 59 if diff := cmp.Diff(c.expect, got); diff != "" { 60 t.Errorf("case %q mismatch (+want,-got):\n%s", c.orderStr, diff) 61 return 62 } 63 } 64 } 65 66 func TestOrderByFromString(t *testing.T) { 67 got := NewOrderByFromString("") 68 if len(got) != 0 { 69 t.Errorf("empty string should return empty OrderBy") 70 } 71 72 expect := OrderBy{ 73 {Key: "updated", Direction: OrderASC}, 74 {Key: "name", Direction: OrderDESC}, 75 {Key: "username", Direction: OrderASC}, 76 } 77 got = NewOrderByFromString("+updated,-name,username") 78 if diff := cmp.Diff(expect, got); diff != "" { 79 t.Errorf("OrderBy mismatch (+want,-got):\n%s", diff) 80 return 81 } 82 }