@@ -1174,8 +1174,32 @@ def test_query_limit_less_than_available_items_multiple_page(self):
1174
1174
self .assertEqual (len (results ), 25 )
1175
1175
self .assertEqual (len (req .mock_calls ), 3 )
1176
1176
self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 25 )
1177
- self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 15 )
1178
- self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 5 )
1177
+ self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 25 )
1178
+ self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 25 )
1179
+
1180
+ def test_query_limit_less_than_available_and_page_size (self ):
1181
+ with patch (PATCH_METHOD ) as req :
1182
+ req .return_value = MODEL_TABLE_DATA
1183
+ UserModel ('foo' , 'bar' )
1184
+
1185
+ with patch (PATCH_METHOD ) as req :
1186
+ items = []
1187
+ for idx in range (30 ):
1188
+ item = copy .copy (GET_MODEL_ITEM_DATA .get (ITEM ))
1189
+ item ['user_id' ] = {STRING_SHORT : 'id-{0}' .format (idx )}
1190
+ items .append (item )
1191
+
1192
+ req .side_effect = [
1193
+ {'Items' : items [:10 ], 'LastEvaluatedKey' : 'x' },
1194
+ {'Items' : items [10 :20 ], 'LastEvaluatedKey' : 'y' },
1195
+ {'Items' : items [20 :30 ]},
1196
+ ]
1197
+ results = list (UserModel .query ('foo' , limit = 25 , page_size = 10 ))
1198
+ self .assertEqual (len (results ), 25 )
1199
+ self .assertEqual (len (req .mock_calls ), 3 )
1200
+ self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 10 )
1201
+ self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 10 )
1202
+ self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 10 )
1179
1203
1180
1204
def test_query_limit_greater_than_available_items_multiple_page (self ):
1181
1205
with patch (PATCH_METHOD ) as req :
@@ -1198,8 +1222,32 @@ def test_query_limit_greater_than_available_items_multiple_page(self):
1198
1222
self .assertEqual (len (results ), 30 )
1199
1223
self .assertEqual (len (req .mock_calls ), 3 )
1200
1224
self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 50 )
1201
- self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 40 )
1202
- self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 30 )
1225
+ self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 50 )
1226
+ self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 50 )
1227
+
1228
+ def test_query_limit_greater_than_available_items_and_page_size (self ):
1229
+ with patch (PATCH_METHOD ) as req :
1230
+ req .return_value = MODEL_TABLE_DATA
1231
+ UserModel ('foo' , 'bar' )
1232
+
1233
+ with patch (PATCH_METHOD ) as req :
1234
+ items = []
1235
+ for idx in range (30 ):
1236
+ item = copy .copy (GET_MODEL_ITEM_DATA .get (ITEM ))
1237
+ item ['user_id' ] = {STRING_SHORT : 'id-{0}' .format (idx )}
1238
+ items .append (item )
1239
+
1240
+ req .side_effect = [
1241
+ {'Items' : items [:10 ], 'LastEvaluatedKey' : 'x' },
1242
+ {'Items' : items [10 :20 ], 'LastEvaluatedKey' : 'y' },
1243
+ {'Items' : items [20 :30 ]},
1244
+ ]
1245
+ results = list (UserModel .query ('foo' , limit = 50 , page_size = 10 ))
1246
+ self .assertEqual (len (results ), 30 )
1247
+ self .assertEqual (len (req .mock_calls ), 3 )
1248
+ self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 10 )
1249
+ self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 10 )
1250
+ self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 10 )
1203
1251
1204
1252
def test_query (self ):
1205
1253
"""
@@ -1390,6 +1438,26 @@ def fake_query(*args):
1390
1438
self .assertEqual (params , req .call_args [0 ][1 ])
1391
1439
self .assertTrue (len (queried ) == len (items ))
1392
1440
1441
+ def test_scan_limit_with_page_size (self ):
1442
+ with patch (PATCH_METHOD ) as req :
1443
+ items = []
1444
+ for idx in range (30 ):
1445
+ item = copy .copy (GET_MODEL_ITEM_DATA .get (ITEM ))
1446
+ item ['user_id' ] = {STRING_SHORT : 'id-{0}' .format (idx )}
1447
+ items .append (item )
1448
+
1449
+ req .side_effect = [
1450
+ {'Items' : items [:10 ], 'LastEvaluatedKey' : 'x' },
1451
+ {'Items' : items [10 :20 ], 'LastEvaluatedKey' : 'y' },
1452
+ {'Items' : items [20 :30 ]},
1453
+ ]
1454
+ results = list (UserModel .scan (limit = 25 , page_size = 10 ))
1455
+ self .assertEqual (len (results ), 25 )
1456
+ self .assertEqual (len (req .mock_calls ), 3 )
1457
+ self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 10 )
1458
+ self .assertEquals (req .mock_calls [1 ][1 ][1 ]['Limit' ], 10 )
1459
+ self .assertEquals (req .mock_calls [2 ][1 ][1 ]['Limit' ], 10 )
1460
+
1393
1461
def test_scan_limit (self ):
1394
1462
"""
1395
1463
Model.scan(limit)
@@ -1411,6 +1479,8 @@ def fake_scan(*args):
1411
1479
for item in UserModel .scan (limit = 4 ):
1412
1480
count += 1
1413
1481
self .assertIsNotNone (item )
1482
+ self .assertEqual (len (req .mock_calls ), 1 )
1483
+ self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 4 )
1414
1484
self .assertEqual (count , 4 )
1415
1485
1416
1486
with patch (PATCH_METHOD ) as req :
0 commit comments