public async Task ApprenticeshipFrameworksPatchTest(MessageAction messageAction)
        {
            var elementId = Guid.NewGuid();

            //Arrange
            var patchApprenticeshipFrameworksModel = new PatchApprenticeshipFrameworksModel()
            {
                ActionType = messageAction, Id = elementId
            };

            currentOpportunitiesSegmentModel.Data.Apprenticeships = new Apprenticeships()
            {
                Frameworks = new List <Data.Models.ApprenticeshipFramework>(),
            };
            currentOpportunitiesSegmentModel.Data.Apprenticeships.Frameworks.Add(new Data.Models.ApprenticeshipFramework()
            {
                Id = elementId
            });

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

            //Act
            var result = await CurrentOpportunitiesSegmentService.PatchApprenticeshipFrameworksAsync(patchApprenticeshipFrameworksModel, testGuid).ConfigureAwait(false);

            //Asserts
            A.CallTo(() => FakeCurrentOpportunitiesSegmentUtilities.GetReturnStatusForNullElementPatchRequest(A <MessageAction> .Ignored)).MustNotHaveHappened();
            result.Should().Be(HttpStatusCode.OK);
        }
        public void PatchApprenticeshipFrameworksNullTest()
        {
            //Asserts
            Func <Task> f = async() => { await CurrentOpportunitiesSegmentService.PatchApprenticeshipFrameworksAsync(null, testGuid).ConfigureAwait(false); };

            f.Should().Throw <ArgumentNullException>();
        }
        public async Task ApprenticeshipFrameworksPatchFrameworksNullTest()
        {
            //Arrange
            var patchApprenticeshipFrameworksModel = new PatchApprenticeshipFrameworksModel()
            {
                ActionType = MessageAction.Deleted
            };

            A.CallTo(() => FakeCurrentOpportunitiesSegmentUtilities.GetReturnStatusForNullElementPatchRequest(A <MessageAction> .Ignored)).Returns(HttpStatusCode.AlreadyReported);

            //Act
            var result = await CurrentOpportunitiesSegmentService.PatchApprenticeshipFrameworksAsync(patchApprenticeshipFrameworksModel, testGuid).ConfigureAwait(false);

            //Asserts
            result.Should().Be(HttpStatusCode.AlreadyReported);
        }
        public async Task ApprenticeshipFrameworksPatchFrameworksReturnsNotFoundForMissingSegment()
        {
            //Arrange
            var doNotPatchResult = new CurrentOpportunitiesSegmentPatchStatus()
            {
                OkToPatch = false, ReturnStatusCode = HttpStatusCode.NotFound
            };
            var patchApprenticeshipFrameworksModel = new PatchApprenticeshipFrameworksModel()
            {
                ActionType = MessageAction.Deleted
            };

            A.CallTo(() => FakeRepository.GetAsync(A <Expression <Func <CurrentOpportunitiesSegmentModel, bool> > > .Ignored)).Returns(null as CurrentOpportunitiesSegmentModel);
            A.CallTo(() => FakeCurrentOpportunitiesSegmentUtilities.IsSegementOkToPatch(A <CurrentOpportunitiesSegmentModel> .Ignored, A <long> .Ignored)).Returns(doNotPatchResult);

            //Act
            var result = await CurrentOpportunitiesSegmentService.PatchApprenticeshipFrameworksAsync(patchApprenticeshipFrameworksModel, testGuid).ConfigureAwait(false);

            //Asserts
            result.Should().Be(HttpStatusCode.NotFound);
        }