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 // adapted from github.com/golang/appengine/datastore | |
6 | |
7 package datastore | |
8 | |
9 import ( | |
10 "testing" | |
11 | |
12 "github.com/luci/gae/service/info" | |
13 . "github.com/smartystreets/goconvey/convey" | |
14 "golang.org/x/net/context" | |
15 ) | |
16 | |
17 type fakeRDS struct{ RawInterface } | |
18 | |
19 func (fakeRDS) NewQuery(string) Query { return &fakeQuery{} } | |
20 | |
21 func TestCheckFilter(t *testing.T) { | |
iannucci
2015/08/03 04:00:34
this test probably should have been in the previou
| |
22 t.Parallel() | |
23 | |
24 Convey("Test checkFilter", t, func() { | |
25 // Note that the way we have this context set up, any calls whic h aren't | |
26 // stopped at the checkFilter will nil-pointer panic. We use thi s panic | |
27 // behavior to indicate that the checkfilter has allowed a call to pass | |
28 // through to the implementation in the tests below. In a real a pplication | |
29 // the panics observed in the tests below would actually be suce ssful calls | |
30 // to the implementation. | |
31 c := SetRaw(info.Set(context.Background(), fakeInfo{}), fakeRDS{ }) | |
32 rds := GetRaw(c) // has checkFilter | |
33 So(rds, ShouldNotBeNil) | |
34 | |
35 Convey("RunInTransaction", func() { | |
36 So(rds.RunInTransaction(nil, nil).Error(), ShouldContain Substring, "is nil") | |
37 hit := false | |
38 So(func() { | |
39 rds.RunInTransaction(func(context.Context) error { | |
40 hit = true | |
41 return nil | |
42 }, nil) | |
43 }, ShouldPanic) | |
44 So(hit, ShouldBeFalse) | |
45 }) | |
46 | |
47 Convey("Run", func() { | |
48 So(rds.Run(nil, nil).Error(), ShouldContainSubstring, "q uery is nil") | |
49 So(rds.Run(rds.NewQuery("sup"), nil).Error(), ShouldCont ainSubstring, "callback is nil") | |
50 hit := false | |
51 So(func() { | |
52 rds.Run(rds.NewQuery("sup"), func(Key, PropertyM ap, func() (Cursor, error)) bool { | |
53 hit = true | |
54 return true | |
55 }) | |
56 }, ShouldPanic) | |
57 So(hit, ShouldBeFalse) | |
58 }) | |
59 | |
60 Convey("GetMulti", func() { | |
61 So(rds.GetMulti(nil, nil), ShouldBeNil) | |
62 So(rds.GetMulti([]Key{NewKey("", "", "", "", 0, nil)}, n il).Error(), ShouldContainSubstring, "is nil") | |
63 | |
64 // this is in the wrong aid/ns | |
65 keys := []Key{NewKey("wut", "wrong", "Kind", "", 1, nil) } | |
66 So(rds.GetMulti(keys, func(pm PropertyMap, err error) { | |
67 So(pm, ShouldBeNil) | |
68 So(err, ShouldEqual, ErrInvalidKey) | |
69 }), ShouldBeNil) | |
70 | |
71 keys[0] = NewKey("aid", "ns", "Kind", "", 1, nil) | |
72 hit := false | |
73 So(func() { | |
74 rds.GetMulti(keys, func(pm PropertyMap, err erro r) { | |
75 hit = true | |
76 }) | |
77 }, ShouldPanic) | |
78 So(hit, ShouldBeFalse) | |
79 }) | |
80 | |
81 Convey("PutMulti", func() { | |
82 keys := []Key{} | |
83 vals := []PropertyMap{{}} | |
84 So(rds.PutMulti(keys, vals, nil).Error(), | |
85 ShouldContainSubstring, "mismatched keys/vals") | |
86 So(rds.PutMulti(nil, nil, nil), ShouldBeNil) | |
87 | |
88 badParent := NewKey("aid", "ns", "Wut", "", 0, nil) | |
89 keys = append(keys, NewKey("aid", "ns", "Kind", "", 0, b adParent)) | |
90 So(rds.PutMulti(keys, vals, nil).Error(), ShouldContainS ubstring, "callback is nil") | |
91 | |
92 So(rds.PutMulti(keys, vals, func(k Key, err error) { | |
93 So(k, ShouldBeNil) | |
94 So(err, ShouldEqual, ErrInvalidKey) | |
95 }), ShouldBeNil) | |
96 | |
97 keys = []Key{NewKey("aid", "ns", "Kind", "", 0, nil)} | |
98 vals = []PropertyMap{nil} | |
99 So(rds.PutMulti(keys, vals, func(k Key, err error) { | |
100 So(k, ShouldBeNil) | |
101 So(err.Error(), ShouldContainSubstring, "nil val s entry") | |
102 }), ShouldBeNil) | |
103 | |
104 vals = []PropertyMap{{}} | |
105 hit := false | |
106 So(func() { | |
107 rds.PutMulti(keys, vals, func(k Key, err error) { | |
108 hit = true | |
109 }) | |
110 }, ShouldPanic) | |
111 So(hit, ShouldBeFalse) | |
112 }) | |
113 | |
114 Convey("DeleteMulti", func() { | |
115 So(rds.DeleteMulti(nil, nil), ShouldBeNil) | |
116 So(rds.DeleteMulti([]Key{NewKey("", "", "", "", 0, nil)} , nil).Error(), ShouldContainSubstring, "is nil") | |
117 So(rds.DeleteMulti([]Key{NewKey("", "", "", "", 0, nil)} , func(err error) { | |
118 So(err, ShouldEqual, ErrInvalidKey) | |
119 }), ShouldBeNil) | |
120 | |
121 hit := false | |
122 So(func() { | |
123 rds.DeleteMulti([]Key{NewKey("aid", "ns", "Kind" , "", 1, nil)}, func(error) { | |
124 hit = true | |
125 }) | |
126 }, ShouldPanic) | |
127 So(hit, ShouldBeFalse) | |
128 }) | |
129 | |
130 }) | |
131 } | |
OLD | NEW |