vendor: update all dependencies
This commit is contained in:
+194
-32
@@ -26,30 +26,34 @@ import (
|
||||
)
|
||||
|
||||
func TestQueryToProto(t *testing.T) {
|
||||
c := &Client{}
|
||||
filtr := func(path []string, op string, val interface{}) *pb.StructuredQuery_Filter {
|
||||
f, err := filter{path, op, val}.toProto()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return f
|
||||
}
|
||||
|
||||
c := &Client{projectID: "P", databaseID: "DB"}
|
||||
coll := c.Collection("C")
|
||||
q := coll.Query
|
||||
aFilter, err := filter{[]string{"a"}, ">", 5}.toProto()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
bFilter, err := filter{[]string{"b"}, "<", "foo"}.toProto()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
slashStarFilter, err := filter{[]string{"/", "*"}, ">", 5}.toProto()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
type S struct {
|
||||
A int `firestore:"a"`
|
||||
}
|
||||
docsnap := &DocumentSnapshot{
|
||||
Ref: coll.Doc("D"),
|
||||
proto: &pb.Document{
|
||||
Fields: map[string]*pb.Value{"a": intval(7), "b": intval(8)},
|
||||
},
|
||||
}
|
||||
for _, test := range []struct {
|
||||
desc string
|
||||
in Query
|
||||
want *pb.StructuredQuery
|
||||
}{
|
||||
{
|
||||
in: q.Select(),
|
||||
desc: "q.Select()",
|
||||
in: q.Select(),
|
||||
want: &pb.StructuredQuery{
|
||||
Select: &pb.StructuredQuery_Projection{
|
||||
Fields: []*pb.StructuredQuery_FieldReference{fref1("__name__")},
|
||||
@@ -57,7 +61,8 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.Select("a", "b"),
|
||||
desc: `q.Select("a", "b")`,
|
||||
in: q.Select("a", "b"),
|
||||
want: &pb.StructuredQuery{
|
||||
Select: &pb.StructuredQuery_Projection{
|
||||
Fields: []*pb.StructuredQuery_FieldReference{fref1("a"), fref1("b")},
|
||||
@@ -65,7 +70,8 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.Select("a", "b").Select("c"), // last wins
|
||||
desc: `q.Select("a", "b").Select("c")`,
|
||||
in: q.Select("a", "b").Select("c"), // last wins
|
||||
want: &pb.StructuredQuery{
|
||||
Select: &pb.StructuredQuery_Projection{
|
||||
Fields: []*pb.StructuredQuery_FieldReference{fref1("c")},
|
||||
@@ -73,7 +79,8 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.SelectPaths([]string{"*"}, []string{"/"}),
|
||||
desc: `q.SelectPaths([]string{"*"}, []string{"/"})`,
|
||||
in: q.SelectPaths([]string{"*"}, []string{"/"}),
|
||||
want: &pb.StructuredQuery{
|
||||
Select: &pb.StructuredQuery_Projection{
|
||||
Fields: []*pb.StructuredQuery_FieldReference{fref1("*"), fref1("/")},
|
||||
@@ -81,18 +88,20 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: ` q.Where("a", ">", 5)`,
|
||||
in: q.Where("a", ">", 5),
|
||||
want: &pb.StructuredQuery{Where: aFilter},
|
||||
want: &pb.StructuredQuery{Where: filtr([]string{"a"}, ">", 5)},
|
||||
},
|
||||
{
|
||||
in: q.Where("a", ">", 5).Where("b", "<", "foo"),
|
||||
desc: `q.Where("a", ">", 5).Where("b", "<", "foo")`,
|
||||
in: q.Where("a", ">", 5).Where("b", "<", "foo"),
|
||||
want: &pb.StructuredQuery{
|
||||
Where: &pb.StructuredQuery_Filter{
|
||||
&pb.StructuredQuery_Filter_CompositeFilter{
|
||||
&pb.StructuredQuery_CompositeFilter{
|
||||
Op: pb.StructuredQuery_CompositeFilter_AND,
|
||||
Filters: []*pb.StructuredQuery_Filter{
|
||||
aFilter, bFilter,
|
||||
filtr([]string{"a"}, ">", 5), filtr([]string{"b"}, "<", "foo"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -100,11 +109,13 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: ` q.WherePath([]string{"/", "*"}, ">", 5)`,
|
||||
in: q.WherePath([]string{"/", "*"}, ">", 5),
|
||||
want: &pb.StructuredQuery{Where: slashStarFilter},
|
||||
want: &pb.StructuredQuery{Where: filtr([]string{"/", "*"}, ">", 5)},
|
||||
},
|
||||
{
|
||||
in: q.OrderBy("b", Asc).OrderBy("a", Desc).OrderByPath([]string{"~"}, Asc),
|
||||
desc: `q.OrderBy("b", Asc).OrderBy("a", Desc).OrderByPath([]string{"~"}, Asc)`,
|
||||
in: q.OrderBy("b", Asc).OrderBy("a", Desc).OrderByPath([]string{"~"}, Asc),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("b"), pb.StructuredQuery_ASCENDING},
|
||||
@@ -114,21 +125,24 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.Offset(2).Limit(3),
|
||||
desc: `q.Offset(2).Limit(3)`,
|
||||
in: q.Offset(2).Limit(3),
|
||||
want: &pb.StructuredQuery{
|
||||
Offset: 2,
|
||||
Limit: &wrappers.Int32Value{3},
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.Offset(2).Limit(3).Limit(4).Offset(5), // last wins
|
||||
desc: `q.Offset(2).Limit(3).Limit(4).Offset(5)`,
|
||||
in: q.Offset(2).Limit(3).Limit(4).Offset(5), // last wins
|
||||
want: &pb.StructuredQuery{
|
||||
Offset: 5,
|
||||
Limit: &wrappers.Int32Value{4},
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.OrderBy("a", Asc).StartAt(7).EndBefore(9),
|
||||
desc: `q.OrderBy("a", Asc).StartAt(7).EndBefore(9)`,
|
||||
in: q.OrderBy("a", Asc).StartAt(7).EndBefore(9),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
@@ -144,7 +158,8 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.OrderBy("a", Asc).StartAt(7).EndBefore(9),
|
||||
desc: `q.OrderBy("a", Asc).StartAt(7).EndAt(9)`,
|
||||
in: q.OrderBy("a", Asc).StartAt(7).EndAt(9),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
@@ -155,12 +170,13 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
EndAt: &pb.Cursor{
|
||||
Values: []*pb.Value{intval(9)},
|
||||
Before: true,
|
||||
Before: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.OrderBy("a", Asc).StartAfter(7).EndAt(9),
|
||||
desc: `q.OrderBy("a", Asc).StartAfter(7).EndAt(9)`,
|
||||
in: q.OrderBy("a", Asc).StartAfter(7).EndAt(9),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
@@ -176,7 +192,25 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
in: q.OrderBy("a", Asc).OrderBy("b", Desc).StartAfter(7, 8).EndAt(9, 10),
|
||||
desc: `q.OrderBy(DocumentID, Asc).StartAfter("foo").EndBefore("bar")`,
|
||||
in: q.OrderBy(DocumentID, Asc).StartAfter("foo").EndBefore("bar"),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{refval(coll.parentPath + "/documents/C/foo")},
|
||||
Before: false,
|
||||
},
|
||||
EndAt: &pb.Cursor{
|
||||
Values: []*pb.Value{refval(coll.parentPath + "/documents/C/bar")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: `q.OrderBy("a", Asc).OrderBy("b", Desc).StartAfter(7, 8).EndAt(9, 10)`,
|
||||
in: q.OrderBy("a", Asc).OrderBy("b", Desc).StartAfter(7, 8).EndAt(9, 10),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
@@ -194,6 +228,7 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
{
|
||||
// last of StartAt/After wins, same for End
|
||||
desc: `q.OrderBy("a", Asc).StartAfter(1).StartAt(2).EndAt(3).EndBefore(4)`,
|
||||
in: q.OrderBy("a", Asc).
|
||||
StartAfter(1).StartAt(2).
|
||||
EndAt(3).EndBefore(4),
|
||||
@@ -211,14 +246,128 @@ func TestQueryToProto(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
// Start/End with DocumentSnapshot
|
||||
// These tests are from the "Document Snapshot Cursors" doc.
|
||||
{
|
||||
desc: `q.StartAt(docsnap)`,
|
||||
in: q.StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: `q.OrderBy("a", Asc).StartAt(docsnap)`,
|
||||
in: q.OrderBy("a", Asc).StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
desc: `q.OrderBy("a", Desc).StartAt(docsnap)`,
|
||||
in: q.OrderBy("a", Desc).StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_DESCENDING},
|
||||
{fref1("__name__"), pb.StructuredQuery_DESCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: `q.OrderBy("a", Desc).OrderBy("b", Asc).StartAt(docsnap)`,
|
||||
in: q.OrderBy("a", Desc).OrderBy("b", Asc).StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_DESCENDING},
|
||||
{fref1("b"), pb.StructuredQuery_ASCENDING},
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{intval(7), intval(8), refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: `q.Where("a", "==", 3).StartAt(docsnap)`,
|
||||
in: q.Where("a", "==", 3).StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
Where: filtr([]string{"a"}, "==", 3),
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: `q.Where("a", "<", 3).StartAt(docsnap)`,
|
||||
in: q.Where("a", "<", 3).StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
Where: filtr([]string{"a"}, "<", 3),
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: `q.Where("b", "==", 1).Where("a", "<", 3).StartAt(docsnap)`,
|
||||
in: q.Where("b", "==", 1).Where("a", "<", 3).StartAt(docsnap),
|
||||
want: &pb.StructuredQuery{
|
||||
Where: &pb.StructuredQuery_Filter{
|
||||
&pb.StructuredQuery_Filter_CompositeFilter{
|
||||
&pb.StructuredQuery_CompositeFilter{
|
||||
Op: pb.StructuredQuery_CompositeFilter_AND,
|
||||
Filters: []*pb.StructuredQuery_Filter{
|
||||
filtr([]string{"b"}, "==", 1),
|
||||
filtr([]string{"a"}, "<", 3),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
OrderBy: []*pb.StructuredQuery_Order{
|
||||
{fref1("a"), pb.StructuredQuery_ASCENDING},
|
||||
{fref1("__name__"), pb.StructuredQuery_ASCENDING},
|
||||
},
|
||||
StartAt: &pb.Cursor{
|
||||
Values: []*pb.Value{intval(7), refval(coll.parentPath + "/documents/C/D")},
|
||||
Before: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
} {
|
||||
got, err := test.in.toProto()
|
||||
if err != nil {
|
||||
t.Fatalf("%+v: %v", test.in, err)
|
||||
t.Errorf("%s: %v", test.desc, err)
|
||||
continue
|
||||
}
|
||||
test.want.From = []*pb.StructuredQuery_CollectionSelector{{CollectionId: "C"}}
|
||||
if !testEqual(got, test.want) {
|
||||
t.Errorf("%+v: got\n%v\nwant\n%v", test.in, pretty.Value(got), pretty.Value(test.want))
|
||||
t.Errorf("%s:\ngot\n%v\nwant\n%v", test.desc, pretty.Value(got), pretty.Value(test.want))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -230,7 +379,15 @@ func fref1(s string) *pb.StructuredQuery_FieldReference {
|
||||
func TestQueryToProtoErrors(t *testing.T) {
|
||||
st := map[string]interface{}{"a": ServerTimestamp}
|
||||
del := map[string]interface{}{"a": Delete}
|
||||
q := (&Client{}).Collection("C").Query
|
||||
c := &Client{projectID: "P", databaseID: "DB"}
|
||||
coll := c.Collection("C")
|
||||
docsnap := &DocumentSnapshot{
|
||||
Ref: coll.Doc("D"),
|
||||
proto: &pb.Document{
|
||||
Fields: map[string]*pb.Value{"a": intval(7)},
|
||||
},
|
||||
}
|
||||
q := coll.Query
|
||||
for _, query := range []Query{
|
||||
Query{}, // no collection ID
|
||||
q.Where("x", "!=", 1), // invalid operator
|
||||
@@ -248,6 +405,11 @@ func TestQueryToProtoErrors(t *testing.T) {
|
||||
q.Where("x", "==", del), // Delete in filter
|
||||
q.OrderBy("a", Asc).StartAt(del), // Delete in Start
|
||||
q.OrderBy("a", Asc).EndAt(del), // Delete in End
|
||||
q.OrderBy(DocumentID, Asc).StartAt(7), // wrong type for __name__
|
||||
q.OrderBy(DocumentID, Asc).EndAt(7), // wrong type for __name__
|
||||
q.OrderBy("b", Asc).StartAt(docsnap), // doc snapshot does not have order-by field
|
||||
q.StartAt(docsnap).EndAt("x"), // mixed doc snapshot and fields
|
||||
q.StartAfter("x").EndBefore(docsnap), // mixed doc snapshot and fields
|
||||
} {
|
||||
_, err := query.toProto()
|
||||
if err == nil {
|
||||
|
||||
Reference in New Issue
Block a user