Skip to content

Commit

Permalink
TST: Check required inplace volumes columns
Browse files Browse the repository at this point in the history
  • Loading branch information
mferrera committed Dec 19, 2024
1 parent 1e167eb commit 851fcf4
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/fmu/dataio/_products/inplace_volumes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
24 changes: 24 additions & 0 deletions src/fmu/dataio/export/_enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."""
Expand Down
2 changes: 1 addition & 1 deletion src/fmu/dataio/export/rms/inplace_volumes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
8 changes: 8 additions & 0 deletions tests/test_export_rms/test_export_rms_volumetrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 851fcf4

Please sign in to comment.