public async Task <IActionResult> Edit(OrderAdminEditViewModel inputModel) { if (!this.ModelState.IsValid) { return(this.View(inputModel)); } await this.ordersService.EditOrderAsync(inputModel); return(this.RedirectToAction("Orders", "Users", new { id = inputModel.UserId })); }
public async Task EditOrderAsyncShouldThrowExceptionIfDeliveryAddressIdIsIncorrect() { var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; var dbContext = new MyCalisthenicAppDbContext(options); IHttpContextAccessor httpContextAccessor = new HttpContextAccessor(); var usersService = new UsersService(httpContextAccessor, dbContext, null); var mockMapper = new MapperConfiguration(cfg => { cfg.AddProfile(new MyCalisthenicAppProfile()); }); var mapper = mockMapper.CreateMapper(); var ordersService = new OrdersService(dbContext, mapper, usersService); var user = new ApplicationUser { Id = UserId, FirstName = UserFirstName, LastName = UserLastName, }; await dbContext.Users.AddAsync(user); await dbContext.SaveChangesAsync(); var orderModel = new OrderAdminEditViewModel { UserId = user.Id, }; var exception = await Assert.ThrowsAsync <ArgumentNullException>(async() => await ordersService.EditOrderAsync(orderModel)); Assert.IsType <ArgumentNullException>(exception); }
public async Task EditOrderAsync(OrderAdminEditViewModel inputModel) { if (!this.dbContext.Users.Any(u => u.Id == inputModel.UserId)) { throw new ArgumentNullException(string.Format(ServicesConstants.InvalidUserId, inputModel.UserId)); } if (!this.dbContext.Addresses.Any(u => u.Id == inputModel.DeliveryAddressId)) { throw new ArgumentNullException(string.Format(ServicesConstants.InvalidAddressId, inputModel.DeliveryAddressId)); } var order = await this.dbContext.Orders .Where(c => c.Id == inputModel.Id) .FirstOrDefaultAsync(); if (order == null) { throw new ArgumentNullException(string.Format(ServicesConstants.InvalidOrderId, inputModel.Id)); } Enum.TryParse(inputModel.PaymentStatus, true, out PaymentStatus paymentStatus); Enum.TryParse(inputModel.Status, true, out OrderStatus orderStatus); Enum.TryParse(inputModel.PaymentType, true, out PaymentType paymentType); order.IsDeleted = inputModel.IsDeleted; order.DeletedOn = inputModel.DeletedOn; order.ModifiedOn = inputModel.ModifiedOn; order.CreatedOn = inputModel.CreatedOn; order.MembershipPrice = inputModel.MembershipPrice; order.PaymentStatus = paymentStatus; order.Status = orderStatus; order.PaymentType = paymentType; order.EstimatedDeliveryDate = inputModel.EstimatedDeliveryDate; order.DisptachDate = inputModel.DisptachDate; order.TotalPrice = inputModel.TotalPrice; order.Discount = inputModel.Discount; order.DeliveryPrice = inputModel.DeliveryPrice; order.EasyPayNumber = inputModel.EasyPayNumber; order.EasyPayNumber = inputModel.EasyPayNumber; order.UserId = inputModel.UserId; order.DeliveryAddressId = inputModel.DeliveryAddressId; this.dbContext.Update(order); await this.dbContext.SaveChangesAsync(); }
public async Task EditOrderAsyncShouldEditOrderSuccessfully() { var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; var dbContext = new MyCalisthenicAppDbContext(options); IHttpContextAccessor httpContextAccessor = new HttpContextAccessor(); var usersService = new UsersService(httpContextAccessor, dbContext, null); var mockMapper = new MapperConfiguration(cfg => { cfg.AddProfile(new MyCalisthenicAppProfile()); }); var mapper = mockMapper.CreateMapper(); var ordersService = new OrdersService(dbContext, mapper, usersService); var user = new ApplicationUser { Id = UserId, FirstName = UserFirstName, LastName = UserLastName, }; await dbContext.Users.AddAsync(user); await dbContext.SaveChangesAsync(); var city = new City { Name = CityName, PostCode = CityPostCode, }; await dbContext.Cities.AddAsync(city); await dbContext.SaveChangesAsync(); var address = new Address { Country = AddressCountry, Street = AddressStreet, CityId = city.Id, }; await dbContext.Addresses.AddAsync(address); await dbContext.SaveChangesAsync(); var order = new Order { Id = OrderId, UserId = user.Id, }; await dbContext.Orders.AddAsync(order); await dbContext.SaveChangesAsync(); var orderModel = new OrderAdminEditViewModel { Id = order.Id, UserId = user.Id, DeliveryAddressId = address.Id, TotalPrice = OrderTotalPrice, }; await ordersService.EditOrderAsync(orderModel); var actual = await dbContext.Orders.FirstOrDefaultAsync(o => o.Id == order.Id); Assert.Equal(order.TotalPrice, actual.TotalPrice); }