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  }