@@ -371,26 +371,39 @@ def test_get_metadata_field_min_max(self, mock_falkordb, rows, expected):
371371
372372 def test_get_metadata_field_unique_values (self , mock_falkordb ):
373373 _ , _ , graph = mock_falkordb
374- graph .query .side_effect = [_result ([]), _result ([]), _result ([["A" ], [ "B" ], [ "C" ]])]
375- values , cursor = FalkorDBDocumentStore ().get_metadata_field_unique_values ("category" , size = 10 )
374+ graph .query .side_effect = [_result ([]), _result ([]), _result ([[[ "A" , "B" , "C" ], 3 ]])]
375+ values , total = FalkorDBDocumentStore ().get_metadata_field_unique_values ("category" , size = 10 )
376376 assert values == ["A" , "B" , "C" ]
377- assert cursor is None
377+ assert total == 3
378378
379379 def test_get_metadata_field_unique_values_pagination (self , mock_falkordb ):
380380 _ , _ , graph = mock_falkordb
381- graph .query .side_effect = [_result ([]), _result ([]), _result ([["A" ], ["B" ], ["C" ]])]
382- values , cursor = FalkorDBDocumentStore ().get_metadata_field_unique_values ("category" , size = 2 )
383- assert values == ["A" , "B" ]
384- assert cursor == {"offset" : 2 }
381+ all_values = ["A" , "B" , "C" , "D" , "E" ]
382+ total = len (all_values )
383+ pages = [all_values [i : i + 2 ] for i in range (0 , total , 2 )]
384+ graph .query .side_effect = [_result ([]), _result ([]), * (_result ([[page , total ]]) for page in pages )]
385+ store = FalkorDBDocumentStore ()
386+
387+ for page_index , expected_page in enumerate (pages ):
388+ from_ = page_index * 2
389+ values , returned_total = store .get_metadata_field_unique_values ("category" , from_ = from_ , size = 2 )
390+ assert values == expected_page
391+ assert returned_total == total
392+ _ , params = graph .query .call_args [0 ]
393+ assert params ["from_" ] == from_
394+ assert params ["size" ] == 2
395+
396+ # last page is a partial page, smaller than the requested size
397+ assert len (pages [- 1 ]) == 1
385398
386399 def test_get_metadata_field_unique_values_search_term_case_insensitive (self , mock_falkordb ):
387400 _ , _ , graph = mock_falkordb
388- graph .query .side_effect = [_result ([]), _result ([]), _result ([["Apple" ]])]
401+ graph .query .side_effect = [_result ([]), _result ([]), _result ([[[ "Apple" ], 1 ]])]
389402 values , _ = FalkorDBDocumentStore ().get_metadata_field_unique_values ("category" , search_term = "APP" )
390403 assert values == ["Apple" ]
391404 cypher , params = graph .query .call_args [0 ]
392405 assert "toLower(toString(d.category)) CONTAINS toLower($search_term)" in cypher
393- assert params == {"search_term" : "APP" }
406+ assert params == {"from_" : 0 , "size" : 10 , " search_term" : "APP" }
394407
395408 def test_close (self ):
396409 store = FalkorDBDocumentStore ()
0 commit comments