/
datastore_test.go
54 lines (45 loc) · 990 Bytes
/
datastore_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package datastore
import (
"cloud.google.com/go/datastore"
"context"
"testing"
)
type Task struct {
Description string
}
func TestDatastore(t *testing.T) {
ctx := context.Background()
container, err := setupDatastore(ctx)
if err != nil {
t.Fatal(err)
}
// Clean up the container after the test is complete
t.Cleanup(func() {
if err := container.Terminate(ctx); err != nil {
t.Fatalf("failed to terminate container: %s", err)
}
})
t.Setenv("DATASTORE_EMULATOR_HOST", container.URI)
dsClient, err := datastore.NewClient(ctx, "test-project")
if err != nil {
t.Fatal(err)
}
defer dsClient.Close()
k := datastore.NameKey("Task", "sample", nil)
data := Task{
Description: "my description",
}
_, err = dsClient.Put(ctx, k, &data)
if err != nil {
t.Fatal(err)
}
saved := Task{}
err = dsClient.Get(ctx, k, &saved)
if err != nil {
t.Fatal(err)
}
// perform assertions
if saved != data {
t.Fatalf("Expected value %s. Got %s.", data, saved)
}
}