11from deta .drive import UPLOAD_CHUNK_SIZE
2+ from deta .base import FetchResponse
23import os
34import io
45import unittest
@@ -151,7 +152,7 @@ def test_read_close(self):
151152 body = self .drive .get (tc ["name" ])
152153 body .close ()
153154 self .assertEqual (body .closed , True )
154-
155+
155156 def test_read_lines (self ):
156157 test_cases = [
157158 {
@@ -164,16 +165,16 @@ def test_read_lines(self):
164165 },
165166 {
166167 "name" : "read_lines_test_3.txt" ,
167- "content" : "different new line\r another line\r "
168- }
169-
168+ "content" : "different new line\r another line\r " ,
169+ },
170170 ]
171171 for tc in test_cases :
172172 test_stream = io .StringIO (tc ["content" ])
173173 self .drive .put (tc ["name" ], tc ["content" ])
174174 body = self .drive .get (tc ["name" ])
175175 for line in body .iter_lines ():
176- self .assertEqual (test_stream .readline (), line .decode ())
176+ self .assertEqual (test_stream .readline (), line .decode ())
177+
177178
178179class TestBaseMethods (unittest .TestCase ):
179180 def setUp (self ):
@@ -191,9 +192,9 @@ def setUp(self):
191192 self .db .put_many ([self .item1 , self .item2 , self .item3 , self .item4 , self .item5 ])
192193
193194 def tearDown (self ):
194- for items in self .db .fetch ():
195- for i in items :
196- self .db .delete (i ["key" ])
195+ items = self .db .fetch (). items
196+ for i in items :
197+ self .db .delete (i ["key" ])
197198 self .db .client .close ()
198199
199200 def test_put (self ):
@@ -244,20 +245,71 @@ def test_delete(self):
244245 self .assertIsNone (self .db .delete ("key_does_not_exist" ))
245246
246247 def test_fetch (self ):
247- res1 = next (self .db .fetch ({"value" : "test" }))
248- res2 = next (self .db .fetch ({"valuexyz" : "test_none_existing_value" }))
249- res3 = next (self .db .fetch (buffer = 3 ))
250- res4 = list (self .db .fetch (buffer = 1 , pages = 4 ))
251- res5 = next (self .db .fetch ({"value.name" : self .item4 ["value" ]["name" ]}))
252- res6 = next (self .db .fetch ({"value?gte" : 7 }))
253- res7 = next (self .db .fetch ([{"value?gt" : 6 }, {"value?lt" : 50 }]))
254- self .assertTrue (len (res1 ) > 0 )
255- self .assertTrue (len (res2 ) == 0 )
256- self .assertTrue (len (res3 ) == 3 )
257- self .assertTrue (len (res4 ) == 4 )
258- self .assertTrue (len (res5 ) > 0 )
259- self .assertTrue (len (res6 ) == 2 )
260- self .assertTrue (len (res7 ) == 3 )
248+ res1 = self .db .fetch ({"value?gte" : 7 })
249+ expectedItem = FetchResponse (
250+ 2 ,
251+ None ,
252+ [
253+ {"key" : "existing2" , "value" : 7 },
254+ {"key" : "existing3" , "value" : 44 },
255+ ],
256+ )
257+ self .assertEqual (res1 , expectedItem )
258+
259+ res2 = self .db .fetch ({"value?gte" : 7 }, limit = 1 )
260+ expectedItem = FetchResponse (
261+ 1 ,
262+ "existing2" ,
263+ [
264+ {"key" : "existing2" , "value" : 7 },
265+ ],
266+ )
267+ self .assertEqual (res2 , expectedItem )
268+
269+ res3 = self .db .fetch ([{"value?gt" : 6 }, {"value?lt" : 50 }], limit = 2 )
270+ expectedItem = FetchResponse (
271+ 2 ,
272+ "existing2" ,
273+ [
274+ {"key" : "%@#//#!#)#$_" , "list" : ["a" ], "value" : 0 },
275+ {"key" : "existing2" , "value" : 7 },
276+ ],
277+ )
278+ self .assertEqual (res3 , expectedItem )
279+
280+ res4 = self .db .fetch (
281+ [{"value?gt" : 6 }, {"value?lt" : 50 }], limit = 2 , last = "existing2"
282+ )
283+ expectedItem = FetchResponse (
284+ 1 ,
285+ None ,
286+ [{"key" : "existing3" , "value" : 44 }],
287+ )
288+ self .assertEqual (res4 , expectedItem )
289+
290+ res5 = self .db .fetch ({"value" : "test" })
291+ expectedItem = FetchResponse (
292+ 1 ,
293+ None ,
294+ [{"key" : "existing1" , "value" : "test" }],
295+ )
296+ self .assertEqual (res5 , expectedItem )
297+
298+ res6 = self .db .fetch ({"valuexyz" : "test_none_existing_value" })
299+ expectedItem = FetchResponse (
300+ 0 ,
301+ None ,
302+ [],
303+ )
304+ self .assertEqual (res6 , expectedItem )
305+
306+ res7 = self .db .fetch ({"value.name" : self .item4 ["value" ]["name" ]})
307+ expectedItem = FetchResponse (
308+ 1 ,
309+ None ,
310+ [{"key" : "existing4" , "value" : {"name" : "patrick" }}],
311+ )
312+ self .assertEqual (res7 , expectedItem )
261313
262314 def test_update (self ):
263315 self .assertIsNone (self .db .update ({"value.name" : "spongebob" }, "existing4" ))
0 commit comments