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  }