public void Stock_Check_Stock_NOT_Available_ThrowsException() { var company = new CompanyDTO(); var item = new ItemDTO(); var addedItem = new AddedItemDTO { Company = company, Item = item, }; addedItem.Company.Id = 5; addedItem.Item.Id = 5; var options = new DbContextOptionsBuilder <ApiContext>() .UseInMemoryDatabase("no_stock_test_db") .Options; using (var context = new ApiContext(options)) { context.LoadTestDBData(2); var repository = new ItemRepository(context); Assert.Throws <AppException>(() => repository.StockCheck(addedItem)); } }
public void Stock_Check_Stock_Available_ReturnsTrue() { var company = new CompanyDTO(); var item = new ItemDTO(); var addedItem = new AddedItemDTO { Company = company, Item = item, }; addedItem.Company.Id = 1; addedItem.Item.Id = 1; var options = new DbContextOptionsBuilder <ApiContext>() .UseInMemoryDatabase("stock_test_db") .Options; using (var context = new ApiContext(options)) { context.LoadTestDBData(2); var repository = new ItemRepository(context); Assert.True(repository.StockCheck(addedItem)); } }
public virtual void UpdateCompanyStock(AddedItemDTO addedItem) { var updatedCompanyItem = _context.CompanyItem.FirstOrDefault(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id); updatedCompanyItem.Stock -= 1; _context.CompanyItem.Update(updatedCompanyItem); _context.SaveChanges(); }
private void CreateBasket(AddedItemDTO addedItem) { var newBasket = new Basket() { ItemId = addedItem.Item.Id, ItemCount = 1, UserId = addedItem.UserId }; _context.Basket.Add(newBasket); _context.SaveChanges(); }
public List <BasketDTO> Post([FromBody] AddedItemDTO addedItem) { try { var result = _basketService.AddItem(addedItem); return(result); } catch (Exception ex) { throw new AppException(ex.Message); } }
public void Add_Item_to_Basket_Test() { AddedItemDTO addedItem = new AddedItemDTO(); var item = new ItemDTO(); addedItem.Item = item; addedItem.Item.Id = 5; List <BasketDTO> addedBasketDTOList = basketService.AddItem(addedItem); Assert.Equal(1, addedBasketDTOList.Count); Assert.Equal(addedBasketDTOList.First().ItemId, addedItem.Item.Id); }
public virtual void CreateorUpdateBasket(AddedItemDTO addedItem) { var userItem = CheckSameItemExists(addedItem); if (userItem == null) { CreateBasket(addedItem); } else { UpdateBasket(addedItem, userItem); } }
public virtual bool StockCheck(AddedItemDTO addedItem) { var stock = _context.CompanyItem.Any(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id && s.Stock > 0); var list = _context.CompanyItem.ToList(); if (stock) { return(true); } else { throw new AppException("Out of stock"); } }
public void Update_Company_Stock_Returns_BasketDto() { var company = new CompanyDTO(); var item = new ItemDTO(); var addedItem = new AddedItemDTO { Company = company, Item = item, }; addedItem.Company.Id = 1; addedItem.Item.Id = 1; var basketDtoList = new List <BasketDTO>(); var basketDto = new BasketDTO { Id = 1, ItemId = 1, ItemCount = 1 }; basketDtoList.Add(basketDto); var mockMapper = new MapperConfiguration(cfg => { cfg.CreateMap <BasketDTO, Basket>().ReverseMap(); }); var mapper = mockMapper.CreateMapper(); var options = new DbContextOptionsBuilder <ApiContext>() .UseInMemoryDatabase("company_stock_update_test_db") .Options; using (var context = new ApiContext(options)) { context.LoadUserBasketTestData(1); var companyStock = context.CompanyItem.First(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id).Stock; var repository = new ItemRepository(context); repository.UpdateCompanyStock(addedItem); var companyStockUpdated = context.CompanyItem.First(s => s.CompanyId == addedItem.Company.Id && s.ItemId == addedItem.Item.Id).Stock; Assert.Equal(companyStock - 1, companyStockUpdated); } }
public List <BasketDTO> AddItem(AddedItemDTO addedItem) { var trans = _context.Database.BeginTransaction(); try { _userRepository.UserExist(addedItem.UserId); _itemRepository.StockCheck(addedItem); _basketRepository.CreateorUpdateBasket(addedItem); _itemRepository.UpdateCompanyStock(addedItem); trans.Commit(); return(_basketRepository.GetUserBasket(addedItem.UserId)); } catch (Exception e) { trans.Rollback(); throw new AppException(e.Message); } }
private Basket CheckSameItemExists(AddedItemDTO addedItem) { return(_context.Basket.FirstOrDefault(s => s.UserId == addedItem.UserId && s.ItemId == addedItem.Item.Id)); }
private void UpdateBasket(AddedItemDTO addedItem, Basket basket) { basket.ItemCount += 1; _context.Basket.Update(basket); _context.SaveChanges(); }