// --- Helpers ---

        private Mock <IMediator> GetMediator(CommitmentView commitment)
        {
            var respons = new GetCommitmentQueryResponse
            {
                Commitment = commitment
            };

            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(m => m.Send(It.IsAny <GetCommitmentQueryRequest>(), It.IsAny <CancellationToken>()))
            .Returns(Task.Factory.StartNew(() => respons));

            mockMediator.Setup(m => m.Send(It.IsAny <GetProviderAgreementQueryRequest>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new GetProviderAgreementQueryResponse {
                HasAgreement = ProviderAgreementStatus.Agreed
            }));

            mockMediator.Setup(m => m.Send(It.IsAny <GetOverlappingApprenticeshipsQueryRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(() => new GetOverlappingApprenticeshipsQueryResponse
            {
                Overlaps = new List <ApprenticeshipOverlapValidationResult>()
            });

            return(mockMediator);
        }
        // --- Helpers ---

        protected static Mock <IMediator> GetMediator(CommitmentView commitment)
        {
            var respons = new GetCommitmentQueryResponse
            {
                Commitment = commitment
            };

            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(m => m.Send(It.IsAny <GetCommitmentQueryRequest>(), new CancellationToken()))
            .Returns(Task.Factory.StartNew(() => respons));

            mockMediator.Setup(m => m.Send(It.IsAny <GetTrainingProgrammesQueryRequest>(), new CancellationToken()))
            .ReturnsAsync(new GetTrainingProgrammesQueryResponse {
                TrainingProgrammes = new List <TrainingProgramme>()
            });

            mockMediator.Setup(m => m.Send(It.IsAny <GetOverlappingApprenticeshipsQueryRequest>(), new CancellationToken()))
            .ReturnsAsync(() => new GetOverlappingApprenticeshipsQueryResponse
            {
                Overlaps = new List <ApprenticeshipOverlapValidationResult>()
            });

            return(mockMediator);
        }