66import java .util .Map ;
77
88import org .couchbase .quickstart .springboot .models .Airline ;
9+ import org .couchbase .quickstart .springboot .services .AirlineService ;
910import org .junit .jupiter .api .AfterEach ;
1011import org .junit .jupiter .api .BeforeEach ;
1112import org .junit .jupiter .api .Test ;
1415import org .springframework .boot .test .context .SpringBootTest ;
1516import org .springframework .boot .test .web .client .TestRestTemplate ;
1617import org .springframework .core .ParameterizedTypeReference ;
18+ import org .springframework .dao .DataRetrievalFailureException ;
1719import org .springframework .http .HttpMethod ;
1820import org .springframework .http .HttpStatus ;
1921import org .springframework .http .ResponseEntity ;
22+ import org .springframework .web .client .ResourceAccessException ;
2023
24+ import com .couchbase .client .core .error .DocumentNotFoundException ;
25+
26+ import lombok .extern .slf4j .Slf4j ;
27+
28+ @ Slf4j
2129@ SpringBootTest (webEnvironment = SpringBootTest .WebEnvironment .RANDOM_PORT )
2230class AirlineIntegrationTest {
2331
@@ -27,24 +35,41 @@ class AirlineIntegrationTest {
2735 @ Autowired
2836 private TestRestTemplate restTemplate ;
2937
38+ @ Autowired
39+ private AirlineService airlineService ;
40+
41+ private void deleteAirline (String airlineId , String cleanupTiming ) {
42+ try {
43+ if (airlineService .getAirlineById (airlineId ) != null ) {
44+ restTemplate .delete ("/api/v1/airline/" + airlineId );
45+ }
46+ } catch (DocumentNotFoundException | DataRetrievalFailureException | ResourceAccessException e ) {
47+ log .warn ("Document " + airlineId + " not present " + cleanupTiming );
48+ } catch (Exception e ) {
49+ log .error ("Error deleting test data" , e .getMessage ());
50+ }
51+ }
52+
53+ private void deleteTestAirlineData (String cleanupTiming ) {
54+ deleteAirline ("airline_create" , cleanupTiming );
55+ deleteAirline ("airline_update" , cleanupTiming );
56+ deleteAirline ("airline_delete" , cleanupTiming );
57+ }
58+
3059 @ BeforeEach
3160 void setUp () {
32- restTemplate .delete ("http://localhost:" + port + "/api/v1/airline/airline_create" );
33- restTemplate .delete ("http://localhost:" + port + "/api/v1/airline/airline_update" );
34- restTemplate .delete ("http://localhost:" + port + "/api/v1/airline/airline_delete" );
61+ deleteTestAirlineData ("prior to test" );
3562 }
3663
3764 @ AfterEach
3865 void tearDown () {
39- restTemplate .delete ("http://localhost:" + port + "/api/v1/airline/airline_create" );
40- restTemplate .delete ("http://localhost:" + port + "/api/v1/airline/airline_update" );
41- restTemplate .delete ("http://localhost:" + port + "/api/v1/airline/airline_delete" );
66+ deleteTestAirlineData ("after test" );
4267 }
4368
4469 @ Test
4570 void testGetAirline () {
4671 ResponseEntity <Airline > response = restTemplate
47- .getForEntity ("http://localhost:" + port + " /api/v1/airline/airline_10" , Airline .class );
72+ .getForEntity ("/api/v1/airline/airline_10" , Airline .class );
4873 assertThat (response .getStatusCode ()).isEqualTo (HttpStatus .OK );
4974 Airline airline = response .getBody ();
5075 assert airline != null ;
@@ -64,7 +89,7 @@ void testCreateAirline() {
6489 .country ("United States" )
6590 .build ();
6691 ResponseEntity <Airline > response = restTemplate .postForEntity (
67- "http://localhost:" + port + " /api/v1/airline/" + airline .getId (), airline ,
92+ "/api/v1/airline/" + airline .getId (), airline ,
6893 Airline .class );
6994 assertThat (response .getStatusCode ()).isEqualTo (HttpStatus .CREATED );
7095 Airline createdAirline = response .getBody ();
@@ -84,11 +109,11 @@ void testUpdateAirline() {
84109 .callsign ("TEST" )
85110 .country ("United States" )
86111 .build ();
87- restTemplate .postForEntity ("http://localhost:" + port + " /api/v1/airline/" + airline .getId (), airline ,
112+ restTemplate .postForEntity ("/api/v1/airline/" + airline .getId (), airline ,
88113 Airline .class );
89- restTemplate .put ("http://localhost:" + port + " /api/v1/airline/" + airline .getId (), airline );
114+ restTemplate .put ("/api/v1/airline/" + airline .getId (), airline );
90115 ResponseEntity <Airline > response = restTemplate
91- .getForEntity ("http://localhost:" + port + " /api/v1/airline/" + airline .getId (),
116+ .getForEntity ("/api/v1/airline/" + airline .getId (),
92117 Airline .class );
93118
94119 assertThat (response .getStatusCode ()).isEqualTo (HttpStatus .OK );
@@ -110,11 +135,11 @@ void testDeleteAirline() {
110135 .callsign ("TEST" )
111136 .country ("United States" )
112137 .build ();
113- restTemplate .postForEntity ("http://localhost:" + port + " /api/v1/airline/" + airline .getId (), airline ,
138+ restTemplate .postForEntity ("/api/v1/airline/" + airline .getId (), airline ,
114139 Airline .class );
115- restTemplate .delete ("http://localhost:" + port + " /api/v1/airline/" + airlineIdToDelete );
140+ restTemplate .delete ("/api/v1/airline/" + airlineIdToDelete );
116141 ResponseEntity <Airline > response = restTemplate
117- .getForEntity ("http://localhost:" + port + " /api/v1/airline/" + airlineIdToDelete ,
142+ .getForEntity ("/api/v1/airline/" + airlineIdToDelete ,
118143 Airline .class );
119144 assertThat (response .getStatusCode ()).isEqualTo (HttpStatus .NOT_FOUND );
120145 }
@@ -124,7 +149,7 @@ void testListAirlines() {
124149 int limit = 10 ;
125150 int offset = 0 ;
126151 ResponseEntity <List <Airline >> response = restTemplate .exchange (
127- "http://localhost:" + port + " /api/v1/airline/list?limit=" + limit + "&offset="
152+ "/api/v1/airline/list?limit=" + limit + "&offset="
128153 + offset ,
129154 HttpMethod .GET , null , new ParameterizedTypeReference <List <Airline >>() {
130155 });
@@ -151,7 +176,7 @@ void testListAirlinesByCountry() {
151176 int limit = 10 ;
152177 int offset = 0 ;
153178 ResponseEntity <List <Airline >> response = restTemplate .exchange (
154- "http://localhost:" + port + " /api/v1/airline/country/" + country + "?limit=" + limit
179+ "/api/v1/airline/country/" + country + "?limit=" + limit
155180 + "&offset=" + offset ,
156181 HttpMethod .GET , null , new ParameterizedTypeReference <List <Airline >>() {
157182 });
@@ -173,7 +198,7 @@ void testListAirlinesByCountry() {
173198
174199 country = "France" ;
175200 ResponseEntity <List <Airline >> response2 = restTemplate .exchange (
176- "http://localhost:" + port + " /api/v1/airline/country/" + country + "?limit=" + limit
201+ "/api/v1/airline/country/" + country + "?limit=" + limit
177202 + "&offset=" + offset ,
178203 HttpMethod .GET , null , new ParameterizedTypeReference <List <Airline >>() {
179204 });
@@ -225,7 +250,7 @@ void testListAirlinesByDestinationAirport() {
225250 List <Airline > expectedAirlines = entry .getValue ();
226251
227252 ResponseEntity <List <Airline >> response = restTemplate .exchange (
228- "http://localhost:" + port + " /api/v1/airline/destination/" + destinationAirport
253+ "/api/v1/airline/destination/" + destinationAirport
229254 + "?limit=" + limit + "&offset=" + offset ,
230255 HttpMethod .GET , null , new ParameterizedTypeReference <List <Airline >>() {
231256 });
0 commit comments