Chromium Code Reviews| Index: filter/featureBreaker/featurebreaker_test.go |
| diff --git a/filter/featureBreaker/featurebreaker_test.go b/filter/featureBreaker/featurebreaker_test.go |
| index 241e12896daa12f48bf25c247d027f7456c9ff04..491edceb47360796a2bac2e3f0d43906510a4485 100644 |
| --- a/filter/featureBreaker/featurebreaker_test.go |
| +++ b/filter/featureBreaker/featurebreaker_test.go |
| @@ -5,15 +5,13 @@ |
| package featureBreaker |
| import ( |
| - "errors" |
| "testing" |
| - "golang.org/x/net/context" |
| - |
| "github.com/luci/gae/impl/memory" |
| "github.com/luci/gae/service/rawdatastore" |
| - |
| + "github.com/luci/luci-go/common/errors" |
| . "github.com/smartystreets/goconvey/convey" |
| + "golang.org/x/net/context" |
| ) |
| func TestBrokenFeatures(t *testing.T) { |
| @@ -21,6 +19,14 @@ func TestBrokenFeatures(t *testing.T) { |
| e := errors.New("default err") |
| + cbe := func(expect string) func(rawdatastore.PropertyMap, error) { |
|
estaab
2015/07/28 21:52:40
better name here, maybe errorSubstrMatch?
iannucci
2015/07/29 07:35:48
nuked in the next cl
|
| + return func(_ rawdatastore.PropertyMap, err error) { |
| + So(err.Error(), ShouldContainSubstring, expect) |
| + } |
| + } |
| + |
| + cbn := func(rawdatastore.PropertyMap, error) {} |
| + |
| Convey("BrokenFeatures", t, func() { |
| c := memory.Use(context.Background()) |
| @@ -28,33 +34,39 @@ func TestBrokenFeatures(t *testing.T) { |
| Convey("without a default", func() { |
| c, bf := FilterRDS(c, nil) |
| rds := rawdatastore.Get(c) |
| + keys := []rawdatastore.Key{rds.NewKey("Wut", "", 1, nil)} |
| Convey("by specifying an error", func() { |
| - bf.BreakFeatures(e, "Get", "Put") |
| - So(rds.Get(nil, nil), ShouldEqual, e) |
| + bf.BreakFeatures(e, "GetMulti", "PutMulti") |
| + So(rds.GetMulti(keys, cbn), ShouldEqual, e) |
| Convey("and you can unbreak them as well", func() { |
| - bf.UnbreakFeatures("Get") |
| - So(rds.Get(nil, nil), ShouldEqual, rawdatastore.ErrInvalidKey) |
| + bf.UnbreakFeatures("GetMulti") |
| + |
| + err := rds.GetMulti(keys, cbe(rawdatastore.ErrNoSuchEntity.Error())) |
| + So(err, ShouldBeNil) |
| Convey("no broken features at all is a shortcut", func() { |
| - bf.UnbreakFeatures("Put") |
| - So(rds.Get(nil, nil), ShouldEqual, rawdatastore.ErrInvalidKey) |
| + bf.UnbreakFeatures("PutMulti") |
| + err := rds.GetMulti(keys, cbe(rawdatastore.ErrNoSuchEntity.Error())) |
| + So(err, ShouldBeNil) |
| }) |
| }) |
| }) |
| Convey("Not specifying an error gets you a generic error", func() { |
| - bf.BreakFeatures(nil, "Get") |
| - So(rds.Get(nil, nil).Error(), ShouldEqual, `feature "Get" is broken`) |
| + bf.BreakFeatures(nil, "GetMulti") |
| + err := rds.GetMulti(keys, cbn) |
| + So(err.Error(), ShouldContainSubstring, `feature "GetMulti" is broken`) |
| }) |
| }) |
| Convey("with a default", func() { |
| c, bf := FilterRDS(c, e) |
| rds := rawdatastore.Get(c) |
| - bf.BreakFeatures(nil, "Get") |
| - So(rds.Get(nil, nil), ShouldEqual, e) |
| + keys := []rawdatastore.Key{rds.NewKey("Wut", "", 1, nil)} |
| + bf.BreakFeatures(nil, "GetMulti") |
| + So(rds.GetMulti(keys, cbn), ShouldEqual, e) |
| }) |
| }) |
| }) |