@@ -160,6 +160,78 @@ func TestQueryJsonObjKeys(t *testing.T) {
160160func TestQueryJsonGet (t * testing.T ) {
161161t .Parallel ()
162162
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+
163235t .Run ("should handle encoded JSON with string" , func (t * testing.T ) {
164236t .Parallel ()
165237
0 commit comments