Skip to content

Commit 40ab98b

Browse files
committed
Ariport Direct Connection and Airline Integration Test Working
1 parent 45d0bec commit 40ab98b

File tree

6 files changed

+51
-53
lines changed

6 files changed

+51
-53
lines changed

src/main/java/org/couchbase/quickstart/springboot/controllers/AirportController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import javax.validation.Valid;
66

77
import org.couchbase.quickstart.springboot.models.Airport;
8+
import org.couchbase.quickstart.springboot.models.Route;
89
import org.couchbase.quickstart.springboot.services.AirportService;
910
import org.springframework.http.HttpStatus;
1011
import org.springframework.http.ResponseEntity;
@@ -124,10 +125,11 @@ public ResponseEntity<List<Airport>> listAirports() {
124125

125126
@Operation(summary = "List all direct connections from an airport")
126127
@GetMapping("/direct-connections")
127-
public ResponseEntity<List<Airport>> listDirectConnections(@RequestParam String airportCode) {
128+
public ResponseEntity<List<String>> listDirectConnections(@RequestParam String airportCode) {
128129
try {
129-
List<Airport> airports = airportService.listDirectConnections(airportCode);
130-
return new ResponseEntity<>(airports, HttpStatus.OK);
130+
List<String> destinationAirports = airportService.listDirectConnections(airportCode).stream()
131+
.map(Route::getDestinationairport).toList();
132+
return new ResponseEntity<>(destinationAirports, HttpStatus.OK);
131133
} catch (Exception e) {
132134
log.error(INTERNAL_SERVER_ERROR + ": " + e.getMessage());
133135
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);

src/main/java/org/couchbase/quickstart/springboot/repositories/AirportRepository.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.couchbase.quickstart.springboot.repositories;
22

33
import org.couchbase.quickstart.springboot.models.Airport;
4+
import org.couchbase.quickstart.springboot.models.Route;
5+
46
import java.util.List;
57

68
public interface AirportRepository {
@@ -15,6 +17,6 @@ public interface AirportRepository {
1517

1618
List<Airport> findAll();
1719

18-
List<Airport> findDirectConnections(String airportCode);
20+
List<Route> findDirectConnections(String airportCode);
1921

2022
}

src/main/java/org/couchbase/quickstart/springboot/repositories/AirportRepositoryImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import org.couchbase.quickstart.springboot.configs.DBProperties;
66
import org.couchbase.quickstart.springboot.models.Airport;
7-
7+
import org.couchbase.quickstart.springboot.models.Route;
88
import org.springframework.stereotype.Repository;
99
import com.couchbase.client.java.Bucket;
1010
import com.couchbase.client.java.Cluster;
@@ -54,14 +54,14 @@ public List<Airport> findAll() {
5454
.rowsAs(Airport.class);
5555
}
5656

57-
public List<Airport> findDirectConnections(String airportCode) {
58-
String statement = "SELECT airport.* FROM `" + dbProperties.getBucketName()
57+
public List<Route> findDirectConnections(String airportCode) {
58+
String statement = "SELECT route.* FROM `" + dbProperties.getBucketName()
5959
+ "`.`inventory`.`airport` as airport JOIN `" + dbProperties.getBucketName()
6060
+ "`.`inventory`.`route` as route on route.sourceairport = airport.faa WHERE airport.faa = \""
6161
+ airportCode + "\" and route.stops = 0";
6262
return cluster
6363
.query(statement, QueryOptions.queryOptions().scanConsistency(QueryScanConsistency.REQUEST_PLUS))
64-
.rowsAs(Airport.class);
64+
.rowsAs(Route.class);
6565

6666
}
6767
}

src/main/java/org/couchbase/quickstart/springboot/services/AirportService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import java.util.List;
55
import org.couchbase.quickstart.springboot.models.Airport;
6+
import org.couchbase.quickstart.springboot.models.Route;
67

78
public interface AirportService {
89

@@ -11,5 +12,5 @@ public interface AirportService {
1112
Airport updateAirport(String id, Airport airport);
1213
void deleteAirport(String id);
1314
List<Airport> listAirports();
14-
List<Airport> listDirectConnections(String airportCode);
15+
List<Route> listDirectConnections(String airportCode);
1516
}

src/main/java/org/couchbase/quickstart/springboot/services/AirportServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44

55
import org.couchbase.quickstart.springboot.models.Airport;
6+
import org.couchbase.quickstart.springboot.models.Route;
67
import org.couchbase.quickstart.springboot.repositories.AirportRepository;
78
import org.springframework.stereotype.Service;
89

@@ -35,7 +36,7 @@ public List<Airport> listAirports() {
3536
return airportRepository.findAll();
3637
}
3738

38-
public List<Airport> listDirectConnections(String airportCode) {
39+
public List<Route> listDirectConnections(String airportCode) {
3940
return airportRepository.findDirectConnections(airportCode);
4041
}
4142

src/test/java/org/couchbase/quickstart/springboot/controllers/AirlineIntegrationTest.java

Lines changed: 35 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -187,47 +187,39 @@ void testListAirlinesByCountry() {
187187

188188
}
189189

190-
// @Test
191-
// void testListAirlinesByDestinationAirport() {
192-
// ResponseEntity<List<Airline>> response = restTemplate.exchange(
193-
// "http://localhost:" + port + "/api/v1/airline/destination_airport/ATL",
194-
// HttpMethod.GET, null, new ParameterizedTypeReference<List<Airline>>() {
195-
// });
196-
// assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
197-
198-
// List<Airline> airlines = response.getBody();
199-
// assert airlines != null;
200-
// Airline airline = airlines.stream().filter(a ->
201-
// a.getId().equals("24")).findFirst().orElse(null);
202-
// assertThat(airline).isNotNull();
203-
// assertThat(airline.getId()).isEqualTo("24");
204-
// assertThat(airline.getType()).isEqualTo("airline");
205-
// assertThat(airline.getName()).isEqualTo("Aerocondor");
206-
// assertThat(airline.getIata()).isEqualTo("2B");
207-
// assertThat(airline.getIcao()).isEqualTo("ARD");
208-
// assertThat(airline.getCallsign()).isEqualTo("AEROCONDOR");
209-
// assertThat(airline.getCountry()).isEqualTo("Portugal");
210-
211-
// // {"id":1191,"type":"airline","name":"Air
212-
// // Austral","iata":"UU","icao":"REU","callsign":"REUNION","country":"France"}
213-
214-
// ResponseEntity<List<Airline>> response2 = restTemplate.exchange(
215-
// "http://localhost:" + port + "/api/v1/airline/destination_airport/CDG",
216-
// HttpMethod.GET, null, new ParameterizedTypeReference<List<Airline>>() {
217-
// });
218-
// assertThat(response2.getStatusCode()).isEqualTo(HttpStatus.OK);
219-
220-
// List<Airline> airlines2 = response2.getBody();
221-
// assert airlines2 != null;
222-
// Airline airline2 = airlines2.stream().filter(a ->
223-
// a.getId().equals("1191")).findFirst().orElse(null);
224-
// assertThat(airline2).isNotNull();
225-
// assertThat(airline2.getId()).isEqualTo("1191");
226-
// assertThat(airline2.getType()).isEqualTo("airline");
227-
// assertThat(airline2.getName()).isEqualTo("Air Austral");
228-
// assertThat(airline2.getIata()).isEqualTo("UU");
229-
// assertThat(airline2.getIcao()).isEqualTo("REU");
230-
// assertThat(airline2.getCallsign()).isEqualTo("REUNION");
231-
// assertThat(airline2.getCountry()).isEqualTo("France");
232-
// }
190+
@Test
191+
void testListAirlinesByDestinationAirport() {
192+
ResponseEntity<List<Airline>> response = restTemplate.exchange(
193+
"http://localhost:" + port + "/api/v1/airline/destination_airport/SFO",
194+
HttpMethod.GET, null, new ParameterizedTypeReference<List<Airline>>() {
195+
});
196+
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
197+
198+
List<Airline> airlines = response.getBody();
199+
assert airlines != null;
200+
assertThat(airlines).hasSize(14);
201+
Airline expectedAirline = Airline.builder().id("3029").type("airline").name("JetBlue Airways")
202+
.iata("B6").icao("JBU").callsign("JETBLUE").country("United States").build();
203+
Airline expectedAirline2 = Airline.builder().id("137").type("airline").name("Air France").iata("AF")
204+
.icao("AFR").callsign("AIRFRANS").country("France").build();
205+
assertThat(airlines.get(0)).isEqualTo(expectedAirline);
206+
assertThat(airlines.get(13)).isEqualTo(expectedAirline2);
207+
208+
ResponseEntity<List<Airline>> response2 = restTemplate.exchange(
209+
"http://localhost:" + port + "/api/v1/airline/destination_airport/MRS",
210+
HttpMethod.GET, null, new ParameterizedTypeReference<List<Airline>>() {
211+
});
212+
assertThat(response2.getStatusCode()).isEqualTo(HttpStatus.OK);
213+
214+
List<Airline> airlines2 = response2.getBody();
215+
assert airlines2 != null;
216+
assertThat(airlines2).hasSize(7);
217+
218+
Airline expectedAirline3 = Airline.builder().id("137").type("airline").name("Air France").iata("AF")
219+
.icao("AFR").callsign("AIRFRANS").country("France").build();
220+
Airline expectedAirline4 = Airline.builder().id("1355").type("airline").name("British Airways")
221+
.iata("BA").icao("BAW").callsign("SPEEDBIRD").country("United Kingdom").build();
222+
assertThat(airlines2.get(0)).isEqualTo(expectedAirline3);
223+
assertThat(airlines2.get(6)).isEqualTo(expectedAirline4);
224+
}
233225
}

0 commit comments

Comments
 (0)