mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
113 lines
5 KiB
Python
113 lines
5 KiB
Python
from backend.app.db.models.condition import PropertyConditionSurveyModel
|
|
from backend.condition.domain.property_condition_survey import PropertyConditionSurvey
|
|
|
|
|
|
class CustomAsserts:
|
|
def assert_property_condition_surveys_equal(
|
|
actual: PropertyConditionSurvey,
|
|
expected: PropertyConditionSurvey,
|
|
) -> bool:
|
|
assert actual.uprn == expected.uprn, "UPRN differs"
|
|
assert actual.source == expected.source, "Source differs"
|
|
assert actual.date == expected.date, "Date differs"
|
|
|
|
assert len(actual.elements) == len(expected.elements), (
|
|
f"Expected {len(expected.elements)} elements, "
|
|
f"got {len(actual.elements)}"
|
|
)
|
|
|
|
for i, (actual_element, expected_element) in enumerate(
|
|
zip(actual.elements, expected.elements)
|
|
):
|
|
assert actual_element.element_type == expected_element.element_type, (
|
|
f"Element[{i}] type differs: "
|
|
f"{actual_element.element_type} != {expected_element.element_type}"
|
|
)
|
|
assert (
|
|
actual_element.element_instance == expected_element.element_instance
|
|
), (
|
|
f"Element[{i}] instance differs: "
|
|
f"{actual_element.element_instance} != {expected_element.element_instance}"
|
|
)
|
|
|
|
assert len(actual_element.aspect_conditions) == len(
|
|
expected_element.aspect_conditions
|
|
), f"Element[{i}] aspect count differs"
|
|
|
|
for j, (actual_aspect, expected_aspect) in enumerate(
|
|
zip(
|
|
actual_element.aspect_conditions,
|
|
expected_element.aspect_conditions,
|
|
)
|
|
):
|
|
prefix = f"Element[{i}].Aspect[{j}]"
|
|
|
|
assert actual_aspect.aspect_type == expected_aspect.aspect_type, (
|
|
f"{prefix}.aspect_type differs: "
|
|
f"{actual_aspect.aspect_type} != {expected_aspect.aspect_type}"
|
|
)
|
|
assert (
|
|
actual_aspect.aspect_instance == expected_aspect.aspect_instance
|
|
), (
|
|
f"{prefix}.aspect_instance differs: "
|
|
f"{actual_aspect.aspect_instance} != {expected_aspect.aspect_instance}"
|
|
)
|
|
assert actual_aspect.value == expected_aspect.value, (
|
|
f"{prefix}.value differs: "
|
|
f"{actual_aspect.value} != {expected_aspect.value}"
|
|
)
|
|
assert actual_aspect.quantity == expected_aspect.quantity, (
|
|
f"{prefix}.quantity differs: "
|
|
f"{actual_aspect.quantity} != {expected_aspect.quantity}"
|
|
)
|
|
assert actual_aspect.install_date == expected_aspect.install_date, (
|
|
f"{prefix}.install_date differs: "
|
|
f"{actual_aspect.install_date} != {expected_aspect.install_date}"
|
|
)
|
|
assert actual_aspect.renewal_year == expected_aspect.renewal_year, (
|
|
f"{prefix}.renewal_year differs: "
|
|
f"{actual_aspect.renewal_year} != {expected_aspect.renewal_year}"
|
|
)
|
|
assert actual_aspect.comments == expected_aspect.comments, (
|
|
f"{prefix}.comments differs: "
|
|
f"{actual_aspect.comments} != {expected_aspect.comments}"
|
|
)
|
|
return True
|
|
|
|
def assert_property_condition_survey_model_matches_expected(
|
|
actual_model: PropertyConditionSurveyModel,
|
|
expected: dict,
|
|
) -> None:
|
|
assert actual_model.uprn == expected["uprn"], "UPRN differs"
|
|
assert actual_model.date == expected["date"], "Date differs"
|
|
assert actual_model.source == expected["source"], "Source differs"
|
|
|
|
assert len(actual_model.elements) == len(expected["elements"]), (
|
|
f"Expected {len(expected['elements'])} elements, "
|
|
f"got {len(actual_model.elements)}"
|
|
)
|
|
|
|
for i, (actual_element, expected_element) in enumerate(
|
|
zip(actual_model.elements, expected["elements"])
|
|
):
|
|
assert (
|
|
actual_element.element_type == expected_element["element_type"]
|
|
), f"Element[{i}].element_type differs"
|
|
assert (
|
|
actual_element.element_instance == expected_element["element_instance"]
|
|
), f"Element[{i}].element_instance differs"
|
|
|
|
assert len(actual_element.aspect_conditions) == len(
|
|
expected_element["aspects"]
|
|
), f"Element[{i}] aspect count differs"
|
|
|
|
for j, (actual_aspect, expected_aspect) in enumerate(
|
|
zip(actual_element.aspect_conditions, expected_element["aspects"])
|
|
):
|
|
prefix = f"Element[{i}].Aspect[{j}]"
|
|
|
|
for key, value in expected_aspect.items():
|
|
assert getattr(actual_aspect, key) == value, (
|
|
f"{prefix}.{key} differs: "
|
|
f"{getattr(actual_aspect, key)} != {value}"
|
|
)
|