public void Should_ideally_left_70_percent_of_every_coach_available() { // setup mocks var firstBookingId = "75bcd15"; var secondBookingId = "9904fgG6"; var bookingReferenceProvider = ConfigureABookingReferenceProviderMock(new[] { firstBookingId, secondBookingId }); var trainId = "express_2000"; var trainDataProvider = new TrainDataServiceMock(TrainProviderHelper.GetTrainWith2CoachesAnd2IndividualSeatsAvailable(trainId)); // act // First reservation var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider); var firstReservation = ticketOffice.MakeReservation(new ReservationRequest(trainId, 1)); // Must be located in the remaining seat of 1st coach Check.That(firstReservation.TrainId).IsEqualTo(trainId); Check.That(firstReservation.BookingReference.Value).IsEqualTo(firstBookingId); Check.That(firstReservation.Seats).ContainsExactly(new Seat("A", 7)); // Second reservation var secondReservation = ticketOffice.MakeReservation(new ReservationRequest(trainId, 1)); // Must be located in the remaining seat of 1st coach Check.That(secondReservation.TrainId).IsEqualTo(trainId); Check.That(secondReservation.BookingReference.Value).IsEqualTo(secondBookingId); Check.That(secondReservation.Seats).ContainsExactly(new Seat("B", 7)); }
/// <summary> /// Acts like a composition root for the Hexagonal Architecture. /// </summary> public static IReserveTrainSeats ComposeTheHexagon(IProvideBookingReferences bookingReferenceProvider, IProvideTrainData trainDataProvider) { var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider); var reservationAdapter = new CliReservationAdapter(ticketOffice); return(reservationAdapter); }
public void Should_fail_to_reserve_when_asking_more_seats_than_the_70_percent_limit() { // setup mocks var expectedBookingId = "75bcd15"; var bookingReferenceProvider = ConfigureABookingReferenceProviderMock(expectedBookingId); var trainId = "express_2000"; var trainDataProvider = ConfigureATrainDataProviderMock(trainId, TrainProviderHelper.GetTrainWith1CoachAnd10SeatsAvailable(trainId)); // act var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider); var reservation = ticketOffice.MakeReservation(new ReservationRequest(trainId, 9)); Check.That(reservation.TrainId).IsEqualTo(trainId); Check.That(reservation.BookingReference.Value).IsEmpty(); Check.That(reservation.Seats).IsEmpty(); }
public void Should_reserve_seats_when_unreserved_seats_are_available() { // setup mocks var expectedBookingId = "75bcd15"; var bookingReferenceProvider = ConfigureABookingReferenceProviderMock(expectedBookingId); var trainId = "express_2000"; var trainDataProvider = ConfigureATrainDataProviderMock(trainId, TrainProviderHelper.GetTrainWith1CoachAnd10SeatsAvailable(trainId)); // act var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider); var reservation = ticketOffice.MakeReservation(new ReservationRequest(trainId, 3)); Check.That(reservation.TrainId).IsEqualTo(trainId); Check.That(reservation.BookingReference.Value).IsEqualTo(expectedBookingId); Check.That(reservation.Seats).ContainsExactly(new Seat("A", 1), new Seat("A", 2), new Seat("A", 3)); }
public void Should_mark_seats_as_reserved_once_reserved() { // setup mocks var expectedBookingId = "75bcd15"; var bookingReferenceProvider = ConfigureABookingReferenceProviderMock(expectedBookingId); var trainId = "express_2000"; var trainDataProvider = ConfigureATrainDataProviderMock(trainId, TrainProviderHelper.GetTrainWith1CoachAnd10SeatsAvailable(trainId)); // act var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider); var reservation = ticketOffice.MakeReservation(new ReservationRequest(trainId, 1)); Check.That(reservation.TrainId).IsEqualTo(trainId); Check.That(reservation.BookingReference.Value).IsEqualTo(expectedBookingId); Check.That(reservation.Seats).ContainsExactly(new Seat("A", 1)); // Check that the train data mock has been called to persist this reservation trainDataProvider.Received().MarkSeatsAsReserved(trainId, reservation.BookingReference, reservation.Seats); }
public void Should_reserve_seats_in_the_same_coach() { // setup mocks var firstBookingId = "75bcd15"; var secondBookingId = "9904fgG6"; var bookingReferenceProvider = ConfigureABookingReferenceProviderMock(new[] { firstBookingId, secondBookingId }); var trainId = "express_2000"; var trainDataProvider = new TrainDataServiceMock(TrainProviderHelper.GetTrainWith2CoachesOf10And1Then2SeatsAvailable(trainId)); // act var ticketOffice = new TicketOffice(bookingReferenceProvider, trainDataProvider); var firstReservation = ticketOffice.MakeReservation(new ReservationRequest(trainId, 2)); // Must be located in the remaining seats of the 2nd coach Check.That(firstReservation.TrainId).IsEqualTo(trainId); Check.That(firstReservation.BookingReference.Value).IsEqualTo(firstBookingId); Check.That(firstReservation.Seats).ContainsExactly(new Seat("B", 6), new Seat("B", 7)); }
public void Setup() { var trainData = new Mock <ISeat>(); trainData.Setup(e => e.GetCoach("express_2000", "A")).Returns(Coach.Of(new List <Seat>() { Seat.Of("A", 1, "75bcd14"), Seat.Of("A", 2, "75bcd14"), Seat.Of("A", 3, "75bcd14"), Seat.Of("A", 4, "75bcd14"), Seat.Of("A", 5, ""), Seat.Of("A", 6, ""), Seat.Of("A", 7, ""), Seat.Of("A", 8, "") })); trainData.Setup(e => e.GetCoach("local_1000", "A")).Returns(Coach.Of(new List <Seat>() { Seat.Of("A", 1, ""), Seat.Of("A", 2, ""), Seat.Of("A", 3, ""), Seat.Of("A", 4, "") })); trainData.Setup(e => e.GetCoach("test_3000", "A")).Returns(Coach.Of(new List <Seat>() { Seat.Of("A", 1, "75bcd14"), Seat.Of("A", 2, "75bcd14"), Seat.Of("A", 3, "75bcd14"), Seat.Of("A", 4, "75bcd14") })); var reservationRegister = new Mock <IReservationRegister>(); reservationRegister.Setup(e => e.Reserve(It.IsAny <Reservation>())).Returns(Result.WasSucces(null)); var bookingReference = new Mock <IBookingReference>(); bookingReference.Setup(e => e.GetBookingReference()).Returns("75bcd15"); _ticketOffice = new TicketOffice(trainData.Object, reservationRegister.Object, bookingReference.Object); }
public void TestMethod1() { // Arrange Ticket[] tickets = new Ticket[50]; for (int i = 0; i < 50; i++) { tickets[i] = new Ticket(); } int officeProperty = 1000000; TicketOffice ticketOffice = new TicketOffice(1000000, tickets); TicketSeller ticketSeller = new TicketSeller(ticketOffice); Theater1 theater = new Theater1(ticketSeller); int audienceCash = 20000; Bag bag = new Bag(audienceCash); Audience jisoo = new Audience(bag); // Act theater.Enter(jisoo); // Assert Assert.AreEqual(officeProperty + audienceCash, ticketOffice.Amount + jisoo.Amount); }
public TicketSeller(TicketOffice ticketOffice) => this.ticketOffice = ticketOffice;
public CliReservationAdapter(TicketOffice ticketOffice) { this.ticketOffice = ticketOffice; }
public void Setup() { var trainData = new Mock <ISeat>(); trainData.Setup(e => e.GetTrain("empty_train")).Returns(Train.Of(new List <Seat>() { Seat.Of("A", 1, ""), Seat.Of("A", 2, ""), Seat.Of("A", 3, ""), Seat.Of("A", 4, ""), Seat.Of("B", 1, ""), Seat.Of("B", 2, ""), Seat.Of("B", 3, ""), Seat.Of("B", 4, ""), Seat.Of("C", 1, ""), Seat.Of("C", 2, ""), Seat.Of("C", 3, ""), Seat.Of("C", 4, ""), })); trainData.Setup(e => e.GetTrain("1coachReserved_train")).Returns(Train.Of(new List <Seat>() { Seat.Of("A", 1, "75bcd14"), Seat.Of("A", 2, "75bcd14"), Seat.Of("A", 3, "75bcd14"), Seat.Of("A", 4, ""), Seat.Of("B", 1, ""), Seat.Of("B", 2, ""), Seat.Of("B", 3, ""), Seat.Of("B", 4, ""), Seat.Of("C", 1, ""), Seat.Of("C", 2, ""), Seat.Of("C", 3, ""), Seat.Of("C", 4, ""), })); trainData.Setup(e => e.GetTrain("FullyReserved_train")).Returns(Train.Of(new List <Seat>() { Seat.Of("A", 1, "75bcd14"), Seat.Of("A", 2, "75bcd14"), Seat.Of("A", 3, "75bcd14"), Seat.Of("A", 4, "75bcd14"), Seat.Of("B", 1, "75bcd14"), Seat.Of("B", 2, "75bcd14"), Seat.Of("B", 3, "75bcd14"), Seat.Of("B", 4, "75bcd14"), Seat.Of("C", 1, "75bcd14"), Seat.Of("C", 2, ""), Seat.Of("C", 3, ""), Seat.Of("C", 4, ""), })); var reservationRegister = new Mock <IReservationRegister>(); reservationRegister.Setup(e => e.Reserve(It.IsAny <Reservation>())).Returns(Result.WasSucces(null)); var bookingReference = new Mock <IBookingReference>(); bookingReference.Setup(e => e.GetBookingReference()).Returns("75bcd15"); _ticketOffice = new TicketOffice(trainData.Object, reservationRegister.Object, bookingReference.Object); }
public PromotionSales(TicketOffice ticket) { _ticket = ticket; }
static void Main(string[] args) { Console.WriteLine("Start creation of the database"); using (var context = new CircusContext()) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); var troupe1 = new Troupe() { NameTroupe = "The Croustillants", MembersName = new List <MemberTroupe>() { new MemberTroupe { Name = "Pablo", Age = 28, Job = "Acrobate" }, new MemberTroupe { Name = "Ortencia", Age = 62, Job = "Acrobate" }, new MemberTroupe { Name = "Picasso", Age = 58, Job = "Acrobate" }, new MemberTroupe { Name = "Lolita", Age = 24, Job = "Acrobate" }, }, }; var troupe2 = new Troupe() { NameTroupe = "The Clowns", MembersName = new List <MemberTroupe>() { new MemberTroupe { Name = "Albert", Age = 28, Job = "Clown" }, new MemberTroupe { Name = "Filibert", Age = 62, Job = "Clown" }, new MemberTroupe { Name = "Gertrude", Age = 58, Job = "Clown" }, new MemberTroupe { Name = "Gaston", Age = 24, Job = "Clown" }, }, }; var show1 = new Show() { ShowName = "Vol-au-Vent", MemberTroupes = troupe1.MembersName, TroupeName = troupe1.NameTroupe, ShowType = "Acrobatics", Description = "Personnes qui volent" }; List <Show> show1List = new List <Show>(); show1List.Add(show1); troupe1.ShowsList = show1List; troupe1.ShowType = show1.ShowType; var show2 = new Show() { ShowName = "Qu'est-ce-qu'on se marre", MemberTroupes = troupe2.MembersName, TroupeName = troupe2.NameTroupe, ShowType = "Clown show", Description = "Clowns qui font rire" }; List <Show> show2List = new List <Show>(); show2List.Add(show2); troupe2.ShowsList = show2List; troupe2.ShowType = show2.ShowType; var calendar1 = new Calendar() { ShowDay = "Lundi, Jeudi, Samedi", Name = troupe1.NameTroupe, Hour = "14H-15h30" }; var calendar2 = new Calendar() { ShowDay = "Lundi, Jeudi, Samedi", Name = troupe2.NameTroupe, Hour = "16H-18h" }; troupe1.CalendarShow = calendar1; troupe2.CalendarShow = calendar2; var user1 = new User() { Name = "Gruss", Password = "******", StaffMember = false }; var user2 = new User() { Name = "Arlette", Password = "******", StaffMember = false }; var staffUser = new User() { Name = "Staff", Password = "******", StaffMember = true }; var tickets1 = new TicketOffice() { NameTroupe = troupe1.NameTroupe, ShowName = show1.ShowName, AvailableTickets = 200, SoldTickets = 10 }; var tickets2 = new TicketOffice() { NameTroupe = troupe2.NameTroupe, ShowName = show2.ShowName, AvailableTickets = 150, SoldTickets = 20 }; context.Add(troupe1); context.Add(troupe2); context.Add(calendar1); context.Add(calendar2); context.Add(show1); context.Add(show2); context.Add(user1); context.Add(user2); context.Add(staffUser); context.Add(tickets1); context.Add(tickets2); context.SaveChanges(); Console.WriteLine("End of the database creation"); GetHost(); } }