@@ -160,6 +160,78 @@ func TestQueryJsonObjKeys(t *testing.T) {
160
160
func TestQueryJsonGet (t * testing.T ) {
161
161
t .Parallel ()
162
162
163
+ t .Run ("Should return four strings in frame" , func (t * testing.T ) {
164
+ t .Parallel ()
165
+
166
+ client := testClient {rcv : "[[],\" gin\" ,\" rum\" ,\" whiskey\" ]" }
167
+
168
+ resp := queryJsonGet (queryModel {Command : models .JsonGet , Key : "test:json" , Path : "$.num" }, & client )
169
+
170
+ require .Len (t , resp .Frames , 1 )
171
+ require .Len (t , resp .Frames [0 ].Fields , 1 )
172
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].Len (), 4 )
173
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (0 ), "" )
174
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (1 ), "gin" )
175
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (2 ), "rum" )
176
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (3 ), "whiskey" )
177
+ })
178
+
179
+ t .Run ("Should return four booleans in frame" , func (t * testing.T ) {
180
+ t .Parallel ()
181
+
182
+ client := testClient {rcv : "[[],true,false,true]" }
183
+
184
+ resp := queryJsonGet (queryModel {Command : models .JsonGet , Key : "test:json" , Path : "$.num" }, & client )
185
+
186
+ require .Len (t , resp .Frames , 1 )
187
+ require .Len (t , resp .Frames [0 ].Fields , 1 )
188
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].Len (), 4 )
189
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (0 ), false )
190
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (1 ), true )
191
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (2 ), false )
192
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (3 ), true )
193
+ })
194
+
195
+ t .Run ("Should return four float64 in frame" , func (t * testing.T ) {
196
+ t .Parallel ()
197
+
198
+ client := testClient {rcv : "[[],42,43,44]" }
199
+
200
+ resp := queryJsonGet (queryModel {Command : models .JsonGet , Key : "test:json" , Path : "$.num" }, & client )
201
+
202
+ require .Len (t , resp .Frames , 1 )
203
+ require .Len (t , resp .Frames [0 ].Fields , 1 )
204
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].Len (), 4 )
205
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (0 ), float64 (0 ))
206
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (1 ), float64 (42 ))
207
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (2 ), float64 (43 ))
208
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (3 ), float64 (44 ))
209
+
210
+ })
211
+
212
+ t .Run ("Should return a single float64 in frame" , func (t * testing.T ) {
213
+ t .Parallel ()
214
+
215
+ client := testClient {rcv : "[42]" }
216
+
217
+ resp := queryJsonGet (queryModel {Command : models .JsonGet , Key : "test:json" , Path : "$.num" }, & client )
218
+
219
+ require .Len (t , resp .Frames , 1 )
220
+ require .Len (t , resp .Frames [0 ].Fields , 1 )
221
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (0 ), float64 (42 ))
222
+
223
+ })
224
+
225
+ t .Run ("Should return a single boolean in frame" , func (t * testing.T ) {
226
+ t .Parallel ()
227
+
228
+ client := testClient {rcv : "[true]" }
229
+ resp := queryJsonGet (queryModel {Command : models .JsonGet , Key : "test:json" , Path : "$.bool" }, & client )
230
+ require .Len (t , resp .Frames , 1 )
231
+ require .Len (t , resp .Frames [0 ].Fields , 1 )
232
+ require .Equal (t , resp .Frames [0 ].Fields [0 ].At (0 ), true )
233
+ })
234
+
163
235
t .Run ("should handle encoded JSON with string" , func (t * testing.T ) {
164
236
t .Parallel ()
165
237
0 commit comments