diff --git a/src/igh_data_transform/transformations/silver_to_gold/config/schema_map.py b/src/igh_data_transform/transformations/silver_to_gold/config/schema_map.py index c649115..9d6ea3d 100644 --- a/src/igh_data_transform/transformations/silver_to_gold/config/schema_map.py +++ b/src/igh_data_transform/transformations/silver_to_gold/config/schema_map.py @@ -167,6 +167,7 @@ "efficacy": "efficacy", "safety": "safety", "source": "source", + "dedicated_to_women_or_children": "OPTIONSET:crc8b_dedicatedtowomenorchildren", }, "dim_developer": { "_source_table": "vin_candidates", diff --git a/tests/e2e/test_silver_to_gold_e2e.py b/tests/e2e/test_silver_to_gold_e2e.py index 9997ed0..4376d2b 100644 --- a/tests/e2e/test_silver_to_gold_e2e.py +++ b/tests/e2e/test_silver_to_gold_e2e.py @@ -195,6 +195,26 @@ def test_dim_disease_has_expected_columns(self, gold_conn): missing = expected - cols assert not missing, f"Missing columns: {missing}" + # -- dim_priority -- + + def test_dim_priority_dedicated_to_women_or_children_is_label(self, gold_conn): + """`dedicated_to_women_or_children` holds the Two-Options label + ("Yes"/"No"), not the raw integer code (0/1). Numeric-only values + would indicate the OPTIONSET resolver was bypassed.""" + df = _read_table(gold_conn, "dim_priority") + assert "dedicated_to_women_or_children" in df.columns, ( + "dim_priority missing dedicated_to_women_or_children column" + ) + non_null = df["dedicated_to_women_or_children"].dropna() + if non_null.empty: + pytest.skip( + "No non-null dedicated_to_women_or_children rows in current data" + ) + # The label set is closed: Two-Options always resolves to {Yes, No}. + assert set(non_null.astype(str).unique()) <= {"Yes", "No"}, ( + f"Unexpected labels: {set(non_null.astype(str).unique())}" + ) + # -- dim_geography -- def test_dim_geography_has_iso_code(self, gold_conn): diff --git a/tests/unit/test_silver_to_gold.py b/tests/unit/test_silver_to_gold.py index 2339a6b..a13872c 100644 --- a/tests/unit/test_silver_to_gold.py +++ b/tests/unit/test_silver_to_gold.py @@ -74,3 +74,19 @@ def test_test_format_uses_optionset_resolution(self) -> None: STAR_SCHEMA_MAP["dim_candidate_core"]["test_format"] == "OPTIONSET:testformat" ) + + def test_dedicated_to_women_or_children_uses_optionset_resolution( + self, + ) -> None: + """`dim_priority.dedicated_to_women_or_children` resolves the + Two-Options code (0/1) to its label (No/Yes) via the OPTIONSET + cache, so the dashboard reads readable strings instead of raw + Dataverse codes — same pattern as `test_format`.""" + from igh_data_transform.transformations.silver_to_gold.config.schema_map import ( # noqa: E501 + STAR_SCHEMA_MAP, + ) + + assert ( + STAR_SCHEMA_MAP["dim_priority"]["dedicated_to_women_or_children"] + == "OPTIONSET:crc8b_dedicatedtowomenorchildren" + )