def test_delete(tmp_path, key, data, serializer): store = CacheStore(str(tmp_path)) store.put(key=key, value=data, serializer=serializer) assert key in store.keys() store.delete(key=key, dry_run=True) del store[key] assert key not in store.keys()
def test_put_and_get(tmp_path, key, data, serializer): store = CacheStore(str(tmp_path)) store.put(key=key, value=data, serializer=serializer) assert key in store.keys() assert isinstance(store.get_artifact(key), Artifact) results = store[key] if isinstance(data, (xr.Dataset, xr.DataArray)): xr.testing.assert_equal(results, data) elif isinstance(data, pd.DataFrame): pd.testing.assert_frame_equal(results, data) else: assert results == data
def test_on_duplicate_key(tmp_path, on_duplicate_key): store = CacheStore(str(tmp_path), on_duplicate_key=on_duplicate_key) key, data, new_data = 'foo', 'my_data', 'hello' store.put(key=key, value=data) if on_duplicate_key == 'raise_error': with pytest.raises(ValueError): store.put(key=key, value=new_data) else: store.put(key=key, value=new_data) if on_duplicate_key == 'overwrite': assert store.get(key) == new_data else: assert store.get(key) == data