public void SaleDbDataManager_AddSaleData_AddsWithNoDuplicates() { SaleDataDto saleDataDto = GetSaleData(); var groupedSales = saleDataDto.Sales .GroupBy(sale => new { sale.CustomerName, sale.ProductName, sale.SaleDate }, (key, sales) => new SaleDto() { CustomerName = key.CustomerName, ProductName = key.ProductName, SaleDate = key.SaleDate, TotalSum = sales.Sum(s => s.TotalSum) }); int customersCount = saleDataDto.Sales.Select(s => s.CustomerName).Distinct().Count(); int productsCount = saleDataDto.Sales.Select(s => s.ProductName).Distinct().Count(); int salesCount = groupedSales.Count(); using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>()) using (ISalesDataManager manager = DependencyContainer.Container.Resolve <ISalesDataManager>()) { int initialCustomersCount = unitOfWork.Customers.Get().Count(); int initialProductsCount = unitOfWork.Products.Get().Count(); int initialSalesCount = unitOfWork.Sales.Get().Count(); var res = manager.AddOrUpdateSaleDataAsync(saleDataDto).GetAwaiter().GetResult(); int savedSalesCount = unitOfWork.Sales.Get().Count(); int savedCustomersCount = unitOfWork.Customers.Get().Count(); int savedProductsCount = unitOfWork.Products.Get().Count(); Assert.IsTrue(res.Succeeded); Assert.AreEqual(customersCount + initialCustomersCount, savedCustomersCount); Assert.AreEqual(productsCount + initialProductsCount, savedProductsCount); Assert.AreEqual(salesCount + initialSalesCount, savedSalesCount); // Second time same file saleDataDto = GetSaleData(1); groupedSales = saleDataDto.Sales .GroupBy(sale => new { sale.CustomerName, sale.ProductName, sale.SaleDate }, (key, sales) => new SaleDto() { CustomerName = key.CustomerName, ProductName = key.ProductName, SaleDate = key.SaleDate, TotalSum = sales.Sum(s => s.TotalSum) }); res = manager.AddOrUpdateSaleDataAsync(saleDataDto).GetAwaiter().GetResult(); savedSalesCount = unitOfWork.Sales.Get().Count(); savedCustomersCount = unitOfWork.Customers.Get().Count(); savedProductsCount = unitOfWork.Products.Get().Count(); Assert.IsTrue(res.Succeeded); Assert.AreEqual(customersCount + initialCustomersCount, savedCustomersCount); Assert.AreEqual(productsCount + initialProductsCount, savedProductsCount); Assert.AreEqual(salesCount + initialSalesCount, savedSalesCount); } }
public void SaleFileHandling_ErrorRemovedWhenDataHandled_And_SecondTimeSameDataReplacedOld() { string url = "https://api.github.com/repos/NAlex2004/SalesData/contents/Manager_2/AlNaz_04032019.json"; lock (lockObject) { ISalesDataManager manager = DependencyContainer.Container.Resolve <ISalesDataManager>(); using (GithubSalesHandler fileHandler = new GithubSalesHandler(manager)) { using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>()) { var errorAdded = manager.ErrorManager.AddErrorAsync(new SaleManagementResult() { FileName = "AlNaz_04032019.json", ErrorMessage = "Test error" }).GetAwaiter().GetResult(); int errors = unitOfWork.ErrorFiles.Get().Count(); ISaleDataSource saleDataSource = DependencyContainer.Container.Resolve <ISaleDataSource>(new ResolverOverride[] { new ParameterOverride("fileEntry", new GithubFileEntry() { Url = url, CommitDate = DateTime.Now }), new ParameterOverride("githubRepoToken", Token) }); var fileLoadResult = saleDataSource.GetSaleDataAsync().GetAwaiter().GetResult(); fileHandler.HandleSaleDataAsync(fileLoadResult).GetAwaiter().GetResult(); int errorsAfter = unitOfWork.ErrorFiles.Get().Count(); Assert.IsTrue(errorAdded.Succeeded); Assert.AreEqual(errors - 1, errorsAfter); // Second time same data fileHandler.HandleSaleDataAsync(fileLoadResult).GetAwaiter().GetResult(); var sourceFile = unitOfWork.SourceFiles.Get(f => f.FileName.Equals("AlNaz_04032019.json")).Single(); int salesCount = unitOfWork.Sales.Get(s => s.SourceFileId == sourceFile.Id).Count(); int errorsCount = unitOfWork.ErrorFiles.Get(e => e.FileName.Equals("AlNaz_04032019.json")).Count(); Assert.AreEqual(5, salesCount); Assert.AreEqual(0, errorsCount); } } } }
/// <summary> /// Creator: Cash Carlson /// Created: 03/19/2020 /// Approver: Rob Holmes /// /// Default Constructor for InventoryItems Page /// </summary> public pgViewSalesData() { _salesDataManager = new SalesDataManager(); InitializeComponent(); }
public FileHandlerTestClass(ISalesDataManager salesDataManager, string token) : base(salesDataManager) { this.token = token; }
public SalesHandlerBase(ISalesDataManager salesDataManager) { this.salesDataManager = salesDataManager ?? throw new ArgumentNullException(); }
public GithubSalesHandler(ISalesDataManager salesDataManager) : base(salesDataManager) { }
public EmptySaleFileHandlerTestClass(ISalesDataManager dataManager) : base(dataManager) { }