From 851fcf47b355082289e1e30d46885695af6f665d Mon Sep 17 00:00:00 2001 From: mferrera Date: Thu, 19 Dec 2024 10:31:21 +0100 Subject: [PATCH] TST: Check required inplace volumes columns --- src/fmu/dataio/_products/inplace_volumes.py | 2 +- src/fmu/dataio/export/_enums.py | 24 +++++++++++++++++++ src/fmu/dataio/export/rms/inplace_volumes.py | 2 +- .../test_export_rms_volumetrics.py | 8 +++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/fmu/dataio/_products/inplace_volumes.py b/src/fmu/dataio/_products/inplace_volumes.py index f3acf4350c..f7b5c4828c 100644 --- a/src/fmu/dataio/_products/inplace_volumes.py +++ b/src/fmu/dataio/_products/inplace_volumes.py @@ -34,7 +34,7 @@ class InplaceVolumesResultRow(BaseModel): BULK: float = Field(ge=0.0) NET: Optional[float] = Field(default=None, ge=0.0) PORV: float = Field(ge=0.0) - HCPV: Optional[float] = Field(default=None, ge=0.0) + HCPV: float = Field(ge=0.0) STOIIP: Optional[float] = Field(default=None, ge=0.0) GIIP: Optional[float] = Field(default=None, ge=0.0) ASSOCIATEDGAS: Optional[float] = Field(default=None, ge=0.0) diff --git a/src/fmu/dataio/export/_enums.py b/src/fmu/dataio/export/_enums.py index 8fdfd4bc58..0007ba357e 100644 --- a/src/fmu/dataio/export/_enums.py +++ b/src/fmu/dataio/export/_enums.py @@ -43,11 +43,35 @@ def index_columns() -> list[str]: """Returns a list of the index columns.""" return [k.value for k in InplaceVolumes.TableIndexColumns] + @staticmethod + def required_index_columns() -> list[str]: + return [ + InplaceVolumes.TableIndexColumns.FLUID.value, + InplaceVolumes.TableIndexColumns.ZONE.value, + ] + @staticmethod def value_columns() -> list[str]: """Returns a list of the value columns.""" return [k.value for k in InplaceVolumes.VolumetricColumns] + @staticmethod + def required_value_columns() -> list[str]: + """Returns a list of the value columns.""" + return [ + InplaceVolumes.VolumetricColumns.BULK.value, + InplaceVolumes.VolumetricColumns.PORV.value, + InplaceVolumes.VolumetricColumns.HCPV.value, + ] + + @staticmethod + def required_columns() -> list[str]: + """Returns a list of the columns required at export.""" + return ( + InplaceVolumes.required_index_columns() + + InplaceVolumes.required_value_columns() + ) + @staticmethod def table_columns() -> list[str]: """Returns a list of all table columns.""" diff --git a/src/fmu/dataio/export/rms/inplace_volumes.py b/src/fmu/dataio/export/rms/inplace_volumes.py index 77bd63d02c..68c944addd 100644 --- a/src/fmu/dataio/export/rms/inplace_volumes.py +++ b/src/fmu/dataio/export/rms/inplace_volumes.py @@ -217,7 +217,7 @@ def _validate_table(self) -> None: # create list of missing or non-defined required columns missing_calculations = [] - for col in ["BULK", "PORV", "HCPV"]: + for col in _enums.InplaceVolumes.required_value_columns(): if self._is_column_missing_in_table(col): missing_calculations.append(col) diff --git a/tests/test_export_rms/test_export_rms_volumetrics.py b/tests/test_export_rms/test_export_rms_volumetrics.py index 4a396499f1..f38a1b3c1a 100644 --- a/tests/test_export_rms/test_export_rms_volumetrics.py +++ b/tests/test_export_rms/test_export_rms_volumetrics.py @@ -375,3 +375,11 @@ def test_inplace_volumes_export_and_result_columns_are_the_same( assert _enums.InplaceVolumes.table_columns() == list( InplaceVolumesResultRow.model_fields.keys() ) + + +def test_that_required_columns_one_to_one_in_enums_and_schema() -> None: + schema_required_fields = [] + for field_name, field_info in InplaceVolumesResultRow.model_fields.items(): + if field_info.is_required(): + schema_required_fields.append(field_name) + assert _enums.InplaceVolumes.required_columns() == schema_required_fields