public async Task RefreshJobProfileMessageNotSentWhenCourseAndAVServiceFails()
        {
            // arrange
            var currentOpportunitiesSegmentModel = A.Fake <CurrentOpportunitiesSegmentModel>();

            A.CallTo(() => FakeRepository.UpsertAsync(A <CurrentOpportunitiesSegmentModel> .Ignored)).Returns(HttpStatusCode.OK);
            A.CallTo(() => FakeAVCurrentOpportunatiesRefresh.RefreshApprenticeshipVacanciesAsync(currentOpportunitiesSegmentModel.DocumentId)).Throws(new HttpRequestException());
            A.CallTo(() => FakeCourseCurrentOpportunitiesRefresh.RefreshCoursesAsync(currentOpportunitiesSegmentModel.DocumentId)).Throws(new HttpRequestException());

            // act
            var result = await CurrentOpportunitiesSegmentService.UpsertAsync(currentOpportunitiesSegmentModel).ConfigureAwait(false);

            // asserts
            A.CallTo(() => FakeJobProfileSegmentRefreshService.SendMessageAsync(A <RefreshJobProfileSegmentServiceBusModel> .Ignored)).MustNotHaveHappened();
        }
        public async Task CurrentOpportunitiesSegmentServiceUpdateCoursesAndAppreticeshipsWhenUpserted(HttpStatusCode upsertReturnCode, bool shouldRefresh)
        {
            // arrange
            var currentOpportunitiesSegmentModel = A.Fake <CurrentOpportunitiesSegmentModel>();

            A.CallTo(() => FakeRepository.UpsertAsync(A <CurrentOpportunitiesSegmentModel> .Ignored)).Returns(upsertReturnCode);

            // act
            var result = await CurrentOpportunitiesSegmentService.UpsertAsync(currentOpportunitiesSegmentModel).ConfigureAwait(false);

            // assert
            A.CallTo(() => FakeRepository.UpsertAsync(A <CurrentOpportunitiesSegmentModel> .Ignored)).MustHaveHappenedOnceExactly();

            if (shouldRefresh)
            {
                A.CallTo(() => FakeCourseCurrentOpportunitiesRefresh.RefreshCoursesAsync(A <Guid> .Ignored)).MustHaveHappened();
                A.CallTo(() => FakeAVCurrentOpportunatiesRefresh.RefreshApprenticeshipVacanciesAsync(A <Guid> .Ignored)).MustHaveHappened();
            }
            else
            {
                A.CallTo(() => FakeCourseCurrentOpportunitiesRefresh.RefreshCoursesAsync(A <Guid> .Ignored)).MustNotHaveHappened();
                A.CallTo(() => FakeAVCurrentOpportunatiesRefresh.RefreshApprenticeshipVacanciesAsync(A <Guid> .Ignored)).MustNotHaveHappened();
            }
        }