Index: impl/prod/everything_test.go |
diff --git a/impl/prod/everything_test.go b/impl/prod/everything_test.go |
index a769557decce690cb551d713fe46ca36ad5ff536..03e06b0d5053fa02a86793cd5fd7def62bff59de 100644 |
--- a/impl/prod/everything_test.go |
+++ b/impl/prod/everything_test.go |
@@ -28,14 +28,16 @@ var ( |
type TestStruct struct { |
ID int64 `gae:"$id"` |
- ValueI []int64 |
- ValueB []bool |
- ValueS []string |
- ValueF []float64 |
- ValueBS [][]byte // "ByteString" |
- ValueK []*datastore.Key |
- ValueBK []blobstore.Key |
- ValueGP []datastore.GeoPoint |
+ ValueI []int64 |
+ ValueB []bool |
+ ValueS []string |
+ ValueF []float64 |
+ ValueBS [][]byte // "ByteString" |
+ ValueK []*datastore.Key |
+ ValueBK []blobstore.Key |
+ ValueGP []datastore.GeoPoint |
+ ValueSingle string |
+ ValueSingleSlice []string |
} |
func TestBasicDatastore(t *testing.T) { |
@@ -129,6 +131,8 @@ func TestBasicDatastore(t *testing.T) { |
ValueGP: []datastore.GeoPoint{ |
{Lat: 120.7, Lng: 95.5}, |
}, |
+ ValueSingle: "ohai", |
+ ValueSingleSlice: []string{"kthxbye"}, |
} |
So(ds.Put(&orig), ShouldBeNil) |
@@ -136,6 +140,15 @@ func TestBasicDatastore(t *testing.T) { |
So(ds.Get(&ret), ShouldBeNil) |
So(ret, ShouldResemble, orig) |
+ // make sure single- and multi- properties are preserved. |
+ pmap := datastore.PropertyMap{ |
+ "$id": mpNI(orig.ID), |
+ "$kind": mpNI("TestStruct"), |
+ } |
+ So(ds.Get(pmap), ShouldBeNil) |
+ So(pmap["ValueSingle"], ShouldHaveSameTypeAs, datastore.Property{}) |
+ So(pmap["ValueSingleSlice"], ShouldHaveSameTypeAs, datastore.PropertySlice(nil)) |
+ |
// can't be sure the indexes have caught up... so sleep |
time.Sleep(time.Second) |
@@ -155,12 +168,12 @@ func TestBasicDatastore(t *testing.T) { |
So(ds.GetAll(q, &rslts), ShouldBeNil) |
So(rslts, ShouldResemble, []datastore.PropertyMap{ |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueS": {mp("hello")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueS": mp("hello"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueS": {mp("world")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueS": mp("world"), |
}, |
}) |
@@ -169,20 +182,20 @@ func TestBasicDatastore(t *testing.T) { |
So(ds.GetAll(q, &rslts), ShouldBeNil) |
So(rslts, ShouldResemble, []datastore.PropertyMap{ |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueBS": {mp("allo")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueBS": mp("allo"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueBS": {mp("hello")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueBS": mp("hello"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueBS": {mp("world")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueBS": mp("world"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueBS": {mp("zurple")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueBS": mp("zurple"), |
}, |
}) |
@@ -195,24 +208,24 @@ func TestBasicDatastore(t *testing.T) { |
So(ds.GetAll(q, &rslts), ShouldBeNil) |
So(rslts, ShouldResemble, []datastore.PropertyMap{ |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueI": {mp(1)}, |
- "ValueS": {mp("hello")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueI": mp(1), |
+ "ValueS": mp("hello"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueI": {mp(1)}, |
- "ValueS": {mp("world")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueI": mp(1), |
+ "ValueS": mp("world"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueI": {mp(7)}, |
- "ValueS": {mp("hello")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueI": mp(7), |
+ "ValueS": mp("hello"), |
}, |
{ |
- "$key": {mpNI(ds.KeyForObj(&orig))}, |
- "ValueI": {mp(7)}, |
- "ValueS": {mp("world")}, |
+ "$key": mpNI(ds.KeyForObj(&orig)), |
+ "ValueI": mp(7), |
+ "ValueS": mp("world"), |
}, |
}) |
@@ -225,8 +238,8 @@ func TestBasicDatastore(t *testing.T) { |
Convey("Can Put/Get (time)", func() { |
// time comparisons in Go are wonky, so this is pulled out |
pm := datastore.PropertyMap{ |
- "$key": {mpNI(ds.NewKey("Something", "value", 0, nil))}, |
- "Time": { |
+ "$key": mpNI(ds.NewKey("Something", "value", 0, nil)), |
+ "Time": datastore.PropertySlice{ |
mp(time.Date(1938, time.January, 1, 1, 1, 1, 1, time.UTC)), |
mp(time.Time{}), |
}, |
@@ -237,25 +250,25 @@ func TestBasicDatastore(t *testing.T) { |
rslt.SetMeta("key", ds.KeyForObj(pm)) |
So(ds.Get(&rslt), ShouldBeNil) |
- So(pm["Time"][0].Value(), ShouldResemble, rslt["Time"][0].Value()) |
+ So(pm.Slice("Time")[0].Value(), ShouldResemble, rslt.Slice("Time")[0].Value()) |
q := datastore.NewQuery("Something").Project("Time") |
all := []datastore.PropertyMap{} |
So(ds.GetAll(q, &all), ShouldBeNil) |
So(len(all), ShouldEqual, 2) |
- prop := all[0]["Time"][0] |
+ prop := all[0].Slice("Time")[0] |
So(prop.Type(), ShouldEqual, datastore.PTInt) |
tval, err := prop.Project(datastore.PTTime) |
So(err, ShouldBeNil) |
So(tval, ShouldResemble, time.Time{}.UTC()) |
- tval, err = all[1]["Time"][0].Project(datastore.PTTime) |
+ tval, err = all[1].Slice("Time")[0].Project(datastore.PTTime) |
So(err, ShouldBeNil) |
- So(tval, ShouldResemble, pm["Time"][0].Value()) |
+ So(tval, ShouldResemble, pm.Slice("Time")[0].Value()) |
ent := datastore.PropertyMap{ |
- "$key": {mpNI(ds.MakeKey("Something", "value"))}, |
+ "$key": mpNI(ds.MakeKey("Something", "value")), |
} |
So(ds.Get(&ent), ShouldBeNil) |
So(ent["Time"], ShouldResemble, pm["Time"]) |