Skip to content

Commit 8a81dbe

Browse files
committed
Skip incomplete airport rows in list responses
1 parent 35eceb2 commit 8a81dbe

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

app/routers/airport.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,21 @@ def get_airports_list(
112112
try:
113113
result = db.query(query, country=country, limit=limit, offset=offset)
114114
airports = [r for r in result]
115-
return airports
115+
return _filter_complete_airports(airports)
116116
except Exception as e:
117117
raise HTTPException(status_code=500, detail=f"Unexpected error: {e}")
118118

119119

120+
def _filter_complete_airports(airports: list[dict]) -> list[dict]:
121+
"""Drop rows that cannot satisfy the Airport response model."""
122+
required_fields = ("airportname", "city", "country")
123+
return [
124+
airport
125+
for airport in airports
126+
if all(field in airport and airport[field] is not None for field in required_fields)
127+
]
128+
129+
120130
class DestinationAirport(BaseModel):
121131
"""Model for Destination Airport"""
122132

app/tests/test_airport.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,29 @@
33
from couchbase.exceptions import DocumentNotFoundException
44

55
from app.main import app
6+
from app.routers.airport import _filter_complete_airports
67

78
client = TestClient(app)
89

910

11+
def test_filter_complete_airports_skips_incomplete_rows():
12+
complete_airport = {
13+
"airportname": "Test Airport",
14+
"city": "Test City",
15+
"country": "Test Country",
16+
"faa": "TAA",
17+
}
18+
incomplete_airport = {
19+
"city": "Initial Test City",
20+
"country": "Initial Test Country",
21+
"faa": "TESTFAA",
22+
}
23+
24+
assert _filter_complete_airports([complete_airport, incomplete_airport]) == [
25+
complete_airport
26+
]
27+
28+
1029
class TestAirport:
1130
def test_add_airport(
1231
self, couchbase_client, airport_api, airport_collection, helpers

0 commit comments

Comments
 (0)