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

            startupTasksContext.RegisterTask();
            startupTasksContext.MarkTaskAsFailed();

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

            context.Response.Body = new MemoryStream();

            var startupTasksContext = new StartupTasksContext();

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

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

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