@@ -50,6 +50,16 @@ class SnapshotRepositoryTestCase(MinosTestCase, ABC):
50
50
51
51
snapshot_repository : SnapshotRepository
52
52
53
+ class NumbersList (RootEntity ):
54
+ """For testing purposes"""
55
+
56
+ numbers : list [int ]
57
+
58
+ class Number (RootEntity ):
59
+ """For testing purposes"""
60
+
61
+ value : int
62
+
53
63
class Owner (RootEntity ):
54
64
"""For testing purposes"""
55
65
@@ -386,6 +396,52 @@ async def test_find_by_uuid(self):
386
396
]
387
397
self .assertEqual (expected , observed )
388
398
399
+ async def test_find_contains (self ):
400
+ a = FieldDiffContainer ([FieldDiff ("numbers" , list [int ], [1 , 2 , 3 ])])
401
+ b = FieldDiffContainer ([FieldDiff ("numbers" , list [int ], [4 , 5 , 6 ])])
402
+ c = FieldDiffContainer ([FieldDiff ("numbers" , list [int ], [3 , 8 , 9 ])])
403
+ await self .event_repository .create (
404
+ EventEntry (name = self .NumbersList .classname , data = a .avro_bytes , uuid = self .uuid_1 )
405
+ )
406
+ await self .event_repository .create (
407
+ EventEntry (name = self .NumbersList .classname , data = b .avro_bytes , uuid = self .uuid_2 )
408
+ )
409
+ await self .event_repository .create (
410
+ EventEntry (name = self .NumbersList .classname , data = c .avro_bytes , uuid = self .uuid_3 )
411
+ )
412
+ await self .synchronize ()
413
+
414
+ condition = Condition .CONTAINS ("numbers" , 3 )
415
+
416
+ iterable = self .snapshot_repository .find (self .NumbersList , condition , ordering = Ordering .ASC ("updated_at" ))
417
+ observed = [v async for v in iterable ]
418
+
419
+ expected = [
420
+ await self .snapshot_repository .get (self .NumbersList , self .uuid_1 ),
421
+ await self .snapshot_repository .get (self .NumbersList , self .uuid_3 ),
422
+ ]
423
+ self .assertEqual (expected , observed )
424
+
425
+ async def test_find_equal (self ):
426
+ a = FieldDiffContainer ([FieldDiff ("value" , int , 1 )])
427
+ b = FieldDiffContainer ([FieldDiff ("value" , int , 2 )])
428
+ c = FieldDiffContainer ([FieldDiff ("value" , int , 1 )])
429
+ await self .event_repository .create (EventEntry (name = self .Number .classname , data = a .avro_bytes , uuid = self .uuid_1 ))
430
+ await self .event_repository .create (EventEntry (name = self .Number .classname , data = b .avro_bytes , uuid = self .uuid_2 ))
431
+ await self .event_repository .create (EventEntry (name = self .Number .classname , data = c .avro_bytes , uuid = self .uuid_3 ))
432
+ await self .synchronize ()
433
+
434
+ condition = Condition .EQUAL ("value" , 1 )
435
+
436
+ iterable = self .snapshot_repository .find (self .Number , condition , ordering = Ordering .ASC ("updated_at" ))
437
+ observed = [v async for v in iterable ]
438
+
439
+ expected = [
440
+ await self .snapshot_repository .get (self .Number , self .uuid_1 ),
441
+ await self .snapshot_repository .get (self .Number , self .uuid_3 ),
442
+ ]
443
+ self .assertEqual (expected , observed )
444
+
389
445
async def test_find_with_transaction (self ):
390
446
await self .populate_and_synchronize ()
391
447
condition = Condition .IN ("uuid" , [self .uuid_2 , self .uuid_3 ])
0 commit comments