| Index: impl/memory/datastore_test.go
|
| diff --git a/impl/memory/datastore_test.go b/impl/memory/datastore_test.go
|
| index 3a171109a2aedbda94e2ca4b1133dfeeee7bab8d..54ded94a0599fd44739ed928f138e8ae90493a7f 100644
|
| --- a/impl/memory/datastore_test.go
|
| +++ b/impl/memory/datastore_test.go
|
| @@ -530,6 +530,79 @@ func TestDatastoreSingleReadWriter(t *testing.T) {
|
| So(err, ShouldBeNil)
|
| So(count, ShouldEqual, 1) // normally this would include __entity_group__
|
| })
|
| +
|
| + Convey("Datastore namespace interaction", func() {
|
| + run := func(rc context.Context, txn bool) (putErr, getErr, queryErr, countErr error) {
|
| + var foo Foo
|
| +
|
| + putFunc := func(doC context.Context) error {
|
| + return dsS.Get(doC).Put(&foo)
|
| + }
|
| +
|
| + doFunc := func(doC context.Context) {
|
| + ds := dsS.Get(doC)
|
| + getErr = ds.Get(&foo)
|
| +
|
| + q := dsS.NewQuery("Foo").Ancestor(ds.KeyForObj(&foo))
|
| + queryErr = ds.Run(q, func(f *Foo) error { return nil })
|
| + _, countErr = ds.Count(q)
|
| + }
|
| +
|
| + if txn {
|
| + putErr = dsS.Get(rc).RunInTransaction(func(ic context.Context) error {
|
| + return putFunc(ic)
|
| + }, nil)
|
| + if putErr != nil {
|
| + return
|
| + }
|
| +
|
| + dsS.Get(rc).Testable().CatchupIndexes()
|
| + dsS.Get(rc).RunInTransaction(func(ic context.Context) error {
|
| + doFunc(ic)
|
| + return nil
|
| + }, nil)
|
| + } else {
|
| + putErr = putFunc(rc)
|
| + if putErr != nil {
|
| + return
|
| + }
|
| + dsS.Get(rc).Testable().CatchupIndexes()
|
| + doFunc(rc)
|
| + }
|
| + return
|
| + }
|
| +
|
| + for _, txn := range []bool{false, true} {
|
| + Convey(fmt.Sprintf("In transaction? %v", txn), func() {
|
| + Convey("With no namespace installed, can Put, Get, Query, and Count.", func() {
|
| + _, has := infoS.Get(c).GetNamespace()
|
| + So(has, ShouldBeFalse)
|
| +
|
| + putErr, getErr, queryErr, countErr := run(c, txn)
|
| + So(putErr, ShouldBeNil)
|
| + So(getErr, ShouldBeNil)
|
| + So(queryErr, ShouldBeNil)
|
| + So(countErr, ShouldBeNil)
|
| + })
|
| +
|
| + Convey("With an non-empty namespace installed, can Put, Get, Query, and Count.", func() {
|
| + putErr, getErr, queryErr, countErr := run(infoS.Get(c).MustNamespace("foo"), txn)
|
| + So(putErr, ShouldBeNil)
|
| + So(getErr, ShouldBeNil)
|
| + So(queryErr, ShouldBeNil)
|
| + So(countErr, ShouldBeNil)
|
| + })
|
| +
|
| + Convey("With an empty namespace installed, can Put and Get, but not Query or Count.", func() {
|
| + putErr, getErr, queryErr, countErr := run(infoS.Get(c).MustNamespace(""), txn)
|
| + So(putErr, ShouldBeNil)
|
| + So(getErr, ShouldBeNil)
|
| + So(queryErr, ShouldErrLike, "namespace may not be present and empty")
|
| + So(countErr, ShouldErrLike, "namespace may not be present and empty")
|
| + })
|
| + })
|
| + }
|
| + })
|
| })
|
| }
|
|
|
| @@ -669,12 +742,17 @@ func TestAddIndexes(t *testing.T) {
|
| dsS.Get(ctx).Testable().CatchupIndexes()
|
|
|
| for _, ns := range namespaces {
|
| + if ns == "" {
|
| + // Skip query test for empty namespace, as this is invalid.
|
| + continue
|
| + }
|
| +
|
| results = nil
|
| So(dsS.Get(infoS.Get(ctx).MustNamespace(ns)).GetAll(q, &results), ShouldBeNil)
|
| So(len(results), ShouldEqual, 2)
|
| }
|
|
|
| - // Add "foos" to a new namesapce, then confirm that it gets indexed.
|
| + // Add "foos" to a new namespace, then confirm that it gets indexed.
|
| So(dsS.Get(infoS.Get(ctx).MustNamespace("qux")).PutMulti(foos), ShouldBeNil)
|
| dsS.Get(ctx).Testable().CatchupIndexes()
|
|
|
|
|