def test_query_pagination(self): items, last = self.table.query(Key("pk").eq("1"), limit=1) assert len(items) == 1 assert items[0]["sequence"] == 1 items, last = self.table.query(Key("pk").eq("1"), limit=5, exclusive_start_key=last) assert len(items) == 2 assert items[0]["sequence"] == 2 assert last is None
def test_query_reverse_scan(self): items, last = self.table.query(Key("pk").eq("1"), limit=3, scan_index_forward=False) assert len(items) == 3 assert items[0]["sequence"] == 3 assert last == {"sk": "1", "pk": "1"}
def test_query(self): items, _ = self.table.query( Key("pk").eq("1"), filter_expression=Attr("sequence").gt(1), attributes=["sequence"], ) assert len(items) == 2
def test_gsi_query(self): items, _ = self.table.gsi.query(Key("sk").eq("3") & Key("sequence").gt(3)) assert len(items) == 1
def test_lsi_query(self): items, _ = self.table.lsi.query(Key("pk").eq("1")) assert len(items) == 2 # Only 2 items have the status attribute
def test_query_client_error(self): table = MyTable(name="ThisTableDoesntExist", resource=dynamodb) with self.assertRaises(ResourceNotFoundException): table.query(Key("pk").eq("1"))
def test_query_index(self): items, _ = self.table.query(Key("pk").eq("2") & Key("status").eq("deleted"), _index="lsi") assert len(items) == 2