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\"]}}");
        }
Example #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            var bookingReferenceAdapter = new BookingReferenceAdapter(UriBookingReferenceService);
            var trainDataAdapter        = new TrainDataAdapter(UriTrainDataService);
            var hexagon = new TicketOfficeService(trainDataAdapter, bookingReferenceAdapter);
            var seatReservationAdapter = new SeatReservationAdapter(hexagon);

            services.AddSingleton(seatReservationAdapter);

            services.AddMvc();
        }
Example #3
0
 public ReservationsController(SeatReservationAdapter seatReservationAdapter)
 {
     _seatReservationAdapter = seatReservationAdapter;
 }