Ejemplo n.º 1
0
        public void Ok_CandidateIsLoggedInAndHasNoSavedSearches()
        {
            // Arrange.
            var candidateId = Guid.NewGuid();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            var savedSearches = new SavedSearchViewModel[] { };

            candidateServiceProvider
            .Setup(p => p.GetSavedSearches(candidateId)).Returns(savedSearches);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            candidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

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

            // Act.
            var response = mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false);

            // Assert.
            candidateServiceProvider.Verify(p => p.GetSavedSearches(candidateId), Times.Once);
            response.ViewModel.SavedSearches.Count().Should().Be(savedSearches.Length);
            response.Code.Should().Be(ApprenticeshipSearchMediatorCodes.Index.Ok);
        }
Ejemplo n.º 2
0
        public void SearchMode_SavedSearches_AuthenticatedUserWithNoSavedSearchesTest()
        {
            var index         = new Index();
            var candidateId   = Guid.NewGuid();
            var mockViewModel = new List <SavedSearchViewModel>();

            CandidateServiceProvider.Setup(mock => mock.GetSavedSearches(candidateId)).Returns(mockViewModel);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            CandidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

            var searchViewModel = Mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false).ViewModel;
            var view            = index.RenderAsHtml(CreateMockHttpContext(true), searchViewModel);

            var link = view.GetElementbyId("saved-searches-tab-control");

            link.Should().NotBeNull();
            link.Attributes["class"].Value.Should().Contain(" active");

            view.GetElementbyId("run-saved-search-button").Should().BeNull();
            view.GetElementbyId("saved-searches-settings-link").Should().BeNull();
        }
Ejemplo n.º 3
0
        private int InternalCreateCandidate(Domain.Entities.Candidates.Candidate candidate)
        {
            var request  = CreateRequest(candidate);
            var response = default(CreateCandidateResponse);

            _service.Use("SecureService", client => response = client.CreateCandidate(request));

            if (response == null || (response.ValidationErrors != null && response.ValidationErrors.Any()))
            {
                string message;

                if (response == null)
                {
                    message = "No response";
                }
                else
                {
                    message = string.Format("{0} validation error(s): {1}",
                                            response.ValidationErrors.Count(), JsonConvert.SerializeObject(response, Formatting.None));
                }

                throw new DomainException(CandidateErrorCodes.CreateCandidateFailed, new { message, candidateId = candidate.EntityId });
            }

            return(response.CandidateId);
        }
        public void ShouldRenderSavedSearchPromptWhenCandidateHasNoSavedSearches()
        {
            // Arrange.
            var @partial    = new savedSearches();
            var candidateId = Guid.NewGuid();

            var mockViewModel = new List <SavedSearchViewModel>();

            CandidateServiceProvider.Setup(mock => mock.GetSavedSearches(candidateId)).Returns(mockViewModel);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            CandidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

            var indexViewModel = Mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false).ViewModel;

            // Act.
            var view = @partial.RenderAsHtml(indexViewModel);

            // Assert.
            var list   = view.GetElementbyId("saved-searches-list");
            var prompt = view.GetElementbyId("saved-searches-prompt");

            list.Should().BeNull();
            prompt.Should().NotBeNull();
        }
Ejemplo n.º 5
0
        public int CreateCandidate(Domain.Entities.Candidates.Candidate candidate)
        {
            var context = new { candidateId = candidate.EntityId };

            try
            {
                _logger.Debug("Calling Legacy.CreateCandidate for candidate id='{0}'", candidate.EntityId);

                var legacyCandidateId = InternalCreateCandidate(candidate);

                _logger.Debug("Legacy.CreateCandidate succeeded for candidate id='{0}', legacy candidate id='{1}'", candidate.EntityId, legacyCandidateId);

                return(legacyCandidateId);
            }
            catch (DomainException e)
            {
                _logger.Error(e);
                throw;
            }
            catch (BoundaryException e)
            {
                _logger.Error(e, context);
                throw new DomainException(CandidateErrorCodes.CreateCandidateFailed, e, context);
            }
            catch (Exception e)
            {
                _logger.Error(e, context);
                throw;
            }
        }
        public void ShouldRenderTabAsActiveWhenSearchModeIsSavedSearches(int savedSearchCount)
        {
            // Arrange.
            var @partial      = new savedSearches();
            var candidateId   = Guid.NewGuid();
            var mockViewModel = new Fixture().Build <SavedSearchViewModel>().CreateMany(savedSearchCount);

            CandidateServiceProvider.Setup(mock => mock.GetSavedSearches(candidateId)).Returns(mockViewModel);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            CandidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

            var viewModel = Mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false).ViewModel;

            // Act.
            var view = @partial.RenderAsHtml(viewModel);

            // Assert.
            view.GetElementbyId("saved-searches").Attributes["class"].Value.Contains(" active").Should().BeTrue();
        }
        public void ShouldRenderSavedSearchesList(int savedSearchCount)
        {
            // Arrange.
            var @partial    = new savedSearches();
            var candidateId = Guid.NewGuid();

            var mockViewModel = new Fixture().Build <SavedSearchViewModel>().CreateMany(savedSearchCount).ToList();

            CandidateServiceProvider.Setup(mock => mock.GetSavedSearches(candidateId)).Returns(mockViewModel);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            CandidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

            var indexViewModel = Mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false).ViewModel;

            // Act.
            var view = @partial.RenderAsHtml(indexViewModel);

            // Assert.
            var list = view.GetElementbyId("saved-searches-list");

            list.Should().NotBeNull();
            list.ChildNodes.Count(node => node.Name == "li").Should().Be(savedSearchCount);

            foreach (var savedSearchViewModel in mockViewModel)
            {
                var listItemId      = string.Format("{0}-{1}", "saved-search", savedSearchViewModel.Id);
                var listItemLabelId = string.Format("{0}-{1}", "saved-search-label", savedSearchViewModel.Id);

                var listItem = view.GetElementbyId(listItemId);

                listItem.Should().NotBeNull();
                listItem.GetAttributeValue("value", null).Should().Be(savedSearchViewModel.Id.ToString());

                var listItemLabel = view.GetElementbyId(listItemLabelId);

                listItemLabel.Should().NotBeNull();
                listItemLabel.InnerText.Should().Be(savedSearchViewModel.Name);
            }
        }
        public void ShouldNotRenderSubcategoriesFilter(int savedSearchCount)
        {
            // Arrange.
            var @partial    = new savedSearches();
            var candidateId = Guid.NewGuid();

            var mockViewModel = new Fixture()
                                .Build <SavedSearchViewModel>()
                                .With(each => each.SubCategoriesFullNames, null)
                                .CreateMany(savedSearchCount).ToList();

            CandidateServiceProvider.Setup(mock => mock.GetSavedSearches(candidateId)).Returns(mockViewModel);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            CandidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

            var indexViewModel = Mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false).ViewModel;

            // Act.
            var view = @partial.RenderAsHtml(indexViewModel);

            // Assert.
            var list = view.GetElementbyId("saved-searches-list");

            list.Should().NotBeNull();
            list.ChildNodes.Count(node => node.Name == "li").Should().Be(savedSearchCount);

            foreach (var savedSearchViewModel in mockViewModel)
            {
                var id = string.Format("{0}-{1}", "saved-search-subcategories", savedSearchViewModel.Id);

                var element = view.GetElementbyId(id);

                element.Should().BeNull();
            }
        }
Ejemplo n.º 9
0
 private static CreateCandidateRequest CreateRequest(Domain.Entities.Candidates.Candidate candidate)
 {
     return(new CreateCandidateRequest
     {
         Candidate = new Candidate
         {
             EmailAddress = candidate.RegistrationDetails.EmailAddress,
             FirstName = candidate.RegistrationDetails.FirstName,
             MiddleName = candidate.RegistrationDetails.MiddleNames,
             Surname = candidate.RegistrationDetails.LastName,
             DateOfBirth = candidate.RegistrationDetails.DateOfBirth.Date,
             AddressLine1 = candidate.RegistrationDetails.Address.AddressLine1,
             AddressLine2 = candidate.RegistrationDetails.Address.AddressLine2,
             AddressLine3 = candidate.RegistrationDetails.Address.AddressLine3,
             AddressLine4 = candidate.RegistrationDetails.Address.AddressLine4,
             TownCity = "N/A",
             Postcode = candidate.RegistrationDetails.Address.Postcode,
             LandlineTelephone = candidate.RegistrationDetails.PhoneNumber,
             MobileTelephone = string.Empty
         }
     });
 }
Ejemplo n.º 10
0
        public void Ok_CandidateIsLoggedInAndHasSavedSearches(int savedSearchCount)
        {
            // Arrange.
            var candidateId = Guid.NewGuid();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            var savedSearches = new Fixture()
                                .Build <SavedSearchViewModel>()
                                .CreateMany(savedSearchCount);

            candidateServiceProvider
            .Setup(p => p.GetSavedSearches(candidateId)).Returns(savedSearches);

            var candidate = new Domain.Entities.Candidates.Candidate
            {
                RegistrationDetails = new RegistrationDetails {
                    Address = new Address {
                        Postcode = "CANDIDATE POSTCODE"
                    }
                }
            };

            candidateServiceProvider
            .Setup(p => p.GetCandidate(candidateId)).Returns(candidate);

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

            // Act.
            var response = mediator.Index(candidateId, ApprenticeshipSearchMode.SavedSearches, false);

            // Assert.
            candidateServiceProvider.Verify(p => p.GetSavedSearches(candidateId), Times.Once);
            response.ViewModel.SavedSearches.Count().Should().Be(savedSearchCount);
            response.ViewModel.SavedSearches.Should().BeInDescendingOrder(each => each.DateCreated);
        }
Ejemplo n.º 11
0
        public IEnumerable <ApplicationStatusSummary> GetCandidateApplicationStatuses(Candidate candidate)
        {
            var context = new { candidateId = candidate.EntityId };

            try
            {
                _logger.Debug("Calling Legacy.GetCandidateInfo for candidate '{0}'", candidate.EntityId);

                var applicationStatuses = InternalGetCandidateApplicationStatuses(candidate);

                _logger.Debug("Candidate applications were successfully retrieved from Legacy.GetCandidateInfo ({0})", applicationStatuses.Count());

                return(applicationStatuses);
            }
            catch (DomainException e)
            {
                _logger.Error(e);
                throw;
            }
            catch (BoundaryException e)
            {
                _logger.Error(e, context);
                throw new DomainException(ErrorCodes.GetCandidateInfoServiceFailed, e, context);
            }
            catch (Exception e)
            {
                _logger.Error(e, context);
                throw;
            }
        }
Ejemplo n.º 12
0
        private IList <ApplicationStatusSummary> InternalGetCandidateApplicationStatuses(Candidate candidate)
        {
            var request = new GetCandidateInfoRequest
            {
                CandidateId = candidate.LegacyCandidateId
            };

            var response = default(GetCandidateInfoResponse);

            _service.Use("SecureService", client => response = client.GetCandidateInfo(request).GetCandidateInfoResponse);

            if (response == null || (response.ValidationErrors != null && response.ValidationErrors.Any()))
            {
                string message;

                if (response == null)
                {
                    message = "No response";
                }
                else
                {
                    message = string.Format("{0} validation error(s): {1}",
                                            response.ValidationErrors.Count(), JsonConvert.SerializeObject(response, Formatting.None));
                }

                throw new DomainException(ErrorCodes.GetCandidateInfoServiceFailed, new { message, candidateId = candidate.EntityId, legacyCandidateId = candidate.LegacyCandidateId });
            }

            return(_mapper.Map <CandidateApplication[], IEnumerable <ApplicationStatusSummary> >(response.CandidateApplications).ToList());
        }