public void AddSeats_ForExistingSeatType_IncreaseSeatsAvailability() { // Arrange var quantity = 10; var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.AddSeats(_seatTypeId, quantity); // Assert Assert.Equal(_seatTypeId, ((AvailableSeatsChanged)sut.Events.LastOrDefault()).Seats.ElementAt(0).SeatType); Assert.Equal(quantity, ((AvailableSeatsChanged)sut.Events.LastOrDefault()).Seats.ElementAt(0).Quantity); }
public void AddSeats_ForNonExistingSeatType_ChangesSeatsAvailability() { // Arrange var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); // Assert Assert.Equal(_seatTypeId, ((AvailableSeatsChanged)sut.Events.Single()).Seats.ElementAt(0).SeatType); Assert.Equal(AvailableSeats, ((AvailableSeatsChanged)sut.Events.Single()).Seats.ElementAt(0).Quantity); }
public void CancelReservation_ForNonExistingReservation_DoNothing() { // Arrange var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, 4) }); sut.CancelReservation(Guid.NewGuid()); // Assert Assert.DoesNotContain(sut.Events, e => (e is SeatsReservationCancelled)); }
public void CommittingNonExistingReservation_DoNothing() { // Arrange var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, 3) }); sut.CommitReservation(Guid.NewGuid()); // Assert Assert.DoesNotContain(sut.Events, e => e.GetType() == typeof(SeatsReservationCommitted)); }
public void CanCommitReservation() { // Arrange var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, 3) }); sut.CommitReservation(_reservationId); // Assert Assert.Equal(_reservationId, ((SeatsReservationCommitted)sut.Events.LastOrDefault()).ReservationId); }
public void RemoveSeats_ForNonExistingSeatType_DoNothing() { // Arrange var unknownSeatType = Guid.NewGuid(); var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.RemoveSeats(unknownSeatType, 5); // Assert Assert.DoesNotContain(sut.Events, @event => (@event is AvailableSeatsChanged e && e.Seats.ElementAt(0).SeatType == unknownSeatType)); }
public void RequestingMoreSeatsThanTotal_ReducesAllAvailableSeats() { // Arrange var wantedSeats = 12; var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, wantedSeats) }); // Assert Assert.Equal(_seatTypeId, ((SeatsReserved)sut.Events.LastOrDefault()).AvailableSeatsChanged.ElementAt(0).SeatType); Assert.Equal((-1) * AvailableSeats, ((SeatsReserved)sut.Events.LastOrDefault()).AvailableSeatsChanged.ElementAt(0).Quantity); }
public void UpdateReservationWithMoreSeatsThanRemaining_DecreasesAllAvailableSeats() { // Arrange var seatsChanged = -6; var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, 4) }); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, 12) }); // Assert Assert.Equal(_reservationId, ((SeatsReserved)sut.Events.LastOrDefault()).ReservationId); Assert.Equal(seatsChanged, ((SeatsReserved)sut.Events.LastOrDefault()).AvailableSeatsChanged.Single().Quantity); }
public void CancelReservationChangesSeatsAvailability() { // Arrange var wantedSeats = 5; var sut = new SeatsAvailability(_reservationId); // Act sut.AddSeats(_seatTypeId, AvailableSeats); sut.MakeReservation(_reservationId, new[] { new SeatQuantity(_seatTypeId, wantedSeats) }); sut.CancelReservation(_reservationId); // Assert Assert.Equal(_reservationId, ((SeatsReservationCancelled)sut.Events.LastOrDefault()).ReservationId); Assert.Equal(_seatTypeId, ((SeatsReservationCancelled)sut.Events.LastOrDefault()).AvailableSeatsChanged.ElementAt(0).SeatType); Assert.Equal(wantedSeats, ((SeatsReservationCancelled)sut.Events.LastOrDefault()).AvailableSeatsChanged.ElementAt(0).Quantity); }