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); } } }
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); } } }
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); } } }