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

Side by Side Diff: impl/memory/datastore_query_execution_test.go

Issue 1302813003: impl/memory: Implement Queries (Closed) Base URL: https://github.com/luci/gae.git@add_multi_iterator
Patch Set: Baby's first query! 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
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 package memory
6
7 import (
8 "testing"
9
10 ds "github.com/luci/gae/service/datastore"
11 "github.com/luci/gae/service/info"
12 . "github.com/smartystreets/goconvey/convey"
13 "golang.org/x/net/context"
14 )
15
16 type qExpect struct {
17 q ds.Query
18 inTxn bool
19
20 get []ds.PropertyMap
21 }
22
23 type qExStage struct {
24 addIdxs []*ds.IndexDefinition
25 addEnts []ds.PropertyMap
26
27 expect []qExpect
28 }
29
30 type qExTest struct {
31 name string
32 test []qExStage
33 }
34
35 var queryExecutionTests = []qExTest{
36 {"basic", []qExStage{
37 {
38 addEnts: []ds.PropertyMap{
39 pmap("$key", key("Something", 1), NEXT,
40 "Val", 1, 2, 3, NEXT,
41 "Extra", "hello",
42 ),
43 pmap("$key", key("Something", 2), NEXT,
44 "Val", 8, 7, NEXT,
45 "Extra", "zebra",
46 ),
47 pmap("$key", key("Something", 3), NEXT,
48 "Val", 1, 2, 2, 100, NEXT,
49 "Extra", "waffle",
50 ),
51 },
52 expect: []qExpect{
53 {q: nq("Something")},
54 },
55 },
56 {
57 expect: []qExpect{
58 {q: nq("Something"),
59 get: []ds.PropertyMap{
60 pmap("$key", key("Something", 1) , NEXT,
61 "Val", 1, 2, 3, NEXT,
62 "Extra", "hello",
63 ),
64 pmap("$key", key("Something", 2) , NEXT,
65 "Val", 8, 7, NEXT,
66 "Extra", "zebra",
67 ),
68 pmap("$key", key("Something", 3) , NEXT,
69 "Val", 1, 2, 2, 100, NEX T,
70 "Extra", "waffle",
71 ),
72 }},
73 },
74 },
75 }},
76 }
77
78 func TestQueryExecution(t *testing.T) {
79 t.Parallel()
80
81 Convey("Test query execution", t, func() {
82 c, err := info.Get(Use(context.Background())).Namespace("ns")
83 So(err, ShouldBeNil)
84
85 data := ds.Get(c)
86 testing := data.Raw().Testable()
87
88 for _, tc := range queryExecutionTests {
89 Convey(tc.name, func() {
90 for _, stage := range tc.test {
91 testing.CatchupIndexes()
92
93 testing.AddIndexes(stage.addIdxs...)
94 So(data.PutMulti(stage.addEnts), ShouldB eNil)
95
96 for _, expect := range stage.expect {
97 rslt := []ds.PropertyMap(nil)
98 So(data.GetAll(expect.q, &rslt), ShouldBeNil)
99 So(rslt, ShouldResemble, expect. get)
100 }
101 }
102 })
103 }
104 })
105 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698