Beispiel #1
0
        public void GithubHookConsumer_NothingInDb_WhenHandlingBadHook()
        {
            ISalesHandlerFactory fileHandlerFactory = new TestGithubSalesHandlerFactory(DependencyContainer.Container);
            IHookConsumer        hookConsumer       = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });

            using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>())
            {
                lock (lockObject)
                {
                    int customersCount   = unitOfWork.Customers.Get().Count();
                    int productsCount    = unitOfWork.Products.Get().Count();
                    int sourceFilesCount = unitOfWork.SourceFiles.Get().Count();
                    int salesCount       = unitOfWork.Sales.Get().Count();
                    int errorsCount      = unitOfWork.ErrorFiles.Get().Count();

                    hookConsumer.ConsumeHookAsync("../../Data/bad_hook1.json").GetAwaiter().GetResult();

                    int customersCountAfter   = unitOfWork.Customers.Get().Count();
                    int productsCountAfter    = unitOfWork.Products.Get().Count();
                    int sourceFilesCountAfter = unitOfWork.SourceFiles.Get().Count();
                    int salesCountAfter       = unitOfWork.Sales.Get().Count();
                    int errorsCountAfter      = unitOfWork.ErrorFiles.Get().Count();
                    Assert.AreEqual(customersCount, customersCountAfter);
                    Assert.AreEqual(productsCount, productsCountAfter);
                    Assert.AreEqual(sourceFilesCount, sourceFilesCountAfter);
                    Assert.AreEqual(salesCount, salesCountAfter);
                    Assert.AreEqual(errorsCount, errorsCountAfter);
                }
            }
        }
Beispiel #2
0
        public void GithubHookConsumer_HandlingSameHookInParallelThreads_EachFileSavedOnlyOnce()
        {
            ISalesHandlerFactory fileHandlerFactory = new TestGithubSalesHandlerFactory(DependencyContainer.Container);
            IHookConsumer        hookConsumer       = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });
            IHookConsumer hookConsumer2 = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });

            using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>())
            {
                lock (lockObject)
                {
                    unitOfWork.Customers.Delete(x => true);
                    unitOfWork.Products.Delete(x => true);
                    unitOfWork.SourceFiles.Delete(x => true);
                    unitOfWork.Sales.Delete(x => true);
                    unitOfWork.ErrorFiles.Delete(x => true);
                    unitOfWork.SaveChanges();
                    string hookJson = File.ReadAllText("../../Data/hook1.json");

                    var task1 = hookConsumer.ConsumeHookAsync(hookJson);
                    var task2 = hookConsumer2.ConsumeHookAsync(hookJson);
                    Task.WaitAll(task1, task2);

                    int customersCountAfter   = unitOfWork.Customers.Get().Count();
                    int productsCountAfter    = unitOfWork.Products.Get().Count();
                    int sourceFilesCountAfter = unitOfWork.SourceFiles.Get().Count();
                    int salesCountAfter       = unitOfWork.Sales.Get().Count();
                    int errorsCountAfter      = unitOfWork.ErrorFiles.Get().Count();
                    Assert.AreEqual(5, customersCountAfter);
                    Assert.AreEqual(4, productsCountAfter);
                    Assert.AreEqual(2, sourceFilesCountAfter);
                    Assert.AreEqual(10, salesCountAfter);
                    Assert.IsTrue(errorsCountAfter >= 2);
                }
            }
        }
Beispiel #3
0
        public void GithubHookConsumer_DbHasCorrectData_WhenHandlingGoodHook()
        {
            ISalesHandlerFactory fileHandlerFactory = new TestGithubSalesHandlerFactory(DependencyContainer.Container);
            IHookConsumer        hookConsumer       = DependencyContainer.Container.Resolve <IHookConsumer>(new ResolverOverride[]
            {
                new ParameterOverride(typeof(ISalesHandlerFactory), fileHandlerFactory),
                new ParameterOverride("githubRepoToken", Token),
                new ParameterOverride("hookParser", new GithubHookParser(f => FileNameValidator.Validate(f)))
            });

            using (ISalesUnitOfWork unitOfWork = DependencyContainer.Container.Resolve <ISalesUnitOfWork>())
            {
                lock (lockObject)
                {
                    unitOfWork.Customers.Delete(x => true);
                    unitOfWork.Products.Delete(x => true);
                    unitOfWork.SourceFiles.Delete(x => true);
                    unitOfWork.Sales.Delete(x => true);
                    unitOfWork.ErrorFiles.Delete(x => true);
                    unitOfWork.SaveChanges();
                    string hookJson = File.ReadAllText("../../Data/hook1.json");

                    hookConsumer.ConsumeHookAsync(hookJson).GetAwaiter().GetResult();

                    int customersCountAfter   = unitOfWork.Customers.Get().Count();
                    int productsCountAfter    = unitOfWork.Products.Get().Count();
                    int sourceFilesCountAfter = unitOfWork.SourceFiles.Get().Count();
                    int salesCountAfter       = unitOfWork.Sales.Get().Count();
                    int errorsCountAfter      = unitOfWork.ErrorFiles.Get().Count();
                    Assert.AreEqual(5, customersCountAfter);
                    Assert.AreEqual(4, productsCountAfter);
                    Assert.AreEqual(2, sourceFilesCountAfter);
                    Assert.AreEqual(10, salesCountAfter);
                    Assert.AreEqual(2, errorsCountAfter);
                }
            }
        }
Beispiel #4
0
 public SalesController(IHookConsumer hookConsumer)
 {
     this.hookConsumer = hookConsumer;
 }