-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathoperators_array_test.go
More file actions
115 lines (105 loc) · 3.82 KB
/
Copy pathoperators_array_test.go
File metadata and controls
115 lines (105 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package repository_test
import (
"github.com/lab259/repository"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Operators Array", func() {
BeforeEach(func() {
Expect(clearSession()).To(BeNil())
})
Context("Operator: $elemMatch", func() {
It("should find object with an $elemMatch condition single query", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"score", repository.LT("", 10),
))).To(BeNil())
Expect(objs).To(HaveLen(1))
Expect(objs[0].Name).To(Equal("Snake Eyes"))
Expect(objs[0].Score).To(Equal([]int{1, 2, 4, 5, 9}))
})
It("should fail object with an $elemMatch condition single query pass field failed", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"score", repository.LT("fail", 10),
))).To(BeNil())
Expect(objs).To(HaveLen(0))
})
It("should find object with an $elemMatch condition", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"score", repository.GTE("", 10),
repository.LT("", 30),
))).To(BeNil())
Expect(objs).To(HaveLen(2))
Expect(objs[0].Name).To(Equal("Scarlett"))
Expect(objs[0].Score).To(Equal([]int{10, 20, 40}))
Expect(objs[1].Name).To(Equal("Duke"))
Expect(objs[1].Score).To(Equal([]int{10, 11}))
})
It("should find object with an $elemMatch condition match in array equals", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"details",
repository.EQ("city", "Jamaica"),
repository.EQ("fruit", "Pineapple"),
))).To(BeNil())
Expect(objs).To(HaveLen(1))
Expect(objs[0].Name).To(Equal("Scarlett"))
})
It("should find object with an $elemMatch condition match in array not equals", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"details",
repository.EQ("city", "Brazil"),
repository.Not(repository.EQ("fruit", "Apple")),
))).To(BeNil())
Expect(objs).To(HaveLen(1))
Expect(objs[0].Name).To(Equal("Duke"))
})
It("should find object with an $elemMatch condition match in array equals and not less", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"details",
repository.EQ("city", "Brazil"),
repository.Not(repository.LT("ability", 20)),
))).To(BeNil())
Expect(objs).To(HaveLen(1))
Expect(objs[0].Name).To(Equal("Duke"))
})
It("should find object with an $elemMatch condition match in array equals and greater", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
Expect(repository.FindAll(r, &objs, repository.ElemMatch(
"details",
repository.EQ("city", "Jamaica"),
repository.GTE("ability", 50),
), repository.ElemMatch("score", repository.LT("", 20)))).To(BeNil())
Expect(objs).To(HaveLen(1))
Expect(objs[0].Name).To(Equal("Snake Eyes"))
})
It("should fail object with an $elemMatch condition needs an object", func() {
r := &testRepNoDefaultCriteriaNoDefaultSorting{}
insertObjects(r)
objs := make([]testRepObject, 0)
err := repository.FindAll(r, &objs, repository.ElemMatch(
"name", "Jack",
))
Expect(err).NotTo(BeNil())
Expect(err.Error()).To(ContainSubstring("data type not supported:"))
})
})
})