public void NewResults()
        {
            var candidateId          = Guid.NewGuid();
            var candidateSavedSearch = new CandidateSavedSearches {
                CandidateId = candidateId
            };

            var existingSearchResults = new ApprenticeshipSearchResultsBuilder().WithResultCount(2).Build();
            var dateProcessed         = new DateTime(2015, 01, 01);
            var savedSearches         = new Fixture().Build <SavedSearch>()
                                        .With(s => s.AlertsEnabled, true)
                                        .With(s => s.LastResultsHash, existingSearchResults.Results.GetResultsHash())
                                        .With(s => s.DateProcessed, dateProcessed)
                                        .CreateMany(1).ToList();

            var savedSearchReadRepository = new Mock <ISavedSearchReadRepository>();

            savedSearchReadRepository.Setup(r => r.GetForCandidate(candidateId)).Returns(savedSearches);
            var userReadRepository = new Mock <IUserReadRepository>();

            userReadRepository.Setup(r => r.Get(candidateId)).Returns(new UserBuilder(candidateId).Activated(true).Build);
            var candidateReadRepository = new Mock <ICandidateReadRepository>();

            candidateReadRepository.Setup(r => r.Get(candidateId)).Returns(new CandidateBuilder(candidateId).EnableSavedSearchAlertsViaEmailAndText(true).Build);
            var vacancySearchProvider = new Mock <IVacancySearchProvider <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters> >();

            vacancySearchProvider.Setup(p => p.FindVacancies(It.IsAny <ApprenticeshipSearchParameters>())).Returns(new ApprenticeshipSearchResultsBuilder().WithResultCount(3).Build);
            var savedSearchAlertRepository    = new Mock <ISavedSearchAlertRepository>();
            SavedSearchAlert savedSearchAlert = null;

            savedSearchAlertRepository.Setup(r => r.Save(It.IsAny <SavedSearchAlert>())).Callback <SavedSearchAlert>(a => { savedSearchAlert = a; });
            var         savedSearchWriteRepository = new Mock <ISavedSearchWriteRepository>();
            SavedSearch savedSearch = null;

            savedSearchWriteRepository.Setup(r => r.Save(It.IsAny <SavedSearch>())).Callback <SavedSearch>(s => { savedSearch = s; });
            var processor = new SavedSearchProcessorBuilder().With(savedSearchReadRepository).With(userReadRepository).With(candidateReadRepository).With(vacancySearchProvider).With(savedSearchAlertRepository).With(savedSearchWriteRepository).Build();

            processor.ProcessCandidateSavedSearches(candidateSavedSearch);

            savedSearchWriteRepository.Verify(r => r.Save(It.IsAny <SavedSearch>()), Times.Once);
            savedSearch.Should().NotBeNull();
            savedSearch.LastResultsHash.Should().NotBeNullOrEmpty();
            savedSearch.DateProcessed.HasValue.Should().BeTrue();
            savedSearch.DateProcessed.Should().BeAfter(dateProcessed);
            savedSearchAlertRepository.Verify(r => r.GetUnsentSavedSearchAlert(It.IsAny <SavedSearch>()), Times.Once);
            savedSearchAlertRepository.Verify(r => r.Save(It.IsAny <SavedSearchAlert>()), Times.Once);
            savedSearchAlert.Should().NotBeNull();
            savedSearchAlert.Parameters.Should().Be(savedSearches.First());
            savedSearchAlert.Results.Should().NotBeNull();
            var results = savedSearchAlert.Results.ToList();

            results.Count.Should().Be(3);
            savedSearchAlert.BatchId.HasValue.Should().BeFalse();
            savedSearchAlert.SentDateTime.HasValue.Should().BeFalse();
        }
コード例 #2
0
 private string FormatSearchUrl(SavedSearchAlert savedSearchAlert)
 {
     return(string.Format("{0}{1}/{2}", HttpsScheme, _siteDomainName, savedSearchAlert.Parameters.SearchUrl().Value));
 }