Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: service/datastore/pls_test.go

Issue 1516173002: Fix error message from KeyForObj when passing an invalid struct. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: Fix GetMetaDefault silliness Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: service/datastore/pls_test.go
diff --git a/service/datastore/pls_test.go b/service/datastore/pls_test.go
index 92ebffcf0b4521a9b5bc4f3912a24e840aa59157..af1a595e795730f2498dc1afa96c7858e0dccd50 100644
--- a/service/datastore/pls_test.go
+++ b/service/datastore/pls_test.go
@@ -586,10 +586,6 @@ func (i *IDParser) GetMeta(key string) (interface{}, error) {
return GetPLS(i).GetMeta(key)
}
-func (i *IDParser) GetMetaDefault(key string, dflt interface{}) interface{} {
- return GetMetaDefaultImpl(i.GetMeta, key, dflt)
-}
-
func (i *IDParser) SetMeta(key string, value interface{}) (err error) {
if key == "id" {
// let the panics flooowwww
@@ -624,10 +620,6 @@ func (i *KindOverride) GetMeta(key string) (interface{}, error) {
return GetPLS(i).GetMeta(key)
}
-func (i *KindOverride) GetMetaDefault(key string, dflt interface{}) interface{} {
- return GetMetaDefaultImpl(i.GetMeta, key, dflt)
-}
-
func (i *KindOverride) SetMeta(key string, value interface{}) error {
if key == "kind" {
kind := value.(string)
@@ -1626,7 +1618,10 @@ func TestRoundTrip(t *testing.T) {
for _, tc := range testCases {
tc := tc
Convey(tc.desc, func() {
- pls, ok := tc.src.(PropertyLoadSaver)
+ pls, ok := tc.src.(interface {
+ PropertyLoadSaver
+ Problem() error
+ })
iannucci 2015/12/12 03:52:22 This silliness is because of the way the tests are
if !ok {
pls = GetPLS(tc.src)
}
@@ -1647,7 +1642,10 @@ func TestRoundTrip(t *testing.T) {
got = pls
} else {
got = reflect.New(reflect.TypeOf(tc.want).Elem()).Interface()
- if pls, ok = got.(PropertyLoadSaver); !ok {
+ if pls, ok = got.(interface {
+ PropertyLoadSaver
+ Problem() error
+ }); !ok {
pls = GetPLS(got)
}
}
@@ -1692,9 +1690,17 @@ func TestMeta(t *testing.T) {
So(err, ShouldBeNil)
So(val, ShouldEqual, "whatnow")
- So(mgs.GetMetaDefault("kind", "zappo"), ShouldEqual, "whatnow")
- So(mgs.GetMetaDefault("id", "stringID"), ShouldEqual, "stringID")
- So(mgs.GetMetaDefault("id", 6), ShouldEqual, 100)
+ v, err := GetMetaDefault(mgs, "kind", "zappo")
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, "whatnow")
+
+ v, err = GetMetaDefault(mgs, "id", "stringID")
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, "stringID")
+
+ v, err = GetMetaDefault(mgs, "id", 6)
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, 100)
})
Convey("Getting something not there is an error", func() {
@@ -1707,7 +1713,9 @@ func TestMeta(t *testing.T) {
Convey("Default works for missing fields", func() {
o := &N0{ID: 100}
mgs := getMGS(o)
- So(mgs.GetMetaDefault("whozit", 10), ShouldEqual, 10)
+ v, err := GetMetaDefault(mgs, "whozit", 10)
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, 10)
})
Convey("getting/setting from a bad struct is an error", func() {
@@ -1720,10 +1728,11 @@ func TestMeta(t *testing.T) {
So(err, ShouldNotBeNil)
})
- Convey("Default works for bad structs", func() {
+ Convey("Default fails for bad structs", func() {
o := &Recursive{}
mgs := getMGS(o)
- So(mgs.GetMetaDefault("whozit", 10), ShouldEqual, 10)
+ _, err := GetMetaDefault(mgs, "whozit", 10)
+ So(err, ShouldErrLike, `field "R" is recursively defined`)
})
Convey("can assign values to exported meta fields", func() {
@@ -1739,7 +1748,7 @@ func TestMeta(t *testing.T) {
o := &N0{ID: 100}
mgs := getMGS(o)
err := mgs.SetMeta("kind", "hi")
- So(err.Error(), ShouldContainSubstring, "unexported field")
+ So(err, ShouldErrLike, "unexported field")
err = mgs.SetMeta("noob", "hi")
So(err, ShouldEqual, ErrMetaFieldUnset)
@@ -1830,7 +1839,7 @@ func TestMeta(t *testing.T) {
Bad Toggle `gae:"$wut"`
}
pls := GetPLS(&BadToggle{})
- So(pls.Problem().Error(), ShouldContainSubstring, "bad/missing default")
+ So(pls.Problem(), ShouldErrLike, "bad/missing default")
})
})
@@ -1914,14 +1923,19 @@ func TestMeta(t *testing.T) {
Val time.Time `gae:"$meta,tomorrow"`
}
pls := GetPLS(&BadDefault{})
- So(pls.Problem().Error(), ShouldContainSubstring, "bad type")
+ So(pls.Problem(), ShouldErrLike, "bad type")
})
Convey("MetaGetterSetter implementation (IDParser)", func() {
idp := &IDParser{parent: "moo", id: 100}
mgs := getMGS(idp)
- So(mgs.GetMetaDefault("id", ""), ShouldEqual, "moo|100")
- So(mgs.GetMetaDefault("kind", ""), ShouldEqual, "CoolKind")
+ v, err := GetMetaDefault(mgs, "id", "")
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, "moo|100")
+
+ v, err = GetMetaDefault(mgs, "kind", "")
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, "CoolKind")
So(mgs.SetMeta("kind", "Something"), ShouldErrLike, "unexported field")
So(mgs.SetMeta("id", "happy|27"), ShouldBeNil)
@@ -1938,10 +1952,14 @@ func TestMeta(t *testing.T) {
Convey("MetaGetterSetter implementation (KindOverride)", func() {
ko := &KindOverride{ID: 20}
mgs := getMGS(ko)
- So(mgs.GetMetaDefault("kind", ""), ShouldEqual, "KindOverride")
+ v, err := GetMetaDefault(mgs, "kind", "")
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, "KindOverride")
ko.customKind = "something"
- So(mgs.GetMetaDefault("kind", ""), ShouldEqual, "something")
+ v, err = GetMetaDefault(mgs, "kind", "")
+ So(err, ShouldBeNil)
+ So(v, ShouldEqual, "something")
So(mgs.SetMeta("kind", "Nerp"), ShouldBeNil)
So(ko.customKind, ShouldEqual, "Nerp")

Powered by Google App Engine
This is Rietveld 408576698