public async Task Test_AddOrdersFromFile_ShouldAddOrdersSuccessfully() { //arrange var fileInfo = new OrderFromFileDto { FilePath = "TestPath" }; //act var result = await subject.AddOrders(fileInfo); var codeResult = result as StatusCodeResult; //assert Assert.IsInstanceOf <StatusCodeResult>(codeResult); Assert.AreEqual(codeResult.StatusCode, 201); orderRepositoryMock.Verify(x => x.AddOrders(fileInfo), Times.Once); }
public async Task AddOrders(OrderFromFileDto orderFromFileDto) { var rows = System.IO.File.ReadLines(orderFromFileDto.FilePath).ToList(); var headers = new[] { "time_recived", "quantity", "brand_id" }; var headersRow = rows[0].Split('\t').Select(x => x.ToLower()).ToArray(); var timeRecivedId = Array.IndexOf(headers, "time_recived"); var quantityId = Array.IndexOf(headers, "quantity"); var brandIdId = Array.IndexOf(headers, "brand_id"); var orders = new List <Order>(); foreach (var row in rows) { var arr = row.Split('\t'); if (string.IsNullOrEmpty(row)) { continue; } if (row == rows[0]) { continue; } var item = new Order(); DateTime.TryParse(arr[timeRecivedId], out DateTime time); int.TryParse(arr[quantityId], out int quantity); int.TryParse(arr[brandIdId], out int brandId); item.TimeOrdered = time; item.Quantity = quantity; item.BrandId = brandId; orders.Add(item); } await context.Orders.AddRangeAsync(orders); context.SaveChanges(); }
public async Task <IActionResult> AddOrders(OrderFromFileDto orderFromFileDto) { await repo.AddOrders(orderFromFileDto); return(StatusCode(201)); }