private void LoadOrdersFromFiles(object sender, EventArgs e) { string[] filenames = view.GetFilenamesOfOrdersToOpen(); if (filenames == null) { return; } List <Order> ordersFromFile = new List <Order>(); List <string> errorMessages = new List <string>(); foreach (var file in filenames) { // get extension of the file, to use proper parser string fileExtension = Path.GetExtension(file); // try to parse the extension to the predefined enum Enum.TryParse(fileExtension.Remove(0, 1).ToUpper(), out FileType fileType); //based on the extension of the file, use correct parser to get data and errors regarding parsing switch (fileType) { case FileType.CSV: ordersFromFile = parsers[0].GetOrdersFromFile(file); errorMessages = ((Parser)parsers[0]).GetErrorMessages(); break; case FileType.JSON: ordersFromFile = parsers[1].GetOrdersFromFile(file); errorMessages = ((Parser)parsers[1]).GetErrorMessages(); break; case FileType.XML: ordersFromFile = parsers[2].GetOrdersFromFile(file); errorMessages = ((Parser)parsers[2]).GetErrorMessages(); break; default: view.AppendErrorToLogs("Unsupported file extension, please check inserted files !"); break; } // insert read orders into database viewModel.AddNewOrders(ordersFromFile); // append errors about data which was incorrect during parsing view.AppendErrorsToLogs(errorMessages); // fetch all inserted orders into database List <Order> orders = viewModel.GetAllRequests(); // update view view.UpdateDataGriedView(orders); } }
public void GetNumberOfOrders_OrdersExistInDatabase_NumberOfOrdersIsReturned() { //Arrange var viewModel = new OrderViewModel(); var ordersToAdd = OrderCreator.CreateOrders_TwoOrdersWithSameReuquestId(); viewModel.AddNewOrders(ordersToAdd); //Action int numberOfOrders = viewModel.GetNumberOfOrders(); //Assert Assert.AreEqual(2, numberOfOrders); }
public void GetNumberOfRequestsGroupedByName_OrdersExistInDatabase_GrouppedRequestsAreReturned() { //Arrange var viewModel = new OrderViewModel(); var ordersToAdd = OrderCreator.CreateOrdersForGroupByNameTest(); viewModel.AddNewOrders(ordersToAdd); //Action var groupedOrders = viewModel.GetNumberOfOrdersGroupedByName(); //Assert // only 3 orders should be returned because two orders referee to same name Assert.AreEqual(3, groupedOrders.Count); }
public void FetchAllOrdersForSpecificClient_OrdersExistInDatabase_OrdersForClientAreReturned() { //Arrange var viewModel = new OrderViewModel(); string clientId = "id1"; var orderForSpecificCLientToAdd = OrderCreator.CreateOrders_ForSpecificCLient_TwoOrdersWithSameRequestId(clientId); viewModel.AddNewOrders(orderForSpecificCLientToAdd); //Action var clientOrders = viewModel.GetAllOrdersForSpecificClient(clientId); //Assert Assert.AreEqual(1, clientOrders.Count); }
public void GetNumberOfRequestsGroupedByNameForSpecificClient_OrdersExistInDatabase_GrouppedRequestsAreReturned() { //Arrange var viewModel = new OrderViewModel(); var ordersToAdd = OrderCreator.CreateOrdersForGroupByNameTest(); viewModel.AddNewOrders(ordersToAdd); var groupedOrdersForClient = viewModel.GetNumberOfOrdersGroupedByNameForSpecificClient("id1"); // Assert // Only 2 orders should be returned because two orders referee to same name Assert.AreEqual(2, groupedOrdersForClient.Count); }
public void GetAveragePriceOfOrder_OrdersExistInDatabase_AveragePriceIsReturned() { //Arrange var viewModel = new OrderViewModel(); var ordersToAdd = OrderCreator.CreateOrders_TwoOrdersWithSameReuquestId(); viewModel.AddNewOrders(ordersToAdd); decimal average = 269.6m; // calculated based on the orders added into database // first request => 12 * 12.2 + 10 * 10 = 246.4, second request => 24 * 12.2 = 292.8 // Average = 269.6 decimal averagePrice = viewModel.GetAveragePriceOfOrder(); //Assert Assert.AreEqual(average, averagePrice); }
public void FetchAllOrders_OrdersAreInDatabase_AllOrdersAreReturned() { //Arrange var viewModel = new OrderViewModel(); // create three orders where 2 refere to same request id var ordersToAdd = OrderCreator.CreateOrders_TwoOrdersWithSameReuquestId(); // add them to database viewModel.AddNewOrders(ordersToAdd); //Action var orders = viewModel.GetAllOrders(); //Assert Assert.IsTrue(2 == orders.Count); }
public void GetTotalPriceOfOrders_OrdersExistInDatabase_NumberOfOrdersIsReturned() { //Arrange var viewModel = new OrderViewModel(); var ordersToAdd = OrderCreator.CreateOrders_TwoOrdersWithSameReuquestId(); viewModel.AddNewOrders(ordersToAdd); decimal result = 539.2m; // calculated based on the orders added into database // first request => 12 * 12.2m = 146.4, second request => 24 * 12.2 = 292.8, third request => 10*10 = 100 // sum = 539.2 //Action decimal totalPriceOfOrders = viewModel.GetTotalPriceOfOrders(); //Assert Assert.AreEqual(result, totalPriceOfOrders); }
public void GetNumberOfOrdersForSpecificClient_OrdersExistInDatabase_NumberOfOrdersIsReturned() { //Arrange var viewModel = new OrderViewModel(); string clientId = "id1"; var ordersToAdd = OrderCreator.CreateOrders_ForSpecificCLient_TwoOrdersWithSameRequestId(clientId); viewModel.AddNewOrders(ordersToAdd); //Action int numberOfOrdersForClient = viewModel.GetNumberOfOrdersForSpecificClient(clientId); //Assert // There are three orders in database, but only two refere to client id ("id1"), and those two orders // refere to same request_id so in fact client has only one order Assert.AreEqual(1, numberOfOrdersForClient); }
public void GetTotalPriceOfOrdersForSpecificClient_OrdersExistInDatabase_NumberOfOrdersIsReturned() { //Arrange string clientId = "id1"; var viewModel = new OrderViewModel(); var ordersToAdd = OrderCreator.CreateOrders_ForSpecificCLient_TwoOrdersWithSameRequestId(clientId); viewModel.AddNewOrders(ordersToAdd); decimal result = 246.4m; // calculated based on the orders added into database for specific client // first request => 12 * 12.2 + 10 * 10 = 246.4 because first and second order have same request_id // sum = 246.4 //Action decimal totalPriceOfOrdersForClient = viewModel.GetTotalPriceOfOrdersForSpecificClient("id1"); //Assert Assert.AreEqual(result, totalPriceOfOrdersForClient); }
public void GetAveragePriceOfOrderOfSpecificClient_OrdersExistInDatabase_AveragePriceIsReturned() { //Arrange var viewModel = new OrderViewModel(); string clientId = "id1"; var ordersToAdd = OrderCreator.CreateOrders_ForSpecificCLient_TwoOrdersWithSameRequestId(clientId); var orderWithDifferentRequestIdForSameClient = OrderCreator.CreateOrder(clientId, 2, "Roll", 2, 4m); viewModel.AddNewOrder(orderWithDifferentRequestIdForSameClient); viewModel.AddNewOrders(ordersToAdd); decimal average = 127.2m; // calculated based on the orders added into database for specific client // first request => 12 * 12.2 + 10 * 10 = 246.4 because first and second order have same request_id // second request => 2 * 4 = 8 // average = 127.2 //Action decimal averagePrice = viewModel.GetAveragePriceOfOrderOfSpecificClient("id1"); //Assert Assert.AreEqual(average, averagePrice); }