public async Task SegmentServiceSegmentsHealthCheckAsyncReturnsSuccess()
        {
            // arrange
            var segmentService = new SegmentService(
                logService,
                overviewBannerSegmentService,
                howToBecomeSegmentService,
                whatItTakesSegmentService,
                whatYouWillDoSegmentService,
                careerPathSegmentService,
                currentOpportunitiesSegmentService,
                relatedCareersSegmentService);

            var expectedResult = new HealthCheckItems
            {
                Source      = new Uri("http://somewhere.com"),
                HealthItems = new List <HealthCheckItem>
                {
                    new HealthCheckItem
                    {
                        Service = "Unit test",
                        Message = "All ok",
                    },
                },
            };

            A.CallTo(() => careerPathSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));
            A.CallTo(() => currentOpportunitiesSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));
            A.CallTo(() => howToBecomeSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));
            A.CallTo(() => overviewBannerSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));
            A.CallTo(() => relatedCareersSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));
            A.CallTo(() => whatItTakesSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));
            A.CallTo(() => whatYouWillDoSegmentService.HealthCheckAsync()).Returns(Task.FromResult(expectedResult));

            // act
            var results = await segmentService.SegmentsHealthCheckAsync().ConfigureAwait(false);

            // assert
            A.CallTo(() => careerPathSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => currentOpportunitiesSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => howToBecomeSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => overviewBannerSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => relatedCareersSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => whatItTakesSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();
            A.CallTo(() => whatYouWillDoSegmentService.HealthCheckAsync()).MustHaveHappenedOnceExactly();

            results.Count.Should().Be(NumberOfSegmentServices);
            results[0].Service.Should().Be(expectedResult.HealthItems[0].Service);
            results[0].Message.Should().Be(expectedResult.HealthItems[0].Message);
        }
        public async Task <IList <HealthCheckItem> > SegmentsHealthCheckAsync()
        {
            var tasks = new List <Task <HealthCheckItems> >
            {
                careerPathSegmentService.HealthCheckAsync(),
                currentOpportunitiesSegmentService.HealthCheckAsync(),
                howToBecomeSegmentService.HealthCheckAsync(),
                overviewBannerSegmentService.HealthCheckAsync(),
                relatedCareersSegmentService.HealthCheckAsync(),
                whatItTakesSegmentService.HealthCheckAsync(),
                whatYouWillDoSegmentService.HealthCheckAsync(),
            };

            await Task.WhenAll(tasks).ConfigureAwait(false);

            var result = new List <HealthCheckItem>();

            tasks.ForEach(f => result.AddRange(GetHealthResults(f)));

            return(result);
        }