Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public void RequestingAnInexistantSeatType_Throws()
        {
            // Arrange
            var sut = new SeatsAvailability(_reservationId);

            // Act & Assert
            Assert.Throws <ArgumentOutOfRangeException>(() =>
                                                        sut.MakeReservation(_reservationId, new[] { new SeatQuantity(Guid.NewGuid(), 7) }));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }