OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // adapted from github.com/golang/appengine/datastore | 5 // adapted from github.com/golang/appengine/datastore |
6 | 6 |
7 package datastore | 7 package datastore |
8 | 8 |
9 import ( | 9 import ( |
10 "fmt" | 10 "fmt" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 return q | 54 return q |
55 } | 55 } |
56 | 56 |
57 type fakeDatastore struct { | 57 type fakeDatastore struct { |
58 RawInterface | 58 RawInterface |
59 aid string | 59 aid string |
60 ns string | 60 ns string |
61 } | 61 } |
62 | 62 |
63 func (f *fakeDatastore) NewKey(kind, stringID string, intID int64, parent Key) K
ey { | 63 func (f *fakeDatastore) NewKey(kind, stringID string, intID int64, parent Key) K
ey { |
64 » return NewKey(f.aid, f.ns, kind, stringID, intID, parent) | 64 » id := interface{}(stringID) |
| 65 » if stringID == "" { |
| 66 » » id = intID |
| 67 » } |
| 68 » return mkKey(f.aid, f.ns, kind, id, parent) |
65 } | 69 } |
66 | 70 |
67 func (f *fakeDatastore) NewQuery(string) Query { | 71 func (f *fakeDatastore) NewQuery(string) Query { |
68 return &fakeQuery{} | 72 return &fakeQuery{} |
69 } | 73 } |
70 | 74 |
71 func (f *fakeDatastore) Run(q Query, cb RawRunCB) error { | 75 func (f *fakeDatastore) Run(q Query, cb RawRunCB) error { |
72 rq := q.(*fakeQuery) | 76 rq := q.(*fakeQuery) |
73 if rq.err != nil { | 77 if rq.err != nil { |
74 return rq.err | 78 return rq.err |
(...skipping 25 matching lines...) Expand all Loading... |
100 } | 104 } |
101 for i, k := range keys { | 105 for i, k := range keys { |
102 err := error(nil) | 106 err := error(nil) |
103 if k.Kind() == "Fail" { | 107 if k.Kind() == "Fail" { |
104 err = errors.New("PutMulti fail") | 108 err = errors.New("PutMulti fail") |
105 } else { | 109 } else { |
106 So(vals[i]["Value"], ShouldResemble, []Property{MkProper
ty(i)}) | 110 So(vals[i]["Value"], ShouldResemble, []Property{MkProper
ty(i)}) |
107 if assertExtra { | 111 if assertExtra { |
108 So(vals[i]["Extra"], ShouldResemble, []Property{
MkProperty("whoa")}) | 112 So(vals[i]["Extra"], ShouldResemble, []Property{
MkProperty("whoa")}) |
109 } | 113 } |
110 » » » if KeyIncomplete(k) { | 114 » » » if k.Incomplete() { |
111 » » » » k = NewKey(k.AppID(), k.Namespace(), k.Kind(), "
", int64(i+1), k.Parent()) | 115 » » » » k = mkKey(k.AppID(), k.Namespace(), k.Kind(), in
t64(i+1), k.Parent()) |
112 } | 116 } |
113 } | 117 } |
114 cb(k, err) | 118 cb(k, err) |
115 } | 119 } |
116 return nil | 120 return nil |
117 } | 121 } |
118 | 122 |
119 func (f *fakeDatastore) GetMulti(keys []Key, _meta MultiMetaGetter, cb GetMultiC
B) error { | 123 func (f *fakeDatastore) GetMulti(keys []Key, _meta MultiMetaGetter, cb GetMultiC
B) error { |
120 if keys[0].Kind() == "FailAll" { | 124 if keys[0].Kind() == "FailAll" { |
121 return errors.New("GetMulti fail all") | 125 return errors.New("GetMulti fail all") |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 | 545 |
542 Convey("Test Delete/DeleteMulti", t, func() { | 546 Convey("Test Delete/DeleteMulti", t, func() { |
543 c := info.Set(context.Background(), fakeInfo{}) | 547 c := info.Set(context.Background(), fakeInfo{}) |
544 c = SetRawFactory(c, fakeDatastoreFactory) | 548 c = SetRawFactory(c, fakeDatastoreFactory) |
545 ds := Get(c) | 549 ds := Get(c) |
546 So(ds, ShouldNotBeNil) | 550 So(ds, ShouldNotBeNil) |
547 | 551 |
548 Convey("bad", func() { | 552 Convey("bad", func() { |
549 Convey("get single error for RPC failure", func() { | 553 Convey("get single error for RPC failure", func() { |
550 keys := []Key{ | 554 keys := []Key{ |
551 » » » » » NewKey("aid", "ns", "FailAll", "", 1, ni
l), | 555 » » » » » mkKey("aid", "ns", "FailAll", 1, nil), |
552 » » » » » NewKey("aid", "ns", "Ok", "", 1, nil), | 556 » » » » » mkKey("aid", "ns", "Ok", 1, nil), |
553 } | 557 } |
554 So(ds.DeleteMulti(keys).Error(), ShouldEqual, "D
eleteMulti fail all") | 558 So(ds.DeleteMulti(keys).Error(), ShouldEqual, "D
eleteMulti fail all") |
555 }) | 559 }) |
556 | 560 |
557 Convey("get multi error for individual failure", func()
{ | 561 Convey("get multi error for individual failure", func()
{ |
558 keys := []Key{ | 562 keys := []Key{ |
559 ds.NewKey("Ok", "", 1, nil), | 563 ds.NewKey("Ok", "", 1, nil), |
560 ds.NewKey("Fail", "", 2, nil), | 564 ds.NewKey("Fail", "", 2, nil), |
561 } | 565 } |
562 So(ds.DeleteMulti(keys).Error(), ShouldEqual, "D
eleteMulti fail") | 566 So(ds.DeleteMulti(keys).Error(), ShouldEqual, "D
eleteMulti fail") |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
890 So(ds.Run(q, func(k Key, _ CursorCB) bool { | 894 So(ds.Run(q, func(k Key, _ CursorCB) bool { |
891 So(k.IntID(), ShouldEqual, i+1) | 895 So(k.IntID(), ShouldEqual, i+1) |
892 i++ | 896 i++ |
893 return true | 897 return true |
894 }), ShouldBeNil) | 898 }), ShouldBeNil) |
895 }) | 899 }) |
896 | 900 |
897 }) | 901 }) |
898 }) | 902 }) |
899 } | 903 } |
OLD | NEW |