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

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

Issue 1574353004: GitHub #8: Seed indexes from index.yml (Closed) Base URL: https://github.com/luci/gae@master
Patch Set: Created 4 years, 11 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
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 "strings" 11 "strings"
11 "testing" 12 "testing"
12 13
13 . "github.com/smartystreets/goconvey/convey" 14 . "github.com/smartystreets/goconvey/convey"
15 "gopkg.in/yaml.v2"
14 ) 16 )
15 17
16 var indexDefinitionTests = []struct { 18 var indexDefinitionTests = []struct {
17 » id *IndexDefinition 19 » id *IndexDefinition
18 » builtin bool 20 » builtin bool
19 » compound bool 21 » compound bool
20 » str string 22 » str string
21 » yaml []string 23 » yaml []string
24 » serialized []string // without the leading hyphen, for instance
iannucci 2016/01/13 19:12:20 I don't understand this comment
nishanths (utexas) 2016/01/14 21:12:56 My bad. Meant: not inside an array (YAML arrays ha
22 }{ 25 }{
23 { 26 {
24 id: &IndexDefinition{Kind: "kind"}, 27 id: &IndexDefinition{Kind: "kind"},
25 builtin: true, 28 builtin: true,
26 str: "B:kind", 29 str: "B:kind",
27 }, 30 },
28 31
29 { 32 {
30 id: &IndexDefinition{ 33 id: &IndexDefinition{
31 Kind: "kind", 34 Kind: "kind",
(...skipping 24 matching lines...) Expand all
56 compound: true, 59 compound: true,
57 str: "C:Kind|A/prop/-other", 60 str: "C:Kind|A/prop/-other",
58 yaml: []string{ 61 yaml: []string{
59 "- kind: Kind", 62 "- kind: Kind",
60 " ancestor: yes", 63 " ancestor: yes",
61 " properties:", 64 " properties:",
62 " - name: prop", 65 " - name: prop",
63 " - name: other", 66 " - name: other",
64 " direction: desc", 67 " direction: desc",
65 }, 68 },
69 serialized: []string{
70 " kind: Kind",
dnj 2016/01/13 16:16:40 You should be able to avoid repeating "yaml" by Ma
nishanths (utexas) 2016/01/14 21:12:56 Thanks! Much cleaner. :)
71 " ancestor: yes",
72 " properties:",
73 " - name: prop",
74 " - name: other",
75 " direction: desc",
76 },
66 }, 77 },
67 } 78 }
68 79
69 func TestIndexDefinition(t *testing.T) { 80 func TestIndexDefinition(t *testing.T) {
70 t.Parallel() 81 t.Parallel()
71 82
72 Convey("Test IndexDefinition", t, func() { 83 Convey("Test IndexDefinition", t, func() {
73 for _, tc := range indexDefinitionTests { 84 for _, tc := range indexDefinitionTests {
74 Convey(tc.str, func() { 85 Convey(tc.str, func() {
75 So(tc.id.String(), ShouldEqual, tc.str) 86 So(tc.id.String(), ShouldEqual, tc.str)
76 So(tc.id.Builtin(), ShouldEqual, tc.builtin) 87 So(tc.id.Builtin(), ShouldEqual, tc.builtin)
77 So(tc.id.Compound(), ShouldEqual, tc.compound) 88 So(tc.id.Compound(), ShouldEqual, tc.compound)
78 yaml, _ := tc.id.YAMLString() 89 yaml, _ := tc.id.YAMLString()
79 So(yaml, ShouldEqual, strings.Join(tc.yaml, "\n" )) 90 So(yaml, ShouldEqual, strings.Join(tc.yaml, "\n" ))
80 }) 91 })
81 } 92 }
82 }) 93 })
94
95 Convey("Test MarshalYAML/UnmarshalYAML", t, func() {
96 for _, tc := range indexDefinitionTests {
97 Convey(fmt.Sprintf("serializable index definition `%s` i s marshaled and unmarshaled correctly", tc.str), func() {
98 if tc.serialized != nil {
99 // marshal
100 _, err := yaml.Marshal(tc.id)
101 So(err, ShouldBeNil)
102
103 // unmarshal
104 var id IndexDefinition
105 yaml.Unmarshal([]byte(strings.Join(tc.se rialized, "\n")), &id)
106 So(&id, ShouldResemble, tc.id)
107 }
108 })
109 }
110 })
83 } 111 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698