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

Side by Side Diff: service/datastore/checkfilter_test.go

Issue 1259593005: Add 'user friendly' datastore API. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: more docs Created 5 years, 4 months 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 unified diff | Download patch
« no previous file with comments | « service/datastore/checkfilter.go ('k') | service/datastore/context.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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) {
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 }
OLDNEW
« no previous file with comments | « service/datastore/checkfilter.go ('k') | service/datastore/context.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698