Пример #1
0
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
Пример #2
0
def test_landlord_update_not_owned_apartment_fail(
    client: TestClient,
    session: Session,
    landlord_auth_header: dict,
    application: Application,
):
    data = {
        "first_name": "Another",
        "last_name": "Landlord",
        "email": "*****@*****.**",
        "phone_number": "00023456788",
        "dob": None,
        "hashed_password": "******",
    }
    apartment_create_data = dict(
        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=1245.7,
        latitude=234.9,
        furnish_type=FurnishType.FURNISHED,
        available_from=datetime.now().date(),
        available_to=datetime.now().date(),
        amenities=[],
    )
    new_landlord = Landlord(**data)
    session.add(new_landlord)
    session.commit()
    assert len(application.landlord_service.all(session)) == 2
    application.create_apartment(session, new_landlord,
                                 **apartment_create_data)
    new_apartment = session.query(Apartment).all()[0]
    assert len(application.apartment_service.all(session)) == 1
    response = client.put(
        f"/api/apartments/{new_apartment.id}",
        json={"name": "updated name"},
        headers=landlord_auth_header,
    )
    assert response.status_code == 400
Пример #3
0
def apartment(session: Session, landlord: Landlord,
              application: Application) -> Apartment:
    apartment = application.create_apartment(
        session,
        landlord,
        "apartment name",
        450.35,
        320.40,
        "some address",
        "Nigeria",
        "Kano",
        "KN",
        "some description",
        HouseType.BUNGALOW,
        3,
        2,
        1200,
        1324,
        345.4,
        FurnishType.UNFURNISHED,
        datetime.utcnow().date(),
        datetime.utcnow().date(),
        [],
    )
    assert session.query(Apartment).get(apartment.id)
    return apartment
Пример #4
0
def test_create_apartment_ok(session: Session, landlord: Landlord,
                             application: Application):
    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.4,
        latitude=234.5,
        furnish_type=FurnishType.FURNISHED,
        available_from=datetime.now().date(),
        available_to=datetime.now().date(),
        amenities=[],
    )
    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.FURNISHED
    apartment.available_from == datetime.now().date()
    apartment.available_to == datetime.now().date(),
    apartment.amenities == []
Пример #5
0
async def create_apartment(
        data: ApartmentCreateSchema,
        landlord: Landlord = Depends(dependencies.get_current_landlord),
        application: Application = Depends(dependencies.get_application),
        session: Session = Depends(dependencies.get_database_session),
):
    try:
        payload = data.dict()
        amenities = data.amenities
        if amenities:
            amenities = [session.query(Amenity).get(x) for x in amenities]
            if any(x is None for x in amenities):
                raise HTTPException(404, "Amenity not found")
        payload["amenities"] = amenities
        return application.create_apartment(session, landlord, **payload)
    except ApplicationError as e:
        if "not found" in str(e).lower():
            raise HTTPException(404, str(e))
        raise HTTPException(401, str(e))
Пример #6
0
def create_apartment_at(application: Application, session, landlord, index,
                        latitude, longitude) -> Apartment:
    apartment_create_data = dict(
        name=f"Apartment Name {index}",
        monthly_price=450.70 + index,
        utilities_price=320.15 + index,
        address=f"some address {index}",
        country=f"Nigeria{index}",
        state=f"Kano{index}",
        city=f"Kano{index}",
        description=f"Apartment description {index}",
        house_type=HouseType.DUPLEX,
        bedrooms=3 + index,
        bathrooms=4 + index,
        size=1200 + index,
        longitude=longitude,
        latitude=latitude,
        furnish_type=FurnishType.FURNISHED,
        available_from=datetime.now().date(),
        available_to=datetime.now().date(),
        amenities=[],
    )
    return application.create_apartment(session, landlord,
                                        **apartment_create_data)