public async Task Create_WithValidModel_ShouldWorkCorrectly() { // Arrange const int ticketsCount = 10; var context = new EventuresDbContext(new DbContextOptionsBuilder <EventuresDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ordersService = new OrdersService(context); var user = new EventuresUser { UserName = "******" }; await context.Users.AddAsync(user); var eventModel = new EventuresEvent { Name = "TestEvent", TotalTickets = ticketsCount }; await context.Events.AddAsync(eventModel); await context.SaveChangesAsync(); var model = new OrderServiceModel { OrderedOn = DateTime.UtcNow, EventId = eventModel.Id, TicketsCount = 2 }; // Act var result = await ordersService.Create(model, user.UserName); // Assert Assert.True(result); var remainingTickets = (await context.Events.SingleAsync()).TotalTickets; Assert.Equal(ticketsCount - model.TicketsCount, remainingTickets); var count = await context.Orders.CountAsync(); Assert.Equal(1, count); var orderUserId = (await context.Orders.SingleAsync()).UserId; Assert.Equal(user.Id, orderUserId); }
public void Create(CreateEventViewModel model) { var eventureEvent = new EventuresEvent() { Name = model.Name, Place = model.Place, Start = model.Start, End = model.End, TotalTickets = model.TotalTickets, TicketPrice = model.PricePerTicket }; this.dbContext.Add(eventureEvent); this.dbContext.SaveChanges(); }
public async Task Create_WithNullUser_ShouldNotChangeAnything() { // Arrange const int ticketsCount = 10; var context = new EventuresDbContext(new DbContextOptionsBuilder <EventuresDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ordersService = new OrdersService(context); var eventModel = new EventuresEvent { Name = "TestEvent", TotalTickets = ticketsCount }; await context.Events.AddAsync(eventModel); await context.SaveChangesAsync(); var model = new OrderServiceModel { OrderedOn = DateTime.UtcNow, EventId = eventModel.Id, TicketsCount = 2 }; // Act var result = await ordersService.Create(model, null); // Assert Assert.False(result); var remainingTickets = (await context.Events.SingleAsync()).TotalTickets; Assert.Equal(ticketsCount, remainingTickets); var count = await context.Orders.CountAsync(); Assert.Equal(0, count); }
private async Task SeedEvents(EventuresDbContext context) { var sampleEvents = new List <EventuresEvent>(); for (var i = 0; i < 10; i++) { var sampleEvent = new EventuresEvent { Name = $"Event number {i}", Place = $"Place number {i}", Start = DateTime.Now.AddDays(i), End = DateTime.Now.AddMonths(i), PricePerTicket = 10 * i, TotalTickets = 1000 * i }; sampleEvents.Add(sampleEvent); } await context.Events.AddRangeAsync(sampleEvents); await context.SaveChangesAsync(); }
public async Task InvokeAsync(HttpContext httpContext, EventuresDbContext dbContext, UserManager <EventuresUser> userManager, RoleManager <IdentityRole> roleManager) { if (!this.executed) { this.executed = true; dbContext.Database.EnsureCreated(); if (!await roleManager.RoleExistsAsync(GlobalConstants.AdminRoleName)) { await roleManager.CreateAsync(new IdentityRole(GlobalConstants.AdminRoleName)); } if (await dbContext.Events.CountAsync() < 35) { var currTime = DateTime.Now; var random = new Random(); var events = new EventuresEvent[35]; for (int i = 0; i < 35; i++) { var startDate = currTime.AddDays(random.NextDouble() * 300 - 150); var endDate = startDate.AddDays(random.NextDouble() * 15 + 5); events[i] = new EventuresEvent { Name = "Seeded Event " + (i + 1), Place = "Seeded Place " + (i % 10 + 1), StartDate = startDate, EndDate = endDate, TotalTickets = random.Next(5, 500), PricePerTicket = (decimal)random.NextDouble() * 150 + 50, }; } await dbContext.Events.AddRangeAsync(events); await dbContext.SaveChangesAsync(); } if (!userManager.Users.Any(u => u.UserName == "admin")) { var user = new EventuresUser { UserName = "******", Email = "*****@*****.**", FirstName = "admin", LastName = "admin", UniqueCitizenNumber = "0000000000" }; await userManager.CreateAsync(user, "admin"); await userManager.AddToRoleAsync(user, GlobalConstants.AdminRoleName); } } await this.next(httpContext); }
public async Task GetAllForUser_WithNoOrders_ShouldWorkCorrectly() { // Arrange var context = new EventuresDbContext(new DbContextOptionsBuilder <EventuresDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ordersService = new OrdersService(context); var eventModel = new EventuresEvent { Name = "Test Event", TotalTickets = 30, StartDate = DateTime.UtcNow, EndDate = DateTime.UtcNow, Place = "Test Place", PricePerTicket = 30 }; await context.Events.AddAsync(eventModel); var user = new EventuresUser { UserName = "******" }; await context.Users.AddAsync(user); var otherUser = new EventuresUser { UserName = "******" }; await context.Users.AddAsync(otherUser); var orders = new[] { new Order { OrderedOn = DateTime.UtcNow, TicketsCount = 1, Event = eventModel, User = otherUser }, new Order { OrderedOn = DateTime.UtcNow, TicketsCount = 2, Event = eventModel, User = otherUser }, new Order { OrderedOn = DateTime.UtcNow, TicketsCount = 3, Event = eventModel, User = otherUser } }; await context.Orders.AddRangeAsync(orders); await context.SaveChangesAsync(); // Act var all = await ordersService.GetAllForUser(user.UserName); // Assert var count = all.Count(); Assert.Equal(0, count); }