Ejemplo n.º 1
0
        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);
                }
        }
Ejemplo n.º 2
0
        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();
 }
Ejemplo n.º 4
0
 public FileHandlerTestClass(ISalesDataManager salesDataManager, string token) : base(salesDataManager)
 {
     this.token = token;
 }
Ejemplo n.º 5
0
 public SalesHandlerBase(ISalesDataManager salesDataManager)
 {
     this.salesDataManager = salesDataManager ?? throw new ArgumentNullException();
 }
Ejemplo n.º 6
0
 public GithubSalesHandler(ISalesDataManager salesDataManager) : base(salesDataManager)
 {
 }
 public EmptySaleFileHandlerTestClass(ISalesDataManager dataManager) : base(dataManager)
 {
 }