go.mercari.io/datastore@v1.8.2/testsuite/namespace.go (about)

     1  package testsuite
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"go.mercari.io/datastore"
     8  )
     9  
    10  func namespacePutAndGet(ctx context.Context, t *testing.T, client datastore.Client) {
    11  	defer func() {
    12  		err := client.Close()
    13  		if err != nil {
    14  			t.Fatal(err)
    15  		}
    16  	}()
    17  
    18  	type Data struct {
    19  		Name string
    20  	}
    21  
    22  	key := client.IDKey("Test", 1, nil)
    23  	if v := key.Namespace(); v != "" {
    24  		t.Fatalf("unexpected: %v", v)
    25  	}
    26  
    27  	key.SetNamespace("no1")
    28  	if v := key.String(); v != "/Test,1" {
    29  		t.Fatalf("unexpected: %v", v)
    30  	}
    31  
    32  	_, err := client.Put(ctx, key, &Data{"Name #1"})
    33  	if err != nil {
    34  		t.Fatal(err)
    35  	}
    36  
    37  	key.SetNamespace("")
    38  	err = client.Get(ctx, key, &Data{})
    39  	if err != datastore.ErrNoSuchEntity {
    40  		t.Fatal(err)
    41  	}
    42  
    43  	key.SetNamespace("no1")
    44  	err = client.Get(ctx, key, &Data{})
    45  	if err != nil {
    46  		t.Fatal(err)
    47  	}
    48  }
    49  
    50  func namespacePutAndGetWithTx(ctx context.Context, t *testing.T, client datastore.Client) {
    51  	defer func() {
    52  		err := client.Close()
    53  		if err != nil {
    54  			t.Fatal(err)
    55  		}
    56  	}()
    57  
    58  	type Data struct {
    59  		Name string
    60  	}
    61  
    62  	tx, err := client.NewTransaction(ctx)
    63  	if err != nil {
    64  		t.Fatal(err)
    65  	}
    66  
    67  	key := client.IDKey("Test", 1, nil)
    68  	if v := key.Namespace(); v != "" {
    69  		t.Fatalf("unexpected: %v", v)
    70  	}
    71  
    72  	key.SetNamespace("no1")
    73  	if v := key.String(); v != "/Test,1" {
    74  		t.Fatalf("unexpected: %v", v)
    75  	}
    76  
    77  	_, err = tx.Put(key, &Data{"Name #1"})
    78  	if err != nil {
    79  		t.Fatal(err)
    80  	}
    81  
    82  	_, err = tx.Commit()
    83  	if err != nil {
    84  		t.Fatal(err)
    85  	}
    86  
    87  	key.SetNamespace("")
    88  	err = client.Get(ctx, key, &Data{})
    89  	if err != datastore.ErrNoSuchEntity {
    90  		t.Fatal(err)
    91  	}
    92  
    93  	key.SetNamespace("no1")
    94  	err = client.Get(ctx, key, &Data{})
    95  	if err != nil {
    96  		t.Fatal(err)
    97  	}
    98  }
    99  
   100  func namespaceQuery(ctx context.Context, t *testing.T, client datastore.Client) {
   101  	defer func() {
   102  		err := client.Close()
   103  		if err != nil {
   104  			t.Fatal(err)
   105  		}
   106  	}()
   107  
   108  	type Data struct {
   109  		Name string
   110  	}
   111  
   112  	key := client.IDKey("Test", 1, nil)
   113  	if v := key.Namespace(); v != "" {
   114  		t.Fatalf("unexpected: %v", v)
   115  	}
   116  
   117  	key.SetNamespace("no1")
   118  	if v := key.String(); v != "/Test,1" {
   119  		t.Fatalf("unexpected: %v", v)
   120  	}
   121  
   122  	_, err := client.Put(ctx, key, &Data{"Name #1"})
   123  	if err != nil {
   124  		t.Fatal(err)
   125  	}
   126  
   127  	q := client.NewQuery("Test")
   128  	q = q.KeysOnly()
   129  	if v := q.Dump().String(); v != "v1:Test&k=t" {
   130  		t.Fatalf("unexpected: %v", v)
   131  	}
   132  
   133  	var keys []datastore.Key
   134  
   135  	keys, err = client.GetAll(ctx, q, nil)
   136  	if err != nil {
   137  		t.Fatal(err)
   138  	}
   139  	if v := len(keys); v != 0 {
   140  		t.Fatalf("unexpected: %v", v)
   141  	}
   142  
   143  	q = q.Namespace("no1")
   144  	if v := q.Dump().String(); v != "v1:Test&n=no1&k=t" {
   145  		t.Fatalf("unexpected: %v", v)
   146  	}
   147  	keys, err = client.GetAll(ctx, q, nil)
   148  	if err != nil {
   149  		t.Fatal(err)
   150  	}
   151  	if v := len(keys); v != 1 {
   152  		t.Fatalf("unexpected: %v", v)
   153  	}
   154  }