Flash out API test suite
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from app.models.arrival import Arrival, ArrivalStatus
|
||||
from app.models.departure import Departure, DepartureStatus
|
||||
from app.models.local_flight import LocalFlight, LocalFlightStatus, LocalFlightType
|
||||
from app.models.ppr import Aircraft, Airport, PPRRecord, PPRStatus
|
||||
|
||||
|
||||
def test_public_arrivals_and_departures_start_empty(client):
|
||||
arrivals = client.get("/api/v1/public/arrivals")
|
||||
departures = client.get("/api/v1/public/departures")
|
||||
|
||||
assert arrivals.status_code == 200
|
||||
assert arrivals.json() == []
|
||||
assert departures.status_code == 200
|
||||
assert departures.json() == []
|
||||
|
||||
|
||||
def test_public_boards_include_todays_flights(client, db):
|
||||
now = datetime.now().replace(microsecond=0)
|
||||
ppr = PPRRecord(
|
||||
status=PPRStatus.LANDED,
|
||||
ac_reg="G-PPR1",
|
||||
ac_type="PA28",
|
||||
ac_call="GPPR1",
|
||||
captain="Arriving Pilot",
|
||||
in_from="EGLL",
|
||||
eta=now,
|
||||
pob_in=2,
|
||||
out_to="EGKK",
|
||||
etd=now,
|
||||
pob_out=2,
|
||||
created_by="test",
|
||||
)
|
||||
local_flight = LocalFlight(
|
||||
registration="G-LOC1",
|
||||
type="C152",
|
||||
callsign="GLOC1",
|
||||
pob=1,
|
||||
flight_type=LocalFlightType.LOCAL,
|
||||
status=LocalFlightStatus.BOOKED_OUT,
|
||||
created_dt=now,
|
||||
etd=now,
|
||||
)
|
||||
arrival = Arrival(
|
||||
registration="G-ARR1",
|
||||
type="DA40",
|
||||
callsign="GARR1",
|
||||
pob=3,
|
||||
in_from="EGBB",
|
||||
status=ArrivalStatus.INBOUND,
|
||||
created_dt=now,
|
||||
eta=now,
|
||||
)
|
||||
departure = Departure(
|
||||
registration="G-DEP1",
|
||||
type="SR22",
|
||||
callsign="GDEP1",
|
||||
pob=2,
|
||||
out_to="EGCC",
|
||||
status=DepartureStatus.BOOKED_OUT,
|
||||
created_dt=now,
|
||||
etd=now,
|
||||
)
|
||||
db.add_all([ppr, local_flight, arrival, departure])
|
||||
db.commit()
|
||||
|
||||
arrivals = client.get("/api/v1/public/arrivals")
|
||||
departures = client.get("/api/v1/public/departures")
|
||||
|
||||
assert arrivals.status_code == 200
|
||||
assert {item.get("ac_reg") or item.get("registration") for item in arrivals.json()} == {
|
||||
"G-PPR1",
|
||||
"G-ARR1",
|
||||
}
|
||||
assert departures.status_code == 200
|
||||
assert {item["ac_reg"] for item in departures.json()} == {
|
||||
"G-PPR1",
|
||||
"G-LOC1",
|
||||
"G-DEP1",
|
||||
}
|
||||
|
||||
|
||||
def test_public_reference_lookups_return_seeded_records(client, db):
|
||||
db.add(
|
||||
Airport(
|
||||
icao="EGLL",
|
||||
iata="LHR",
|
||||
name="London Heathrow",
|
||||
country="United Kingdom",
|
||||
city="London",
|
||||
)
|
||||
)
|
||||
db.add(
|
||||
Aircraft(
|
||||
registration="G-ABCD",
|
||||
type_code="PA28",
|
||||
clean_reg="GABCD",
|
||||
manufacturer_name="Piper",
|
||||
model="Cherokee",
|
||||
)
|
||||
)
|
||||
db.commit()
|
||||
|
||||
airport_response = client.get("/api/v1/airport/public/lookup/EGLL")
|
||||
aircraft_response = client.get("/api/v1/aircraft/public/lookup/G-ABC")
|
||||
|
||||
assert airport_response.status_code == 200
|
||||
assert airport_response.json()[0]["icao"] == "EGLL"
|
||||
assert aircraft_response.status_code == 200
|
||||
assert aircraft_response.json()[0]["registration"] == "G-ABCD"
|
||||
|
||||
|
||||
def test_public_reference_lookups_return_empty_for_short_queries(client):
|
||||
airport_response = client.get("/api/v1/airport/public/lookup/E")
|
||||
aircraft_response = client.get("/api/v1/aircraft/public/lookup/G-A")
|
||||
|
||||
assert airport_response.status_code == 200
|
||||
assert airport_response.json() == []
|
||||
assert aircraft_response.status_code == 200
|
||||
assert aircraft_response.json() == []
|
||||
|
||||
|
||||
def test_public_airport_lookup_searches_by_partial_name(client, db):
|
||||
db.add(
|
||||
Airport(
|
||||
icao="EGBB",
|
||||
iata="BHX",
|
||||
name="Birmingham Airport",
|
||||
country="United Kingdom",
|
||||
city="Birmingham",
|
||||
)
|
||||
)
|
||||
db.commit()
|
||||
|
||||
response = client.get("/api/v1/airport/public/lookup/Birmingham")
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json()[0]["icao"] == "EGBB"
|
||||
|
||||
|
||||
def test_public_boards_exclude_old_and_cancelled_records(client, db):
|
||||
yesterday = datetime.now().replace(microsecond=0) - timedelta(days=1)
|
||||
db.add(
|
||||
PPRRecord(
|
||||
status=PPRStatus.CANCELED,
|
||||
ac_reg="G-OLD1",
|
||||
ac_type="PA28",
|
||||
captain="Old Pilot",
|
||||
in_from="EGLL",
|
||||
eta=yesterday,
|
||||
pob_in=1,
|
||||
out_to="EGKK",
|
||||
etd=yesterday,
|
||||
created_by="test",
|
||||
)
|
||||
)
|
||||
db.add(
|
||||
LocalFlight(
|
||||
registration="G-OLD2",
|
||||
type="C152",
|
||||
pob=1,
|
||||
flight_type=LocalFlightType.LOCAL,
|
||||
status=LocalFlightStatus.BOOKED_OUT,
|
||||
created_dt=yesterday,
|
||||
)
|
||||
)
|
||||
db.commit()
|
||||
|
||||
arrivals = client.get("/api/v1/public/arrivals")
|
||||
departures = client.get("/api/v1/public/departures")
|
||||
|
||||
assert arrivals.status_code == 200
|
||||
assert arrivals.json() == []
|
||||
assert departures.status_code == 200
|
||||
assert departures.json() == []
|
||||
Reference in New Issue
Block a user