OLD | NEW |
| (Empty) |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 package gae | |
6 | |
7 import ( | |
8 "errors" | |
9 "testing" | |
10 | |
11 . "github.com/smartystreets/goconvey/convey" | |
12 "golang.org/x/net/context" | |
13 ) | |
14 | |
15 type fakeRDS struct{ RawDatastore } | |
16 type fakeMC struct{ Memcache } | |
17 type fakeTQ struct{ TaskQueue } | |
18 type fakeGI struct{ GlobalInfo } | |
19 | |
20 type fakeFiltRDS struct{ RawDatastore } | |
21 | |
22 func (fakeFiltRDS) Count(DSQuery) (int, error) { | |
23 return 0, errors.New("wow") | |
24 } | |
25 | |
26 type fakeFiltTQ struct{ TaskQueue } | |
27 | |
28 func (fakeFiltTQ) Purge(string) error { | |
29 return errors.New("wow") | |
30 } | |
31 | |
32 type fakeFiltMC struct{ Memcache } | |
33 | |
34 func (fakeFiltMC) Flush() error { | |
35 return errors.New("wow") | |
36 } | |
37 | |
38 type fakeFiltGI struct{ GlobalInfo } | |
39 | |
40 func (fakeFiltGI) Namespace(string) (context.Context, error) { | |
41 return nil, errors.New("wow") | |
42 } | |
43 | |
44 func TestServices(t *testing.T) { | |
45 t.Parallel() | |
46 | |
47 Convey("Test service interfaces", t, func() { | |
48 c := context.Background() | |
49 Convey("without adding anything", func() { | |
50 So(GetRDS(c), ShouldBeNil) | |
51 So(GetTQ(c), ShouldBeNil) | |
52 So(GetMC(c), ShouldBeNil) | |
53 So(GetGI(c), ShouldBeNil) | |
54 }) | |
55 | |
56 Convey("adding a basic implementation", func() { | |
57 c = SetRDS(c, fakeRDS{}) | |
58 c = SetTQ(c, fakeTQ{}) | |
59 c = SetMC(c, fakeMC{}) | |
60 c = SetGI(c, fakeGI{}) | |
61 | |
62 Convey("lets you pull them back out", func() { | |
63 So(GetRDS(c), ShouldResemble, fakeRDS{}) | |
64 So(GetTQ(c), ShouldResemble, fakeTQ{}) | |
65 So(GetMC(c), ShouldResemble, fakeMC{}) | |
66 So(GetGI(c), ShouldResemble, fakeGI{}) | |
67 }) | |
68 | |
69 Convey("and lets you add filters", func() { | |
70 c = AddRDSFilters(c, func(ic context.Context, rd
s RawDatastore) RawDatastore { | |
71 return fakeFiltRDS{rds} | |
72 }) | |
73 c = AddTQFilters(c, func(ic context.Context, tq
TaskQueue) TaskQueue { | |
74 return fakeFiltTQ{tq} | |
75 }) | |
76 c = AddMCFilters(c, func(ic context.Context, mc
Memcache) Memcache { | |
77 return fakeFiltMC{mc} | |
78 }) | |
79 c = AddGIFilters(c, func(ic context.Context, gi
GlobalInfo) GlobalInfo { | |
80 return fakeFiltGI{gi} | |
81 }) | |
82 | |
83 _, err := GetRDS(c).Count(nil) | |
84 So(err.Error(), ShouldEqual, "wow") | |
85 | |
86 So(GetTQ(c).Purge("").Error(), ShouldEqual, "wow
") | |
87 | |
88 So(GetMC(c).Flush().Error(), ShouldEqual, "wow") | |
89 | |
90 _, err = GetGI(c).Namespace("") | |
91 So(err.Error(), ShouldEqual, "wow") | |
92 }) | |
93 }) | |
94 Convey("adding zero filters does nothing", func() { | |
95 So(AddRDSFilters(c), ShouldEqual, c) | |
96 So(AddTQFilters(c), ShouldEqual, c) | |
97 So(AddMCFilters(c), ShouldEqual, c) | |
98 So(AddGIFilters(c), ShouldEqual, c) | |
99 }) | |
100 }) | |
101 } | |
OLD | NEW |