public void RunSaveSearchFailed()
        {
            // Arrange.
            var candidateId              = Guid.NewGuid();
            var savedSearchId            = Guid.NewGuid();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            var viewModel = new ApprenticeshipSearchViewModel
            {
                SavedSearchId = savedSearchId.ToString()
            };

            candidateServiceProvider
            .Setup(p => p.GetSavedSearch(candidateId, savedSearchId))
            .Returns(new SavedSearchViewModel
            {
                ViewModelMessage = "Error"
            });

            var mediator = new ApprenticeshipSearchMediatorBuilder()
                           .With(candidateServiceProvider).Build();

            // Act.
            var response = mediator.RunSavedSearch(candidateId, viewModel);

            // Assert.
            candidateServiceProvider.Verify(p => p.GetSavedSearch(candidateId, savedSearchId), Times.Once);

            response.AssertMessage(
                ApprenticeshipSearchMediatorCodes.SavedSearch.RunSaveSearchFailed,
                ApprenticeshipsSearchPageMessages.RunSavedSearchFailed,
                UserMessageLevel.Error,
                true);
        }
        public void SavedSearchNotFound_InvalidSavedSearchId()
        {
            // Arrange.
            var candidateId = Guid.NewGuid();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            var viewModel = new ApprenticeshipSearchViewModel
            {
                SavedSearchId = "X"
            };

            var mediator = new ApprenticeshipSearchMediatorBuilder()
                           .With(candidateServiceProvider).Build();

            // Act.
            var response = mediator.RunSavedSearch(candidateId, viewModel);

            // Assert.
            candidateServiceProvider.Verify(p => p.GetSavedSearch(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Never);

            response.AssertMessage(
                ApprenticeshipSearchMediatorCodes.SavedSearch.SavedSearchNotFound,
                ApprenticeshipsSearchPageMessages.SavedSearchNotFound,
                UserMessageLevel.Error,
                false);
        }
        public void Ok()
        {
            // Arrange.
            var candidateId              = Guid.NewGuid();
            var savedSearchId            = Guid.NewGuid();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            var viewModel = new ApprenticeshipSearchViewModel
            {
                SavedSearchId = savedSearchId.ToString()
            };

            var savedSearch = new Fixture()
                              .Build <SavedSearchViewModel>()
                              .With(each => each.ViewModelMessage, null)
                              .Create();

            candidateServiceProvider
            .Setup(p => p.GetSavedSearch(candidateId, savedSearchId)).Returns(savedSearch);

            var mediator = new ApprenticeshipSearchMediatorBuilder()
                           .With(candidateServiceProvider).Build();

            // Act.
            var response = mediator.RunSavedSearch(candidateId, viewModel);

            // Assert.
            candidateServiceProvider.Verify(p => p.GetSavedSearch(candidateId, savedSearchId), Times.Once);

            response.Code.Should().Be(ApprenticeshipSearchMediatorCodes.SavedSearch.Ok);
            response.ViewModel.Should().Be(savedSearch);
        }