go.mercari.io/datastore@v1.8.2/boom/query_test.go (about) 1 package boom 2 3 import ( 4 "testing" 5 6 "go.mercari.io/datastore/internal/testutils" 7 "google.golang.org/api/iterator" 8 ) 9 10 func TestBoom_IteratorNext(t *testing.T) { 11 ctx, client, cleanUp := testutils.SetupCloudDatastore(t) 12 defer cleanUp() 13 14 type Data struct { 15 ID int64 `datastore:"-" boom:"id"` 16 } 17 18 bm := FromClient(ctx, client) 19 20 var list []*Data 21 for i := 0; i < 100; i++ { 22 list = append(list, &Data{}) 23 } 24 _, err := bm.PutMulti(list) 25 if err != nil { 26 t.Fatal(err) 27 } 28 29 q := bm.NewQuery(bm.Kind(&Data{})) 30 it := bm.Run(q) 31 32 for { 33 obj := &Data{} 34 _, err = it.Next(obj) 35 if err == iterator.Done { 36 break 37 } else if err != nil { 38 t.Fatal(err) 39 } 40 41 if v := obj.ID; v == 0 { 42 t.Errorf("unexpected: %v", v) 43 } 44 45 _, err := it.Cursor() 46 if err != nil { 47 t.Fatal(err) 48 } 49 } 50 } 51 52 func TestBoom_IteratorNextKeysOnly(t *testing.T) { 53 ctx, client, cleanUp := testutils.SetupCloudDatastore(t) 54 defer cleanUp() 55 56 type Data struct { 57 ID int64 `datastore:"-" boom:"id"` 58 } 59 60 bm := FromClient(ctx, client) 61 62 var list []*Data 63 for i := 0; i < 100; i++ { 64 list = append(list, &Data{}) 65 } 66 _, err := bm.PutMulti(list) 67 if err != nil { 68 t.Fatal(err) 69 } 70 71 q := bm.NewQuery(bm.Kind(&Data{})).KeysOnly() 72 it := bm.Run(q) 73 74 for { 75 _, err = it.Next(nil) 76 if err == iterator.Done { 77 break 78 } else if err != nil { 79 t.Fatal(err) 80 } 81 } 82 }