def test_update_apartment_ok(session: Session, landlord: Landlord, application: Application): application.create_amenity(session, "first") amenity1 = session.query(Amenity).filter(Amenity.title == "first").first() assert not session.query(Apartment).count() application.create_apartment( session, landlord, name="Apartment Name", monthly_price=450.70, utilities_price=320.15, address="some address", country="Nigeria", state="Kano", city="Kano", description="Apartment description", house_type=HouseType.DUPLEX, bedrooms=3, bathrooms=4, size=1200, longitude=1324.5, latitude=324.6, furnish_type=FurnishType.UNFURNISHED, available_from=datetime.now().date(), available_to=datetime.now().date(), amenities=[amenity1], ) assert session.query(Apartment).count() == 1 apartment: Apartment = session.query(Apartment).all()[0] apartment.landlord == landlord apartment.name == "Apartment Name" apartment.monthly_price == 450.7 apartment.utilities_price == 320.15 apartment.address == "some address" apartment.country == "Nigeria" apartment.state == "Kano" apartment.city == "Kano" apartment.description == "Apartment description" apartment.house_type == HouseType.DUPLEX, apartment.bedrooms == 3 apartment.bathrooms == 4 apartment.size == 1200 apartment.furnish_type == FurnishType.UNFURNISHED apartment.available_from == datetime.now().date() apartment.available_to == datetime.now().date(), apartment.amenities == [amenity1] application.create_amenity(session, "pool") application.create_amenity(session, "barn") assert session.query(Amenity).count() == 3 amenities = session.query(Amenity).all() application.update_apartment(session, apartment.landlord, apartment.id, amenities=amenities) xapartment = application.apartment_service.get(session, apartment.id) assert xapartment.amenities == amenities
def update_apartment( apartment_id: UUID, data: ApartmentUpdateSchema, session: Session = Depends(dependencies.get_database_session), landlord: Landlord = Depends(dependencies.get_current_landlord), application: Application = Depends(dependencies.get_application), ): try: payload = data.dict(exclude_none=True) if "amenities" in payload: amenities = payload["amenities"] amenities = [ session.query(Amenity).filter(Amenity.title == x).first() for x in amenities ] payload["amenities"] = amenities return application.update_apartment(session, landlord, apartment_id, **payload) except ApplicationError as e: if "not found" in str(e).lower(): raise HTTPException(404, str(e)) raise HTTPException(400, str(e))