public void Context_After_Tasks_Execution()
        {
            var startupTasksContext = new StartupTasksContext();

            startupTasksContext.RegisterTask();
            startupTasksContext.RegisterTask();
            startupTasksContext.MarkTaskAsComplete();
            startupTasksContext.MarkTaskAsComplete();

            Assert.True(startupTasksContext.HaveAllTasksFinished);
            Assert.False(startupTasksContext.HasAnyTaskFailed);
        }
        public async Task Middleware_Returns_Next_Middleware_When_All_Tasks_Completed()
        {
            var context = new DefaultHttpContext();

            context.Response.Body = new MemoryStream();

            var startupTasksContext = new StartupTasksContext();

            startupTasksContext.RegisterTask();
            startupTasksContext.RegisterTask();
            startupTasksContext.MarkTaskAsComplete();
            startupTasksContext.MarkTaskAsComplete();

            var middleware = new StartupTasksMiddleware(null, httpContext => httpContext.Response.WriteAsync("Hello world!"));
            await middleware.ProcessRequest(context, startupTasksContext);

            Assert.Equal(200, context.Response.StatusCode);
        }