Model/model_data/tests/test_floor_attributes.py
2023-06-15 15:06:24 +01:00

49 lines
1.9 KiB
Python

import pytest
from model_data.tests.test_data.test_floor_attributes_cases import clean_floor_cases
from model_data.epc_attributes.FloorAttributes import FloorAttributes
class TestCleanFloor:
def test_init(self):
# Test initialization with a valid description
valid_description = 'Solid, limited insulation (assumed)'
floor_attr = FloorAttributes(valid_description)
assert floor_attr.description == valid_description.lower()
# Test initialization with an empty description
with pytest.raises(ValueError):
FloorAttributes('')
# Test initialization with a description that contains none of the keywords
with pytest.raises(ValueError):
FloorAttributes('description without keywords')
@pytest.mark.parametrize(
"test_case",
clean_floor_cases
)
def test_process_floor(self, test_case):
expected_result = test_case.copy()
del expected_result["original_description"]
result = FloorAttributes(test_case['original_description']).process()
# Ensure the output ordering is correct
assert sorted(result.items()) == sorted(expected_result.items())
def test_invalid_description(self):
# Test that invalid descriptions raise a ValueError
invalid_descriptions = [
"",
"invalid description",
"description with no known floor types or thermal transmittance",
]
for description in invalid_descriptions:
with pytest.raises(ValueError):
FloorAttributes(description).process()
def test_process_with_invalid_description(self):
# Test that processing an invalid description raises a ValueError
invalid_description = 'description without keywords'
with pytest.raises(ValueError):
FloorAttributes(invalid_description)