|
4 | 4 | "context"
|
5 | 5 | "testing"
|
6 | 6 |
|
| 7 | + "cloud.google.com/go/datastore" |
7 | 8 | "cloud.google.com/go/firestore"
|
8 | 9 | "github.com/stretchr/testify/require"
|
9 | 10 | "google.golang.org/api/option"
|
@@ -59,3 +60,48 @@ func TestRun(t *testing.T) {
|
59 | 60 | require.Equal(t, "Ada", saved.Firstname)
|
60 | 61 | require.Equal(t, "Lovelace", saved.Lastname)
|
61 | 62 | }
|
| 63 | + |
| 64 | +func TestRunWithDatastore(t *testing.T) { |
| 65 | + ctx := context.Background() |
| 66 | + |
| 67 | + firestoreContainer, err := tcfirestore.Run( |
| 68 | + ctx, |
| 69 | + "gcr.io/google.com/cloudsdktool/cloud-sdk:513.0.0-emulators", |
| 70 | + tcfirestore.WithProjectID("firestore-project"), |
| 71 | + tcfirestore.WithDatastoreMode(), |
| 72 | + ) |
| 73 | + testcontainers.CleanupContainer(t, firestoreContainer) |
| 74 | + require.NoError(t, err) |
| 75 | + |
| 76 | + projectID := firestoreContainer.ProjectID() |
| 77 | + |
| 78 | + conn, err := grpc.NewClient(firestoreContainer.URI(), grpc.WithTransportCredentials(insecure.NewCredentials())) |
| 79 | + require.NoError(t, err) |
| 80 | + |
| 81 | + options := []option.ClientOption{option.WithGRPCConn(conn)} |
| 82 | + client, err := datastore.NewClient(ctx, projectID, options...) |
| 83 | + require.NoError(t, err) |
| 84 | + defer client.Close() |
| 85 | + |
| 86 | + userKey := datastore.NameKey("users", "alovelace", nil) |
| 87 | + |
| 88 | + type Person struct { |
| 89 | + Firstname string `json:"firstname"` |
| 90 | + Lastname string `json:"lastname"` |
| 91 | + } |
| 92 | + |
| 93 | + data := Person{ |
| 94 | + Firstname: "Ada", |
| 95 | + Lastname: "Lovelace", |
| 96 | + } |
| 97 | + |
| 98 | + _, err = client.Put(ctx, userKey, &data) |
| 99 | + require.NoError(t, err) |
| 100 | + |
| 101 | + saved := Person{} |
| 102 | + err = client.Get(ctx, userKey, &saved) |
| 103 | + require.NoError(t, err) |
| 104 | + |
| 105 | + require.Equal(t, "Ada", saved.Firstname) |
| 106 | + require.Equal(t, "Lovelace", saved.Lastname) |
| 107 | +} |
0 commit comments