Index: service/datastore/pls_test.go |
diff --git a/service/datastore/pls_test.go b/service/datastore/pls_test.go |
index a39571a51759994216cb6f5a598caece1d5f5a84..959226af5ae02cadc8717f4aad79d4d6edc03e8b 100644 |
--- a/service/datastore/pls_test.go |
+++ b/service/datastore/pls_test.go |
@@ -337,7 +337,7 @@ type MismatchTypes struct { |
IS []int |
} |
-type BadSpecial struct { |
+type BadMeta struct { |
ID int64 `gae:"$id"` |
id string `gae:"$id"` |
} |
@@ -375,9 +375,10 @@ func (d *Doubler) Save(withMeta bool) (PropertyMap, error) { |
return propMap, nil |
} |
-func (d *Doubler) GetMeta(string) (interface{}, error) { return nil, ErrMetaFieldUnset } |
-func (d *Doubler) SetMeta(string, interface{}) error { return ErrMetaFieldUnset } |
-func (d *Doubler) Problem() error { return nil } |
+func (d *Doubler) GetMeta(string) (interface{}, error) { return nil, ErrMetaFieldUnset } |
+func (d *Doubler) GetMetaDefault(_ string, dflt interface{}) interface{} { return dflt } |
+func (d *Doubler) SetMeta(string, interface{}) error { return ErrMetaFieldUnset } |
+func (d *Doubler) Problem() error { return nil } |
var _ PropertyLoadSaver = (*Doubler)(nil) |
@@ -402,9 +403,10 @@ func (d *Deriver) Save(withMeta bool) (PropertyMap, error) { |
}, nil |
} |
-func (d *Deriver) GetMeta(string) (interface{}, error) { return nil, ErrMetaFieldUnset } |
-func (d *Deriver) SetMeta(string, interface{}) error { return ErrMetaFieldUnset } |
-func (d *Deriver) Problem() error { return nil } |
+func (d *Deriver) GetMeta(string) (interface{}, error) { return nil, ErrMetaFieldUnset } |
+func (d *Deriver) GetMetaDefault(_ string, dflt interface{}) interface{} { return dflt } |
+func (d *Deriver) SetMeta(string, interface{}) error { return ErrMetaFieldUnset } |
+func (d *Deriver) Problem() error { return nil } |
var _ PropertyLoadSaver = (*Deriver)(nil) |
@@ -1564,10 +1566,10 @@ func TestRoundTrip(t *testing.T) { |
}) |
} |
-func TestSpecial(t *testing.T) { |
+func TestMeta(t *testing.T) { |
t.Parallel() |
- Convey("Test special fields", t, func() { |
+ Convey("Test meta fields", t, func() { |
Convey("Can retrieve from struct", func() { |
o := &N0{ID: 100} |
pls := GetPLS(o) |
@@ -1578,6 +1580,10 @@ func TestSpecial(t *testing.T) { |
val, err = pls.GetMeta("kind") |
So(err, ShouldBeNil) |
So(val, ShouldEqual, "whatnow") |
+ |
+ So(pls.GetMetaDefault("kind", "zappo"), ShouldEqual, "whatnow") |
+ So(pls.GetMetaDefault("id", "stringID"), ShouldEqual, "stringID") |
+ So(pls.GetMetaDefault("id", 6), ShouldEqual, 100) |
}) |
Convey("Getting something not there is an error", func() { |
@@ -1587,6 +1593,12 @@ func TestSpecial(t *testing.T) { |
So(err, ShouldEqual, ErrMetaFieldUnset) |
}) |
+ Convey("Default works for missing fields", func() { |
+ o := &N0{ID: 100} |
+ pls := GetPLS(o) |
+ So(pls.GetMetaDefault("whozit", 10), ShouldEqual, 10) |
+ }) |
+ |
Convey("getting/setting from a bad struct is an error", func() { |
o := &Recursive{} |
pls := GetPLS(o) |
@@ -1597,7 +1609,13 @@ func TestSpecial(t *testing.T) { |
So(err, ShouldNotBeNil) |
}) |
- Convey("can assign values to exported special fields", func() { |
+ Convey("Default works for bad structs", func() { |
+ o := &Recursive{} |
+ pls := GetPLS(o) |
+ So(pls.GetMetaDefault("whozit", 10), ShouldEqual, 10) |
+ }) |
+ |
+ Convey("can assign values to exported meta fields", func() { |
o := &N0{ID: 100} |
pls := GetPLS(o) |
err := pls.SetMeta("id", int64(200)) |
@@ -1619,7 +1637,7 @@ func TestSpecial(t *testing.T) { |
Convey("StructPLS Miscellaneous", t, func() { |
Convey("multiple overlapping fields is an error", func() { |
- o := &BadSpecial{} |
+ o := &BadMeta{} |
pls := GetPLS(o) |
err := pls.Load(nil) |
So(err, ShouldErrLike, "multiple times") |