コード例 #1
0
        public async Task Sut_ShouldExpireReservationWhenConfirmed([Frozen] TicketContext context,
                                                                   [Frozen] IMemoryCache cache,
                                                                   [Frozen] TicketServiceSettings settings,
                                                                   TicketService sut)
        {
            settings.TicketHoldExpiration = TimeSpan.FromMinutes(2);
            var reservation = await sut.FindAndHoldSeats(10, "*****@*****.**");

            cache.TryGetValue(reservation.SeatHoldId.ToString(), out var seatHold).Should().BeTrue();

            await sut.ReserveSeats(reservation.SeatHoldId, "*****@*****.**");

            cache.TryGetValue(reservation.SeatHoldId.ToString(), out seatHold).Should().BeFalse();
        }
コード例 #2
0
        public async Task Sut_ShouldUpdateAvailableSeatsOnExpiration([Frozen] TicketContext context,
                                                                     [Frozen] IMemoryCache cache,
                                                                     [Frozen] TicketServiceSettings settings,
                                                                     TicketService sut)
        {
            settings.TicketHoldExpiration = TimeSpan.FromSeconds(1);
            var reservation = await sut.FindAndHoldSeats(10, "*****@*****.**");

            (await sut.NumSeatsAvailable()).Should().Be(190);

            await Task.Delay(1100);

            cache.TryGetValue(reservation.SeatHoldId.ToString(), out var seatHold).Should().BeFalse();

            await Task.Delay(1100);

            (await sut.NumSeatsAvailable()).Should().Be(200);
        }