public async Task ItCalculatesTheCorrectOwingAmount(DateTimeOffset issuedOn, TimeSpan rateDuration, decimal rateValue, decimal expectedTotal) { // arrange var config = new ParkingLotConfig { MaxParkingSpaces = 3 }; var ticketService = new TicketService(_context, config); var rateLevel = new RateLevel { Name = rateDuration.ToString(), Duration = rateDuration, RateValue = rateValue }; var ticket = new Ticket { Customer = "Test Customer", RateLevel = rateLevel, IssuedOn = issuedOn }; await _context.AddAsync(ticket); await _context.SaveChangesAsync(); // act var amountOwing = ticketService.GetAmountOwed(ticket); // assert Assert.Equal(expectedTotal, amountOwing); }
public async Task ItIssuesATicketIfThereIsASpace() { // arrange var config = new ParkingLotConfig { MaxParkingSpaces = 3 }; var ticketService = new TicketService(_context, config); var rateLevel = new RateLevel { Name = "Test Rate", RateValue = 1.25M }; var tickets = new[] { new Ticket { Customer = "Test Customer 1", RateLevel = rateLevel }, new Ticket { Customer = "Test Customer 2", RateLevel = rateLevel } }; await _context.Tickets.AddRangeAsync(tickets); await _context.SaveChangesAsync(); // act var newTicket = await ticketService.IssueNewTicket("cust", rateLevel.Id); // assert Assert.NotNull(newTicket); Assert.Equal("cust", newTicket.Customer); }
public async Task ItRefusesEntryIfTheLotIsFull() { // arrange var config = new ParkingLotConfig { MaxParkingSpaces = 3 }; var ticketService = new TicketService(_context, config); var rateLevel = new RateLevel { Name = "Test Rate", RateValue = 1.25M }; var tickets = new[] { new Ticket { Customer = "Test Customer 1", RateLevel = rateLevel }, new Ticket { Customer = "Test Customer 2", RateLevel = rateLevel }, new Ticket { Customer = "Test Customer 3", RateLevel = rateLevel } }; await _context.Tickets.AddRangeAsync(tickets); await _context.SaveChangesAsync(); // act/assert await Assert.ThrowsAsync <LotFullException>(async() => await ticketService.IssueNewTicket("Test Customer 4", 1)); }
public TicketsControllerTests() { _config = new ParkingLotConfig { MaxParkingSpaces = 5 }; _mockTicketService = new Mock <ITicketService>(); _controller = new TicketsController(_config, _mockTicketService.Object); }
public TicketsController(ParkingLotConfig config, ITicketService ticketService) { _config = config; _ticketService = ticketService; }