Skip to content

Commit 6446889

Browse files
committed
add tests
1 parent 0287bb9 commit 6446889

File tree

8 files changed

+282
-2
lines changed

8 files changed

+282
-2
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,9 @@ HotelOfferSearch offer = amadeus.shopping.hotelOfferSearch("QF3MNOBDQ8").get();
420420
// The body can be a String version of your JSON or a JsonObject
421421
HotelBooking[] hotel = amadeus.booking.hotelBookings.post(body);
422422

423+
// Hotel Booking v2
424+
HotelOrder hotel = amadeus.booking.hotelOrders.post(body);
425+
423426
// Hotel Ratings / Sentiments
424427
HotelSentiment[] hotelSentiments = amadeus.ereputation.hotelSentiments.get(Params.with("hotelIds", "ELONMFS,ADNYCCTB"));
425428

src/main/java/com/amadeus/Booking.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class Booking {
3535
/**
3636
* <p>
3737
* A namespaced client for the
38-
* <code>/v1/booking/hotelOrders</code> endpoints.
38+
* <code>/v2/booking/hotelOrders</code> endpoints.
3939
* </p>
4040
*/
4141
public HotelOrders hotelOrders;

src/main/java/com/amadeus/resources/FlightOrder.java

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public static class Traveler {
4848

4949
@AllArgsConstructor
5050
@NoArgsConstructor
51+
5152
@ToString
5253
public static class Name {
5354

src/main/java/com/amadeus/resources/HotelOrder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class HotelOrder extends Resource {
1515
private @Getter String id;
1616
private @Getter HotelBooking[] hotelBookings;
1717
private @Getter AssociatedRecord[] associatedRecords;
18-
private @Getter Guest[] guests;
18+
private @Getter Guest[] guests;
1919

2020
protected HotelOrder() {}
2121

src/test/java/com/amadeus/NamespaceTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.amadeus.booking.FlightOrder;
1111
import com.amadeus.booking.FlightOrders;
1212
import com.amadeus.booking.HotelBookings;
13+
import com.amadeus.booking.HotelOrders;
1314
import com.amadeus.ereputation.HotelSentiments;
1415
import com.amadeus.exceptions.ResponseException;
1516
import com.amadeus.location.analytics.CategoryRatedAreas;
@@ -27,6 +28,7 @@
2728
import com.amadeus.referencedata.locations.hotels.ByGeocode;
2829
import com.amadeus.referencedata.locations.hotels.ByHotels;
2930
import com.amadeus.referencedata.urls.CheckinLinks;
31+
import com.amadeus.resources.HotelOrder;
3032
import com.amadeus.resources.TransferCancellation;
3133
import com.amadeus.schedule.Flights;
3234
import com.amadeus.shopping.Activities;
@@ -95,6 +97,7 @@ public class NamespaceTest {
9597
assertNotNull(client.airport.predictions.onTime);
9698
assertNotNull(client.booking.flightOrder("XXX"));
9799
assertNotNull(client.booking.hotelBookings);
100+
assertNotNull(client.booking.hotelOrders);
98101
assertNotNull(client.schedule.flights);
99102
assertNotNull(client.travel.tripParser);
100103
assertNotNull(client.airport.directDestinations);
@@ -674,6 +677,20 @@ public void testHotelBookings() throws ResponseException {
674677
assertNotNull(hotel.post(body));
675678
}
676679

680+
@Test
681+
public void testHotelOrders() throws ResponseException {
682+
// Test Trip Parser
683+
Mockito.when(client.post("/v2/booking/hotel-orders", (String) null))
684+
.thenReturn(singleResponse);
685+
Mockito.when(client.post("/v2/booking/hotel-orders", body))
686+
.thenReturn(singleResponse);
687+
Mockito.when(client.post("/v2/booking/hotel-orders", jsonObject))
688+
.thenReturn(singleResponse);
689+
HotelOrders hotelOrder = new HotelOrders(client);
690+
assertNotNull(hotelOrder.post());
691+
assertNotNull(hotelOrder.post(body));
692+
}
693+
677694
@Test
678695
public void testTripParser() throws ResponseException {
679696
// Test Trip Parser
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.amadeus.booking;
2+
3+
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
4+
import static com.github.tomakehurst.wiremock.client.WireMock.post;
5+
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
6+
import static org.junit.jupiter.api.Assertions.assertNotNull;
7+
8+
import com.amadeus.Amadeus;
9+
import com.amadeus.exceptions.ResponseException;
10+
import com.amadeus.resources.HotelOrder;
11+
import com.github.tomakehurst.wiremock.WireMockServer;
12+
import com.google.gson.JsonObject;
13+
import com.google.gson.JsonParser;
14+
import java.io.File;
15+
import java.io.IOException;
16+
import java.nio.file.Files;
17+
import org.junit.jupiter.api.AfterEach;
18+
import org.junit.jupiter.api.BeforeEach;
19+
import org.junit.jupiter.api.Test;
20+
21+
// https://developers.amadeus.com/self-service/category/hotels/api-doc/hotel-booking
22+
public class HotelOrdersIT {
23+
24+
WireMockServer wireMockServer;
25+
26+
private Amadeus amadeus;
27+
28+
/**
29+
* In every tests, we will authenticate.
30+
*/
31+
@BeforeEach
32+
public void setup() {
33+
wireMockServer = new WireMockServer(8080);
34+
wireMockServer.start();
35+
36+
// API at https://developers.amadeus.com/self-service/apis-docs/guides/authorization-262
37+
String address = "/v1/security/oauth2/token"
38+
+ "?grant_type=client_credentials&client_secret=DEMO&client_id=DEMO";
39+
wireMockServer.stubFor(post(urlEqualTo(address))
40+
.willReturn(aResponse().withHeader("Content-Type", "application/json")
41+
.withStatus(200)
42+
.withBodyFile("auth_ok.json")));
43+
44+
amadeus = Amadeus
45+
.builder("DEMO", "DEMO")
46+
.setHost("localhost")
47+
.setPort(8080)
48+
.setSsl(false)
49+
.setLogLevel("debug")
50+
.build();
51+
}
52+
53+
@AfterEach
54+
public void teardown() {
55+
wireMockServer.stop();
56+
}
57+
58+
@Test
59+
public void given_client_when_call_hotel_orders_with_params_then_ok()
60+
throws ResponseException, IOException {
61+
62+
// Given
63+
String address = "/v2/booking/hotel-orders";
64+
65+
wireMockServer.stubFor(post(urlEqualTo(address))
66+
.willReturn(aResponse().withHeader("Content-Type", "application/json")
67+
.withStatus(200)
68+
.withBodyFile("hotel_orders_response_ok.json")));
69+
70+
71+
JsonObject request = getRequestFromResources("hotel_orders_request_ok.json");
72+
73+
// When
74+
HotelOrder result = amadeus.booking.hotelOrders.post(request);
75+
76+
// Then
77+
assertNotNull(result);
78+
}
79+
80+
private JsonObject getRequestFromResources(String jsonFile) throws IOException {
81+
82+
final String folder = "__files/";
83+
84+
ClassLoader classLoader = getClass().getClassLoader();
85+
File file = new File(classLoader.getResource(folder + jsonFile).getFile());
86+
String jsonString = new String(Files.readAllBytes(file.toPath()));
87+
88+
return new JsonParser().parse(jsonString).getAsJsonObject();
89+
}
90+
91+
private File getFileRequestFromResources(String jsonFile) throws IOException {
92+
93+
final String folder = "__files/";
94+
95+
ClassLoader classLoader = getClass().getClassLoader();
96+
return new File(classLoader.getResource(folder + jsonFile).getFile());
97+
}
98+
99+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"data": {
3+
"type": "hotel-order",
4+
"guests": [
5+
{
6+
"tid": 1,
7+
"title": "MR",
8+
"firstName": "BOB",
9+
"lastName": "SMITH",
10+
"phone": "+33679278416",
11+
"email": "[email protected]"
12+
}
13+
],
14+
"travelAgent": {
15+
"contact": {
16+
"email": "[email protected]"
17+
}
18+
},
19+
"roomAssociations": [
20+
{
21+
"guestReferences": [
22+
{
23+
"guestReference": "1"
24+
}
25+
],
26+
"hotelOfferId": "4L8PRJPEN7"
27+
}
28+
],
29+
"payment": {
30+
"method": "CREDIT_CARD",
31+
"paymentCard": {
32+
"paymentCardInfo": {
33+
"vendorCode": "VI",
34+
"cardNumber": "4151289722471370",
35+
"expiryDate": "2026-08",
36+
"holderName": "BOB SMITH"
37+
}
38+
}
39+
}
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
{
2+
"data": {
3+
"type": "hotel-order",
4+
"id": "V0g2VFJaLzIwMjQtMDYtMDc=",
5+
"hotelBookings": [
6+
{
7+
"type": "hotel-booking",
8+
"id": "MS84OTkyMjcxMC85MDIyNDU0OQ==",
9+
"bookingStatus": "CONFIRMED",
10+
"hotelProviderInformation": [
11+
{
12+
"hotelProviderCode": "AR",
13+
"confirmationNumber": "89922710"
14+
}
15+
],
16+
"roomAssociations": [
17+
{
18+
"hotelOfferId": "******",
19+
"guestReferences": [
20+
{
21+
"guestReference": "1"
22+
}
23+
]
24+
}
25+
],
26+
"hotelOffer": {
27+
"id": "******",
28+
"type": "hotel-offer",
29+
"category": "TYPE_CONDITIONAL",
30+
"checkInDate": "2024-06-07",
31+
"checkOutDate": "2024-06-08",
32+
"guests": {
33+
"adults": 1
34+
},
35+
"policies": {
36+
"cancellations": [
37+
{
38+
"amount": "215.05",
39+
"deadline": "2024-06-06T23:59:00+02:00"
40+
}
41+
],
42+
"paymentType": "GUARANTEE"
43+
},
44+
"price": {
45+
"base": "195.50",
46+
"currency": "EUR",
47+
"sellingTotal": "215.05",
48+
"taxes": [
49+
{
50+
"amount": "19.55",
51+
"code": "VALUE_ADDED_TAX",
52+
"currency": "EUR",
53+
"included": false,
54+
"pricingFrequency": "PER_STAY",
55+
"pricingMode": "PER_PRODUCT"
56+
}
57+
],
58+
"total": "215.05",
59+
"variations": {
60+
"changes": [
61+
{
62+
"endDate": "2024-06-08",
63+
"startDate": "2024-06-07",
64+
"base": "195.50",
65+
"currency": "EUR"
66+
}
67+
]
68+
}
69+
},
70+
"rateCode": "S9R",
71+
"room": {
72+
"description": {
73+
"lang": "EN",
74+
"text": "Marriott Senior Discount, includes"
75+
},
76+
"type": "XMI"
77+
},
78+
"roomQuantity": 1
79+
},
80+
"hotel": {
81+
"hotelId": "ARMADAIT",
82+
"chainCode": "AR",
83+
"name": "AC BY MARRIOTT HOTEL AITANA",
84+
"self": "https://test.travel.api.amadeus.com/v1/reference-data/locations/by-hotel/ARMADAIT"
85+
},
86+
"payment": {
87+
"method": "CREDIT_CARD",
88+
"paymentCard": {
89+
"paymentCardInfo": {
90+
"vendorCode": "VI",
91+
"cardNumber": "415128XXXXXX1370",
92+
"expiryDate": "0826",
93+
"holderName": "BOB SMITH"
94+
}
95+
}
96+
},
97+
"travelAgentId": "00000000"
98+
}
99+
],
100+
"guests": [
101+
{
102+
"tid": 1,
103+
"id": 1,
104+
"title": "MR",
105+
"firstName": "BOB",
106+
"lastName": "SMITH",
107+
"phone": "+33679278416",
108+
"email": "[email protected]"
109+
}
110+
],
111+
"associatedRecords": [
112+
{
113+
"reference": "WH6TRZ",
114+
"originSystemCode": "GDS"
115+
}
116+
],
117+
"self": "http://test.api.amadeus.com/v2/booking/hotel-orders/V0g2VFJaLzIwMjQtMDYtMDc="
118+
}
119+
}

0 commit comments

Comments
 (0)