mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
220 lines
7.8 KiB
Python
220 lines
7.8 KiB
Python
from datetime import datetime, date
|
|
|
|
from backend.condition.domain.aspect_condition import AspectCondition
|
|
from backend.condition.domain.aspect_type import AspectType
|
|
from backend.condition.domain.element_type import ElementType
|
|
from backend.condition.domain.mapping.peabody.peabody_mapper import PeabodyMapper
|
|
from backend.condition.domain.property_condition_survey import PropertyConditionSurvey
|
|
from backend.condition.parsing.records.peabody.peabody_asset_condition import (
|
|
PeabodyAssetCondition,
|
|
)
|
|
from backend.condition.parsing.records.peabody.peabody_property import PeabodyProperty
|
|
from backend.condition.domain.element import Element
|
|
from backend.condition.tests.custom_asserts import CustomAsserts
|
|
|
|
|
|
def test_peabody_mapper_maps_property():
|
|
# arrange
|
|
peabody_property = PeabodyProperty(
|
|
uprn=1,
|
|
assets=[
|
|
PeabodyAssetCondition(
|
|
lo_reference="1000RAND0000",
|
|
full_address="FLAT 1 RANDOM SQUARE FAKE STREET LONDON E1 1EE",
|
|
location_type_code=1,
|
|
parent_lo_reference="RAND1000",
|
|
element_code=130,
|
|
element="WINDOWS",
|
|
sub_element_code=1,
|
|
sub_element="Windows",
|
|
material_code=1,
|
|
material_or_answer="UPVC Double Glazed",
|
|
renewal_quantity=8,
|
|
renewal_year=2036,
|
|
renewal_cost=4800,
|
|
cloned="N",
|
|
lo_type_code=1,
|
|
condition_survey_date=datetime(2024, 2, 15, 12, 47, 0),
|
|
),
|
|
PeabodyAssetCondition(
|
|
lo_reference="1000RAND0000",
|
|
full_address="FLAT 1 RANDOM SQUARE FAKE STREET LONDON E1 1EE",
|
|
location_type_code=1,
|
|
parent_lo_reference="RAND1000",
|
|
element_code=100,
|
|
element="GENERAL",
|
|
sub_element_code=15,
|
|
sub_element="External Decoration",
|
|
material_code=2,
|
|
material_or_answer="Normal",
|
|
renewal_quantity=1,
|
|
renewal_year=2029,
|
|
renewal_cost=1500,
|
|
cloned="N",
|
|
lo_type_code=1,
|
|
condition_survey_date=datetime(2024, 2, 15, 12, 47, 0),
|
|
),
|
|
],
|
|
)
|
|
mapper = PeabodyMapper()
|
|
|
|
expected_condition_survey = PropertyConditionSurvey(
|
|
uprn=1,
|
|
elements=[
|
|
Element(
|
|
element_type=ElementType.EXTERNAL_WINDOWS,
|
|
element_instance=1,
|
|
aspect_conditions=[
|
|
AspectCondition(
|
|
aspect_type=AspectType.MATERIAL,
|
|
aspect_instance=1,
|
|
value="UPVC Double Glazed",
|
|
quantity=8,
|
|
install_date=None,
|
|
renewal_year=2036,
|
|
comments=None,
|
|
),
|
|
],
|
|
),
|
|
Element(
|
|
element_type=ElementType.EXTERNAL_DECORATION,
|
|
element_instance=1,
|
|
aspect_conditions=[
|
|
AspectCondition(
|
|
aspect_type=AspectType.CONDITION,
|
|
aspect_instance=1,
|
|
value="Normal",
|
|
quantity=1,
|
|
install_date=None,
|
|
renewal_year=2029,
|
|
comments=None,
|
|
)
|
|
],
|
|
),
|
|
],
|
|
date=date(2000, 1, 1), # what should this be?
|
|
source="Peabody",
|
|
)
|
|
|
|
# act
|
|
actual_condition_survey: PropertyConditionSurvey = (
|
|
mapper.map_asset_conditions_for_property(peabody_property)
|
|
)
|
|
|
|
# assert
|
|
assert actual_condition_survey == expected_condition_survey
|
|
|
|
|
|
def test_wall_primary_and_secondary_wall_finish_map_correctly():
|
|
# arrange
|
|
peabody_property = PeabodyProperty(
|
|
uprn=1,
|
|
assets=[
|
|
PeabodyAssetCondition(
|
|
lo_reference="1000RAND0000",
|
|
full_address="FLAT 1 RANDOM SQUARE FAKE STREET LONDON E1 1EE",
|
|
location_type_code=1,
|
|
parent_lo_reference="RAND1000",
|
|
element_code=53,
|
|
element="External",
|
|
sub_element_code=23,
|
|
sub_element="Primary Wall Finish",
|
|
material_code=4,
|
|
material_or_answer="Pointed",
|
|
renewal_quantity=65,
|
|
renewal_year=2045,
|
|
renewal_cost=3835,
|
|
cloned="N",
|
|
lo_type_code=1,
|
|
condition_survey_date=datetime(2024, 2, 15, 12, 47, 0),
|
|
),
|
|
PeabodyAssetCondition(
|
|
lo_reference="1000RAND0000",
|
|
full_address="FLAT 1 RANDOM SQUARE FAKE STREET LONDON E1 1EE",
|
|
location_type_code=1,
|
|
parent_lo_reference="RAND1000",
|
|
element_code=120,
|
|
element="WALLS",
|
|
sub_element_code=2,
|
|
sub_element="Wall Finish",
|
|
material_code=1,
|
|
material_or_answer="Pointing",
|
|
renewal_quantity=1,
|
|
renewal_year=2069,
|
|
renewal_cost=2450,
|
|
cloned="N",
|
|
lo_type_code=1,
|
|
condition_survey_date=datetime(2014, 2, 15, 12, 47, 0),
|
|
),
|
|
PeabodyAssetCondition(
|
|
lo_reference="1000RAND0000",
|
|
full_address="FLAT 1 RANDOM SQUARE FAKE STREET LONDON E1 1EE",
|
|
location_type_code=1,
|
|
parent_lo_reference="RAND1000",
|
|
element_code=53,
|
|
element="External",
|
|
sub_element_code=30,
|
|
sub_element="Secondary Wall Finish",
|
|
material_code=8,
|
|
material_or_answer="Tile Hung",
|
|
renewal_quantity=8,
|
|
renewal_year=2049,
|
|
renewal_cost=472,
|
|
cloned="N",
|
|
lo_type_code=1,
|
|
condition_survey_date=datetime(2014, 2, 15, 12, 47, 0),
|
|
),
|
|
],
|
|
)
|
|
mapper = PeabodyMapper()
|
|
|
|
expected_condition_survey = PropertyConditionSurvey(
|
|
uprn=1,
|
|
elements=[
|
|
Element(
|
|
element_type=ElementType.EXTERNAL_WALL,
|
|
element_instance=1,
|
|
aspect_conditions=[
|
|
AspectCondition(
|
|
aspect_type=AspectType.FINISH,
|
|
aspect_instance=1,
|
|
value="Pointed",
|
|
quantity=65,
|
|
install_date=None,
|
|
renewal_year=2045,
|
|
comments=None,
|
|
),
|
|
AspectCondition(
|
|
aspect_type=AspectType.FINISH,
|
|
aspect_instance=1,
|
|
value="Pointing",
|
|
quantity=1,
|
|
install_date=None,
|
|
renewal_year=2069,
|
|
comments=None,
|
|
),
|
|
AspectCondition(
|
|
aspect_type=AspectType.FINISH,
|
|
aspect_instance=2,
|
|
value="Tile Hung",
|
|
quantity=8,
|
|
install_date=None,
|
|
renewal_year=2049,
|
|
comments=None,
|
|
),
|
|
],
|
|
),
|
|
],
|
|
date=date(2000, 1, 1), # what should this be?
|
|
source="Peabody",
|
|
)
|
|
|
|
# act
|
|
actual_condition_survey: PropertyConditionSurvey = (
|
|
mapper.map_asset_conditions_for_property(peabody_property)
|
|
)
|
|
|
|
# assert
|
|
assert CustomAsserts.assert_property_condition_surveys_equal(
|
|
actual_condition_survey, expected_condition_survey
|
|
)
|