def test_tenant_update_apartment_fail( client: TestClient, session: Session, landlord_auth_header: dict, tenant_auth_header: dict, application: Application, ): application.create_amenity(session, "first") application.create_amenity(session, "second") assert not session.query(Apartment).count() response = client.post("/api/apartments/", json=apartment_create_data, headers=landlord_auth_header) assert response.status_code == 201 assert session.query(Apartment).count() == 1 apartment = session.query(Apartment).all()[0] assert apartment.name != "updated name" assert apartment.amenities == [] response = client.put( f"/api/apartments/{apartment.id}", json={ "name": "updated name", "amenities": ["first", "second"] }, headers=tenant_auth_header, ) assert response.status_code == 403
def test_create_exisiting_amenity_fail(session: Session, application: Application): assert not session.query(Amenity).count() application.create_amenity(session, "hello") assert session.query(Amenity).count() == 1 amenity = session.query(Amenity).all()[0] assert amenity.title == "hello" with pytest.raises(ApplicationError): application.create_amenity(session, "hello")
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 test_tenant_create_apartments_fail( client: TestClient, session: Session, tenant_auth_header: dict, application: Application, ): application.create_amenity(session, "first") application.create_amenity(session, "second") create_data = {**apartment_create_data, "amenities": ["first", "second"]} assert not session.query(Apartment).count() response = client.post("/api/apartments/", json=create_data, headers=tenant_auth_header) assert response.status_code == 403
def test_fetch_amenities( user, user_auth_header, session: Session, client: TestClient, application: Application, ): application.create_amenity(session, "pool") application.create_amenity(session, "barn") assert session.query(Amenity).count() == 2 response = client.get("/api/amenities/", headers=user_auth_header) assert response.status_code == 200 result = response.json() assert isinstance(result, list) assert len(result) == 2
def test_create_apartment_with_negative_size_fail( client: TestClient, session: Session, landlord_auth_header: dict, application: Application, ): application.create_amenity(session, "first") application.create_amenity(session, "second") create_data = { **apartment_create_data, "size": 0, "amenities": ["first", "second"], } assert not session.query(Apartment).count() response = client.post("/api/apartments/", json=create_data, headers=landlord_auth_header) assert response.status_code == 422
async def create_amenity( data: AmenityCreateSchema, admin: Admin = Depends(dependencies.get_current_admin_user), application: Application = Depends(dependencies.get_application), session: Session = Depends(dependencies.get_database_session), ): try: return application.create_amenity(session, **data.dict()) except ApplicationError as e: raise HTTPException(401, str(e))
def test_landlord_update_apartments_ok( client: TestClient, session: Session, landlord_auth_header: dict, application: Application, ): application.create_amenity(session, "first") application.create_amenity(session, "second") assert not session.query(Apartment).count() response = client.post("/api/apartments/", json=apartment_create_data, headers=landlord_auth_header) assert response.status_code == 201 assert session.query(Apartment).count() == 1 apartment = session.query(Apartment).all()[0] assert apartment.name != "updated name" assert apartment.amenities == [] response = client.put( f"/api/apartments/{apartment.id}", json={ "name": "updated name", "amenities": ["first", "second"] }, headers=landlord_auth_header, ) result = response.json() expected_keys = [ *apartment_create_data.keys(), "id", "amenityTitles", "totalPrice" ] expected_keys.remove("amenities") expected_keys.remove("longitude") expected_keys.remove("latitude") assert all(key in result for key in expected_keys) assert response.status_code == 200 session.expire_all() assert session.query(Apartment).count() == 1 apartment = session.query(Apartment).all()[0] assert apartment.name == "updated name" assert len(apartment.amenities) == 2
def test_landlord_create_apartments_ok( client: TestClient, session: Session, landlord_auth_header: dict, application: Application, ): application.create_amenity(session, "first") application.create_amenity(session, "second") create_data = {**apartment_create_data, "amenities": ["first", "second"]} assert not session.query(Apartment).count() response = client.post("/api/apartments/", json=create_data, headers=landlord_auth_header) result = response.json() expected_keys = [ *apartment_create_data.keys(), "id", "amenityTitles", "totalPrice" ] expected_keys.remove("amenities") expected_keys.remove("longitude") expected_keys.remove("latitude") assert all(key in result for key in expected_keys) assert isinstance(result, dict) assert response.status_code == 201 assert session.query(Apartment).count() == 1
def test_create_amenity_ok(session: Session, application: Application): assert not session.query(Amenity).count() application.create_amenity(session, "hello") assert session.query(Amenity).count() == 1 amenity = session.query(Amenity).all()[0] assert amenity.title == "hello"