public void Test_MakeReservation_Return_Empty_When_Booking_Is_Larger_Than_Any_Of_The_Coaches_Capacity()
        {
            var trainProvider = new TrainProviderBuilder()
                .WithCoach(new CoachBuilder().WithBooked(0).WithCapacity(10).Build())
                .WithCoach(new CoachBuilder().WithBooked(0).WithCapacity(10).Build())
                .Build();

            var ticketOffice = new TicketOffice(trainProvider);
            var result = ticketOffice.MakeReservation(new ReservationRequestBuilder().WithTrainId("express_2000").WithSeatCount(11).Build());
            IsEmpty(result);
        }
        public void Test_MakeReservation_Return_Empty_When_Train_Will_Be_Over_Capacity()
        {
            var trainProvider = new TrainProviderBuilder()
                .WithCoach(new CoachBuilder().WithCapacity(100).WithBooked(65).Build()).Build();
            var ticketOffice = new TicketOffice(trainProvider);
            var result = ticketOffice.MakeReservation(new ReservationRequestBuilder().WithTrainId("express_2000").WithSeatCount(7).Build());

            IsEmpty(result);
        }
        public void Test_MakeReservation_Returns_Valid_Reservation_When_Train_Has_Capacity()
        {
            var trainProvider = new TrainProviderBuilder()
                .WithCoach(new CoachBuilder().WithCapacity(100).WithBooked(50).Build()).Build();

            var ticketOffice = new TicketOffice(trainProvider);
            var request = new ReservationRequest("express_2000", 1);

            var result = ticketOffice.MakeReservation(request);
            result.BookingId.Should().NotBeNullOrEmpty();
            result.TrainId.Should().Be("express_2000");
            result.Seats.Should().HaveCount(1);
        }