public async Task Reserve_seats_on_2_coaches_When_resereved_seats_exeed_coach_capacity() { var seatRequested = new SeatsRequested(2); var trainId = new TrainId("express_2000"); var bookingReferenceNumber = "10"; var bookingReferenceAdapter = Substitute.For <IBookingReference>(); bookingReferenceAdapter.GetBookingReference().Returns(Task.FromResult(bookingReferenceNumber)); var trainDataServiceAdapter = Substitute.For <ITrainDataService>(); trainDataServiceAdapter.GetTrain(trainId).Returns(Task.FromResult(new Train(trainId, TrainDataAdapter.AdaptTrainTopology("{\"seats\": {" + TrainHelper.BuildCoachJson("A", 10, numberOfReservedSeat: 6) + "," + TrainHelper.BuildCoachJson("B", 10, numberOfReservedSeat: 6) + "}}")))); var manager = new TicketOfficeService(trainDataServiceAdapter, bookingReferenceAdapter); IProvideReservation hexagon = new TicketOfficeService(trainDataServiceAdapter, bookingReferenceAdapter); var seatReservationAdapter = new SeatReservationAdapter(hexagon); var reservationRequestDto = new ReservationRequestDto { train_id = trainId.ToString(), number_of_seats = seatRequested.Value }; var jsonResult = await seatReservationAdapter.PostSeatsRequest(reservationRequestDto); Check.That(jsonResult).IsEqualTo($"{{\"train_id\": \"{trainId}\", \"booking_reference\": \"10\", \"seats\": [\"7A\", \"7B\"]}}"); }
public async Task<string> Post([FromBody]ReservationRequestDto reservationRequest, [FromServices] ITrainDataService trainDataService, IBookingReference bookingReference) { return await _seatReservationAdapter.PostSeatsRequest(reservationRequest); }