mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
55 lines
2.1 KiB
Python
55 lines
2.1 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
|
|
empty = FloorAttributes('')
|
|
assert empty.nodata
|
|
output = empty.process()
|
|
assert output == {"no_data": True}
|
|
|
|
# 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)
|
|
|
|
def test_known_errors(self):
|
|
error_description = "Conservatory"
|
|
obj = FloorAttributes(error_description)
|
|
assert obj.nodata
|