I’m trying to send nested JSON through Cucumber data table. I have the following scenario, I have tried Scenario Outline too but it didn’t resolve the issue.
Scenario: provider edits new productWorkingDate
Given productWorkingDates is edited with following fields
| id | productId | fromDate | toDate | name | strictHours | maxUsedTicketsQuantity | errorCode |
| bpvjPBpJ | WaNX2QOd | 2022-07-01 | 2022-12-01 | Test55 | false | 0 | 0 |
And TimeSlots is edited with following fields
| dayOfWeek | startTime | endTime | duration | quantity | usedQuantity | active |
| Sunday | 14:00:00 | 15:00:00 | 02:00:00 | 0 | 0 | true |
| Monday | 14:00:00 | 15:00:00 | 02:00:00 | 0 | 0 | true |
Then verify status code is 200
and I have the following step definition
@And(“^TimeSlots is edited with following fields$”)
public void timeslotsIsCreatedWithFollowingFields(List<Map<String, String>> expectedTimeSlots) {
TimeSlots timeSlots = new TimeSlots();
for(int i = 0; i < expectedTimeSlots.size(); i ++) {
timeSlots.setDayOfWeek(expectedTimeSlots.get(i).get(“dayOfWeek”));
timeSlots.setStartTime(expectedTimeSlots.get(i).get(“startTime”));
timeSlots.setEndTime((expectedTimeSlots.get(i).get(“endTime”)));
timeSlots.setDuration(expectedTimeSlots.get(i).get(“duration”));
timeSlots.setQuantity(Integer.parseInt(expectedTimeSlots.get(i).get(“quantity”)));
timeSlots.setUsedQuantity(Integer.parseInt(expectedTimeSlots.get(i).get(“usedQuantity”)));
timeSlots.setActive(Boolean.parseBoolean(expectedTimeSlots.get(i).get(“active”)));
}
Actual output is :
{
“productWorkingDate”: {
“id”: “bpvjPBpJ”,
“productId”: “WaNX2QOd”,
“fromDate”: “2022-07-01”,
“toDate”: “2022-12-01”,
“name”: “Test55”,
“strictHours”: false,
“timeSlots”: [
{
“id”: “Wlqb8XOb”,
“productWorkingDateId”: “bpvjPBpJ”,
“dayOfWeek”: “Monday”,
“startTime”: “14:00:00”,
“endTime”: “15:00:00”,
“duration”: “02:00:00”,
“quantity”: 0,
“usedQuantity”: 0,
“active”: true,
“deletedAt”: null
}
],
“deletedAt”: null,
“maxUsedTicketsQuantity”: 0,
“errorCode”: 0
},
“maxUsedTicketsQuantity”: 0,
“error”: null,
“errorCode”: 0
}
Expected output is :
{
“productWorkingDate”: {
“id”: “bpvjPBpJ”,
“productId”: “WaNX2QOd”,
“fromDate”: “2022-07-01”,
“toDate”: “2022-12-01”,
“name”: “Test55”,
“strictHours”: false,
“timeSlots”: [
{
“id”: “4lrn8old”,
“productWorkingDateId”: “bpvjPBpJ”,
“dayOfWeek”: “Sunday”,
“startTime”: “14:00:00”,
“endTime”: “15:00:00”,
“duration”: “02:00:00”,
“quantity”: 0,
“usedQuantity”: 0,
“active”: true,
“deletedAt”: null
},
{
“id”: “dOnz85OV”,
“productWorkingDateId”: “bpvjPBpJ”,
“dayOfWeek”: “Monday”,
“startTime”: “14:00:00”,
“endTime”: “15:00:00”,
“duration”: “02:00:00”,
“quantity”: 0,
“usedQuantity”: 0,
“active”: true,
“deletedAt”: null
}
],
“deletedAt”: null,
“maxUsedTicketsQuantity”: 0,
“errorCode”: 0
},
“maxUsedTicketsQuantity”: 0,
“error”: null,
“errorCode”: 0
}