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 }