Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions dataconnect/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class DatasetVersion:
dataset_uuid: UUID
dataset_name: str
dataset_version: str
blinding_status: str | None = None


class DatasetFrame:
Expand Down Expand Up @@ -79,6 +80,7 @@ class Dataset:
source: str | None = None
activation_status: str | None = None
dataset_status: str | None = None
blinding_status: str | None = None
collection: list[str] | None = field(default=None, hash=False)
last_updated: str | None = None
version: str | None = None
Expand Down
2 changes: 2 additions & 0 deletions dataconnect/service/mappers.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def resource_to_dataset_version(resource: ResourceInfo) -> DatasetVersion:
dataset_uuid=UUID(data["dataset_uuid"]),
dataset_name=data["dataset_name"],
dataset_version=data["dataset_version"],
blinding_status=data.get("blinding_status"),
)


Expand Down Expand Up @@ -114,6 +115,7 @@ def resource_to_dataset(resource: ResourceInfo) -> Dataset:
source=data.get("source"),
activation_status=data.get("activation_status"),
dataset_status=data.get("dataset_status"),
blinding_status=data.get("blinding_status"),
collection=data.get("collection"),
last_updated=data.get("last_updated"),
version=data.get("version"),
Expand Down
38 changes: 34 additions & 4 deletions tests/test_get_datasets_paginated.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ def test_multiple_items_returned(self) -> None:
"source": "JL_templ_upgrd2",
"activation_status": "Activated",
"dataset_status": "Warning",
"blinding_status": "NOT_UNBLINDING",
"collection": ["clinical", "labs"],
"last_updated": "2024-06-15 09:30:00",
"version": "1",
Expand All @@ -207,6 +208,7 @@ def test_multiple_items_returned(self) -> None:
"source",
"activation_status",
"dataset_status",
"blinding_status",
"collection",
"last_updated",
"version",
Expand Down Expand Up @@ -294,6 +296,16 @@ def test_metadata_preserves_missing_null_and_empty_values(scenario: str) -> None
assert dataset.frame is not None


def test_blinding_status_variants_from_backend_are_preserved() -> None:
unblinding = _FakeTransport([_dataset_resource({**_IDENTIFIERS, "blinding_status": "UNBLINDING"})])
dataset = DefaultDataConnectService(unblinding).get_datasets(_STUDY_ENV_UUID).items[0]
assert dataset.blinding_status == "UNBLINDING"

missing = _FakeTransport([_dataset_resource({**_IDENTIFIERS})])
dataset = DefaultDataConnectService(missing).get_datasets(_STUDY_ENV_UUID).items[0]
assert dataset.blinding_status is None


@pytest.mark.parametrize("version", ["3", "v1,v2", "41, 51, 88", "", None])
def test_version_labels_are_preserved_without_coercion(version: str | None) -> None:
transport = _FakeTransport([_dataset_resource({**_IDENTIFIERS, "version": version})])
Expand Down Expand Up @@ -417,29 +429,47 @@ def test_dataset_remains_hashable_with_collection_metadata() -> None:


def test_dataset_versions_response_is_unchanged_before_and_after_listing() -> None:
older = {**_IDENTIFIERS, "dataset_version": "1", "dataset_uuid": _OTHER_DATASET_UUID}
newer = {**_IDENTIFIERS, "dataset_version": "2"}
versions = [_dataset_resource(older), _dataset_resource(newer)]
older = {
**_IDENTIFIERS,
"dataset_version": "1",
"dataset_uuid": _OTHER_DATASET_UUID,
"blinding_status": "UNBLINDING",
}
newer = {**_IDENTIFIERS, "dataset_version": "2", "blinding_status": "NOT_UNBLINDING"}
omitted = {**_IDENTIFIERS, "dataset_version": "3"}
versions = [_dataset_resource(older), _dataset_resource(newer), _dataset_resource(omitted)]
transport = _FakeTransport(versions)
client = DataConnectClient(DefaultDataConnectService(transport))
expected = [
{
"study_uuid": UUID(_IDENTIFIERS["study_uuid"]),
"study_environment_uuid": _STUDY_ENV_UUID,
"dataset_uuid": UUID(_DATASET_UUID),
"dataset_name": "LBHEM2",
"dataset_version": "3",
"blinding_status": None,
},
{
"study_uuid": UUID(_IDENTIFIERS["study_uuid"]),
"study_environment_uuid": _STUDY_ENV_UUID,
"dataset_uuid": UUID(_DATASET_UUID),
"dataset_name": "LBHEM2",
"dataset_version": "2",
"blinding_status": "NOT_UNBLINDING",
},
{
"study_uuid": UUID(_IDENTIFIERS["study_uuid"]),
"study_environment_uuid": _STUDY_ENV_UUID,
"dataset_uuid": UUID(_OTHER_DATASET_UUID),
"dataset_name": "LBHEM2",
"dataset_version": "1",
"blinding_status": "UNBLINDING",
},
]

assert [asdict(item) for item in client.get_dataset_versions(UUID(_DATASET_UUID))] == expected
listed = client.get_dataset_versions(UUID(_DATASET_UUID))
assert [asdict(item) for item in listed] == expected
assert listed[0].blinding_status is None
transport._resources = [_dataset_resource({**_IDENTIFIERS, **_METADATA})]
assert client.get_datasets(_STUDY_ENV_UUID).items[0].frame is not None
transport._resources = versions
Expand Down
Loading