def test_remove_not_found(): cards = CardDB(index='id') with pytest.raises(KeyError): cards.remove({'id': 2, 'a': 1, 'b': 'c'}) with pytest.raises(KeyError): cards.remove({'a': 1, 'b': 'c'})
def test_remove_only_matching_index(): card2 = {'id': 2, 'a': 1, 'b': 'c'} card3 = {'id': 3, 'a': 2, 'b': 'c'} card7 = {'id': 7, 'a': 2, 'b': 'f'} cards = CardDB(card2, card3, card7, index='id') assert len(cards) == 3 cards.remove({'id': 3}) assert len(cards) == 2 assert cards[2] == card2 assert cards[3] is None assert cards[7] == card7
def test_save(s3fn): cards = CardDB(index='id', s3filename=s3fn) assert not S3FS.exists(s3fn) card0 = {'id': 0, 'a': 1, 'b': 'c', 'd': 4.5} card3 = {'id': 3, 'a': 2, 'b': 'e', 'd': 8.5} card7 = {'id': 7, 'a': 2, 'b': 'c', 'd': -4.2} cards.add(card0) cards.add(card3) cards.add(card7) assert len(cards) == 3 cards.remove(card3) cards.save() assert S3FS.exists(s3fn) with S3FS.open(s3fn, 'r') as f: df = pd.read_csv(f) assert cards._df.equals(df) cards2 = CardDB(index='id', s3filename=s3fn) assert cards._df.equals(cards2._df)