Skip to content

Commit

Permalink
Add tests for updated_acquisition_price
Browse files Browse the repository at this point in the history
  • Loading branch information
indigane committed May 3, 2024
1 parent b68827d commit 179aa0b
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 3 deletions.
1 change: 0 additions & 1 deletion backend/hitas/services/apartment.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ def get_first_sale_acquisition_price(apartment_id: str | int):
.annotate(_first_sale_price=Sum(F("purchase_price") + F("apartment_share_of_housing_company_loans")))
.values_list("_first_sale_price", flat=True)
)
# Prioritize updated_acquisition_price, if None fall back to first sale prices
if subquery:
updated_acquisition_price_queryset = Apartment.objects.filter(id=OuterRef(apartment_id)).values_list(
"updated_acquisition_price", flat=True
Expand Down
24 changes: 23 additions & 1 deletion backend/hitas/tests/apis/test_api_apartment.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import datetime
import uuid
from decimal import Decimal
from typing import Any, NamedTuple

import pytest
Expand Down Expand Up @@ -596,7 +597,9 @@ def test__api__apartment__retrieve(api_client: HitasAPIClient):
"first_sale_purchase_price": float(ap1.first_sale_purchase_price),
"first_sale_share_of_housing_company_loans": float(ap1.first_sale_share_of_housing_company_loans),
"first_sale_acquisition_price": float(ap1.first_sale_acquisition_price),
"updated_acquisition_price": None,
"updated_acquisition_price": (
float(ap1.updated_acquisition_price) if ap1.updated_acquisition_price else None
),
"catalog_purchase_price": float(ap1.catalog_purchase_price),
"catalog_share_of_housing_company_loans": float(ap1.catalog_primary_loan_amount),
"catalog_acquisition_price": float(ap1.catalog_acquisition_price),
Expand Down Expand Up @@ -2241,6 +2244,25 @@ def test__api__apartment__update__overlapping_shares(
}


@pytest.mark.django_db
def test__api__apartment__update__updated_acquisition_price(api_client: HitasAPIClient):
apartment: Apartment = ApartmentFactory.create(building__real_estate__housing_company__hitas_type=HitasType.HITAS_I)
data = get_apartment_create_data(apartment.building)
updated_acquisition_price = apartment.first_sale_acquisition_price + Decimal(100_000)
data["prices"]["updated_acquisition_price"] = updated_acquisition_price
url = reverse(
"hitas:apartment-detail",
kwargs={
"housing_company_uuid": apartment.housing_company.uuid.hex,
"uuid": apartment.uuid.hex,
},
)
response = api_client.put(url, data=data, format="json")
assert response.status_code == status.HTTP_200_OK, response.json()
assert Decimal(str(response.json()["prices"]["first_sale_acquisition_price"])) == updated_acquisition_price
assert Decimal(str(response.json()["prices"]["updated_acquisition_price"])) == updated_acquisition_price


# Delete tests


Expand Down
7 changes: 7 additions & 0 deletions backend/hitas/tests/factories/apartment_sale.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from typing import Any, Iterable, Optional

import factory
from django.conf import settings
from factory import fuzzy
from factory.django import DjangoModelFactory

Expand Down Expand Up @@ -36,3 +37,9 @@ def ownerships(self, create: bool, extracted: Optional[Iterable[Ownership]], **k

for ownership in extracted:
self.ownerships.add(ownership)

@factory.post_generation
def set_updated_acquisition_price(self, create, extracted, **kwargs):
if getattr(settings, "TESTS_SHOULD_SET_UPDATED_ACQUISITION_PRICE", False):
self.apartment.updated_acquisition_price = self.apartment.first_sale_acquisition_price
self.apartment.save()
Loading

0 comments on commit 179aa0b

Please sign in to comment.