-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBookingDataDrivenTest.java
More file actions
63 lines (53 loc) · 2.6 KB
/
BookingDataDrivenTest.java
File metadata and controls
63 lines (53 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.learning.api.tests.restfulbooker;
import com.learning.api.framework.data.BookingTestData;
import com.learning.api.framework.model.AuthCredentials;
import com.learning.api.framework.model.Booking;
import com.learning.api.framework.model.CreateBookingResponse;
import com.learning.api.framework.payload.BookingPayloadBuilder;
import com.learning.api.tests.base.BaseApiTest;
import com.learning.api.tests.dataproviders.BookingDataProviders;
import io.restassured.response.Response;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.equalTo;
/**
* Study with:
* docs/module-14-data-driven-json-csv-excel/04-data-driven-framework-test.md
*
* <p>This test runs the same create/read API scenario once for each data source:
* JSON, CSV, and Excel. The test logic stays the same; only the data row
* changes.</p>
*/
public class BookingDataDrivenTest extends BaseApiTest {
@Test(dataProvider = "oneBookingFromEachSource", dataProviderClass = BookingDataProviders.class)
public void canCreateBookingFromExternalData(String source, BookingTestData testData) {
int bookingId = 0;
try {
Booking expectedBooking = BookingPayloadBuilder.fromTestData(testData);
Response createResponse = bookingService.createBooking(expectedBooking)
.then()
.statusCode(200)
.body("booking.firstname", equalTo(testData.getFirstname()))
.body("booking.lastname", equalTo(testData.getLastname()))
.extract()
.response();
CreateBookingResponse createdBooking = bookingService.mapCreateBookingResponse(createResponse);
bookingId = createdBooking.getBookingId();
assertThat(bookingId)
.as("booking id for " + source + " data row")
.isPositive();
Booking actualBooking = bookingService.mapBookingResponse(
bookingService.readBooking(bookingId)
.then()
.statusCode(200)
.extract()
.response()
);
assertThat(actualBooking.getFirstname()).isEqualTo(testData.getFirstname());
assertThat(actualBooking.getAdditionalneeds()).isEqualTo(testData.getAdditionalneeds());
} finally {
String token = bookingService.createTokenValue(AuthCredentials.restfulBookerAdmin());
bookingService.deleteBookingBestEffort(bookingId, token);
}
}
}