Skip to content

Commit 725d5f6

Browse files
committed
update tests
1 parent 331ec40 commit 725d5f6

2 files changed

Lines changed: 135 additions & 0 deletions

File tree

cfa/dataops/catalog.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ def resolve_version(
694694
695695
Returns:
696696
dict[str, str | None]: Mapping containing "version", "blob_url", "version_spec", and "selection".
697+
"""
697698
available_versions = self.get_versions()
698699
version = version_matcher(version_spec, available_versions, selection=selection)
699700

tests/test_datasets_catalog.py

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,140 @@ def mock_read_blob_stream_parquet_df(
151151
assert isinstance(blobs_df, pl.DataFrame)
152152

153153

154+
def test_datasets_catalog_get_dataframe_parquet_pandas_with_metadata(
155+
mocker, mock_write_blob_stream, dataset_ns_map, dataset_defaults
156+
):
157+
datacat = dict_to_sn(dataset_ns_map, dataset_defaults)
158+
dataset_namespaces = get_dataset_dot_path(dataset_ns_map)
159+
datacat.__setattr__("__namespace_list__", dataset_namespaces)
160+
161+
mocker.patch(
162+
"cfa.dataops.catalog.write_blob_stream",
163+
mock_write_blob_stream,
164+
)
165+
mocker.patch.object(
166+
datacat.tests.etl_test.load,
167+
"get_versions",
168+
return_value=["2025-06-03T17-56-50", "2025-05-30T14-50-36"],
169+
)
170+
171+
def mock_read_blob_stream_parquet_df(
172+
blob_url: str,
173+
account_name: str,
174+
container_name: str,
175+
) -> bytes:
176+
df = pd.DataFrame(
177+
[
178+
{"test": 1, "data": 2},
179+
{"test": 3, "data": 4},
180+
]
181+
)
182+
data = df.to_parquet(index=False)
183+
return MockBlob(data)
184+
185+
mocker.patch(
186+
"cfa.dataops.catalog.read_blob_stream",
187+
mock_read_blob_stream_parquet_df,
188+
)
189+
mocker.patch.object(
190+
datacat.tests.etl_test.load,
191+
"_get_version_blobs",
192+
return_value=[
193+
{
194+
"name": "prefix_test/transformed/test_dataset/2025-06-03T17-56-50/data.parquet",
195+
"container": "container_test",
196+
}
197+
],
198+
)
199+
200+
blobs_df = datacat.tests.etl_test.load.get_dataframe(
201+
output="pd",
202+
version_spec=">=2025-05-01,<2025-07-01",
203+
selection="oldest",
204+
with_metadata=True,
205+
)
206+
207+
assert isinstance(blobs_df, pd.DataFrame)
208+
assert blobs_df.attrs == {
209+
"version": "2025-05-30T14-50-36",
210+
"blob_url": "az://container_test/prefix_test/transformed/test_dataset/2025-06-03T17-56-50/*.parquet",
211+
"version_spec": ">=2025-05-01,<2025-07-01",
212+
"selection": "oldest",
213+
}
214+
215+
216+
def test_datasets_catalog_get_dataframe_parquet_polars_with_metadata(
217+
mocker, mock_write_blob_stream, dataset_ns_map, dataset_defaults
218+
):
219+
datacat = dict_to_sn(dataset_ns_map, dataset_defaults)
220+
dataset_namespaces = get_dataset_dot_path(dataset_ns_map)
221+
datacat.__setattr__("__namespace_list__", dataset_namespaces)
222+
223+
mocker.patch(
224+
"cfa.dataops.catalog.write_blob_stream",
225+
mock_write_blob_stream,
226+
)
227+
mocker.patch.object(
228+
datacat.tests.etl_test.load,
229+
"get_versions",
230+
return_value=["2025-06-03T17-56-50"],
231+
)
232+
mocker.patch.object(
233+
datacat.tests.etl_test.load,
234+
"_get_version_blobs",
235+
return_value=[
236+
{
237+
"name": "prefix_test/transformed/test_dataset/2025-06-03T17-56-50/data.parquet",
238+
"container": "container_test",
239+
}
240+
],
241+
)
242+
243+
def mock_read_blob_stream_parquet_bytes(
244+
blob_url: str,
245+
account_name: str,
246+
container_name: str,
247+
) -> bytes:
248+
return MockBlob(b"parquet-bytes-not-used")
249+
250+
mocker.patch(
251+
"cfa.dataops.catalog.read_blob_stream",
252+
mock_read_blob_stream_parquet_bytes,
253+
)
254+
255+
metadata = {}
256+
257+
class MockConfigMeta:
258+
def set(self, **kwargs):
259+
metadata.update(kwargs)
260+
261+
class MockPolarsFrame:
262+
def __init__(self):
263+
self.config_meta = MockConfigMeta()
264+
265+
mocker.patch(
266+
"cfa.dataops.catalog.pl.read_parquet",
267+
return_value=object(),
268+
)
269+
mocker.patch(
270+
"cfa.dataops.catalog.pl.concat",
271+
return_value=MockPolarsFrame(),
272+
)
273+
274+
blobs_df = datacat.tests.etl_test.load.get_dataframe(
275+
output="pl",
276+
with_metadata=True,
277+
)
278+
279+
assert isinstance(blobs_df, MockPolarsFrame)
280+
assert metadata == {
281+
"version": "2025-06-03T17-56-50",
282+
"blob_url": "az://container_test/prefix_test/transformed/test_dataset/2025-06-03T17-56-50/*.parquet",
283+
"version_spec": None,
284+
"selection": "newest",
285+
}
286+
287+
154288
def test_datasets_catalog_get_dataframe_json(
155289
mocker, mock_write_blob_stream, dataset_ns_map, dataset_defaults
156290
):

0 commit comments

Comments
 (0)