@@ -2224,6 +2224,32 @@ def test_query_limit_greater_than_available_items_and_page_size(self):
22242224 self .assertEquals (results_iter .total_count , 30 )
22252225 self .assertEquals (results_iter .page_iter .total_scanned_count , 60 )
22262226
2227+ def test_query_with_exclusive_start_key (self ):
2228+ with patch (PATCH_METHOD ) as req :
2229+ req .return_value = MODEL_TABLE_DATA
2230+ UserModel ('foo' , 'bar' )
2231+
2232+ with patch (PATCH_METHOD ) as req :
2233+ items = []
2234+ for idx in range (30 ):
2235+ item = copy .copy (GET_MODEL_ITEM_DATA .get (ITEM ))
2236+ item ['user_id' ] = {STRING_SHORT : 'id-{0}' .format (idx )}
2237+ items .append (item )
2238+
2239+ req .side_effect = [
2240+ {'Count' : 10 , 'ScannedCount' : 10 , 'Items' : items [10 :20 ], 'LastEvaluatedKey' : {'user_id' : items [19 ]['user_id' ]}},
2241+ ]
2242+ results_iter = UserModel .query ('foo' , limit = 10 , page_size = 10 , last_evaluated_key = {'user_id' : items [9 ]['user_id' ]})
2243+ self .assertEquals (results_iter .last_evaluated_key , {'user_id' : items [9 ]['user_id' ]})
2244+
2245+ results = list (results_iter )
2246+ self .assertEqual (len (results ), 10 )
2247+ self .assertEqual (len (req .mock_calls ), 1 )
2248+ self .assertEquals (req .mock_calls [0 ][1 ][1 ]['Limit' ], 10 )
2249+ self .assertEquals (results_iter .last_evaluated_key , {'user_id' : items [19 ]['user_id' ]})
2250+ self .assertEquals (results_iter .total_count , 10 )
2251+ self .assertEquals (results_iter .page_iter .total_scanned_count , 10 )
2252+
22272253 def test_query (self ):
22282254 """
22292255 Model.query
0 commit comments