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(); }
public void ShouldNotQueueCandidateTwice() { // Arrange. var processor = new CandidateProcessor( _mockLogger.Object, _mockConfigurationService.Object, _mockMessageBus.Object, _mockUserReadRepository.Object, _mockCandidateReadRepository.Object); var users = new Fixture() .Build <User>() .CreateMany(2) .ToList(); var candidates = new Fixture() .Build <Domain.Entities.Candidates.Candidate>() .CreateMany(3) .ToList(); users.First().EntityId = candidates.Last().EntityId = Guid.NewGuid(); var candidateIds = new List <Guid>(); var userStatuses = new[] { UserStatuses.PendingActivation, UserStatuses.PendingDeletion }; var uniqueCandidateIds = candidates .Select(each => each.EntityId) .Union(users.Select(each => each.EntityId)) .ToList(); _mockUserReadRepository.Setup(mock => mock.GetUsersWithStatus(userStatuses)) .Returns(users.Select(u => u.EntityId)); _mockCandidateReadRepository.Setup(mock => mock.GetCandidatesWithPendingMobileVerification()) .Returns(candidates.Select(c => c.EntityId)); _mockMessageBus.Setup(mock => mock.PublishMessages(It.IsAny <IEnumerable <CandidateHousekeeping> >())) .Callback <IEnumerable <CandidateHousekeeping> >(messages => candidateIds.AddRange(messages.Select(cid => cid.CandidateId))); // Act. processor.QueueCandidates(); // Assert. _mockMessageBus.Verify(mock => mock.PublishMessages(It.IsAny <IEnumerable <CandidateHousekeeping> >()), Times.Once); uniqueCandidateIds.Count().Should().Be(users.Count() + candidates.Count() - 1); candidateIds.Count().Should().Be(uniqueCandidateIds.Count()); candidateIds.Should().BeEquivalentTo(uniqueCandidateIds); }
public void PostcodeAndLine1SingleResult_PASS() { //Arrange var input = new Fixture().Build <ConciseEmployerStructure>().Create(); var foundAddressList = new Fixture().Build <PostalAddress>() .With(x => x.ValidationSourceCode, "PCA").CreateMany(1); //the single result _mockPostalAddressSearchService.Setup( m => m.GetValidatedAddress(It.IsNotNull <string>(), It.IsNotNull <string>())).Returns(foundAddressList); //Act var result = _serviceUnderTest.GetVerifiedOrganisationSummary(input); //Assert Assert.AreEqual(foundAddressList.First().ValidationSourceKeyValue, result.Address.ValidationSourceKeyValue); Assert.AreEqual("PCA", result.Address.ValidationSourceCode); }
public void ShouldQueueUniqueCommunicationsForHousekeeping() { // Arrange. var statusAlertHousekeepingRequests = new Fixture() .Build <CommunicationHousekeepingRequest>() .CreateMany(3) .ToList(); _mockApplicationStatusAlertCommunicationHousekeeper.Setup(mock => mock .GetHousekeepingRequests()) .Returns(statusAlertHousekeepingRequests); var expiringDraftAlertHousekeepingRequests = new Fixture() .Build <CommunicationHousekeepingRequest>() .CreateMany(5) .ToList(); _mockExpiringDraftApplicationAlertCommunicationHousekeeper.Setup(mock => mock .GetHousekeepingRequests()) .Returns(expiringDraftAlertHousekeepingRequests); var savedSearchAlertHousekeepingRequests = new Fixture() .Build <CommunicationHousekeepingRequest>() .CreateMany(7) .ToList(); _mockSavedSearchAlertCommunicationHousekeeper.Setup(mock => mock .GetHousekeepingRequests()) .Returns(savedSearchAlertHousekeepingRequests); statusAlertHousekeepingRequests.First().CommunicationId = expiringDraftAlertHousekeepingRequests.First().CommunicationId = savedSearchAlertHousekeepingRequests.First().CommunicationId; // Act. var count = _housekeeper.QueueHousekeepingRequests(); // Assert. var expectedUniqueCount = statusAlertHousekeepingRequests.Count + expiringDraftAlertHousekeepingRequests.Count + savedSearchAlertHousekeepingRequests.Count - 2; count.Should().Be(expectedUniqueCount); }
public void ShouldNotQueueDuplicateApplicationsForHousekeeping() { // Arrange. var draftApplicationHousekeepingRequests = new Fixture() .Build <ApplicationHousekeepingRequest>() .CreateMany(3) .ToList(); var submittedApplicationHousekeepingRequests = new Fixture() .Build <ApplicationHousekeepingRequest>() .CreateMany(2) .ToList(); draftApplicationHousekeepingRequests.First().ApplicationId = submittedApplicationHousekeepingRequests.Last().ApplicationId; var queue = new List <ApplicationHousekeepingRequest>(); _mockServiceBus.Setup(mock => mock.PublishMessages(It.IsAny <IEnumerable <ApplicationHousekeepingRequest> >())) .Callback <IEnumerable <ApplicationHousekeepingRequest> >(queue.AddRange).Returns <IEnumerable <ApplicationHousekeepingRequest> >(messages => messages.Count()); _mockDraftApplicationForExpiredVacancyHousekeeper .Setup(mock => mock .GetHousekeepingRequests()) .Returns(draftApplicationHousekeepingRequests); _mockSubmittedApplicationHousekeeper .Setup(mock => mock .GetHousekeepingRequests()) .Returns(submittedApplicationHousekeepingRequests); // Act. var count = _housekeeper.QueueHousekeepingRequests(); var expectedCount = draftApplicationHousekeepingRequests.Count + submittedApplicationHousekeepingRequests.Count - 1; // Assert. _mockDraftApplicationForExpiredVacancyHousekeeper.Verify(mock => mock.GetHousekeepingRequests(), Times.Once); _mockSubmittedApplicationHousekeeper.Verify(mock => mock.GetHousekeepingRequests(), Times.Once); count.Should().Be(expectedCount); queue.ShouldAllBeEquivalentTo(draftApplicationHousekeepingRequests.Union(submittedApplicationHousekeepingRequests)); }
static void Main(string[] args) { var factory = new FeedManagerFactory(); var feedItems = new Fixture().CreateMany <FeedItem>(10); // for getting errors feedItems.First().PrincipalId = null; feedItems.Last().SourceAccountId = null; var deltaOneManager = factory.CreateFeedManager(FeedType.DeltaOne); deltaOneManager.Process(feedItems); var emManager = factory.CreateFeedManager(FeedType.Em); emManager.Process(feedItems); Console.ReadKey(); }
public async Task DynamoDbService_Should_List_Records_In_A_DynamoDb_Table() { var tableName = Guid.NewGuid().ToString(); const int recordCount = 5; var dynamoDbOperationConfig = new DynamoDBOperationConfig() { OverrideTableName = tableName }; await CreateTestTable(tableName); Table targetTable = DynamoDbContext.GetTargetTable <MovieEntity>(dynamoDbOperationConfig); IList <MovieEntity> movieEntities = new Fixture().CreateMany <MovieEntity>(recordCount).ToList(); List <Document> documents = movieEntities .Select(entity => { string serialize = JsonSerializer.Serialize(entity); Document item = Document.FromJson(serialize); return(item); }) .ToList(); foreach (Document document in documents) { await targetTable.PutItemAsync(document); } dynamoDbOperationConfig.IndexName = TestConstants.MoiveTableMovieIdGsi; List <MovieEntity> returnedMovieEntities = await DynamoDbContext.ScanAsync <MovieEntity>(new List <ScanCondition>(), dynamoDbOperationConfig).GetRemainingAsync(); Assert.NotNull(movieEntities); Assert.NotEmpty(movieEntities); Assert.Equal(recordCount, movieEntities.Count); Assert.All(returnedMovieEntities, movieEntity => { MovieEntity entity = movieEntities.First(e => e.MovieId == movieEntity.MovieId); Assert.True(movieEntity.DeepEquals(entity)); }); }
public void TagShouldReturnAllSessionsWithThatTag() { const int numberOfSessions = 5; var sessionsReturnedByRepo = new Fixture() .Build <SessionModel>() .With(s => s.Links, new List <LinkModel>()).With(s => s.Id, 1) .CreateMany(numberOfSessions) .ToList(); var sessionsController = new SessionsControllerBuilder() .Returning(sessionsReturnedByRepo).Build(); var response = sessionsController.Get(sessionsReturnedByRepo.First().Tags.First().Name); var okResult = (OkNegotiatedContentResult <List <SessionModel> >)response; okResult.Content.Should().HaveCount(1); }
public void PostcodeAloneManyResults_PASS(int findCount) { //Arrange var input = new Fixture().Build <ConciseEmployerStructure>() .With(x => x.Address, new BSaddressStructure() { PostCode = "FAKE", PAON = null }).Create(); //not providing addressLine1, so should not try to obtain address with this var foundAddressList = new Fixture().Build <PostalAddress>() .With(x => x.ValidationSourceCode, "PCA").CreateMany(findCount).ToList(); _mockPostalAddressSearchService.Setup( m => m.GetValidatedAddresses(It.IsNotNull <string>())).Returns(foundAddressList); //Act var result = _serviceUnderTest.GetVerifiedOrganisationSummary(input); //Assert _mockPostalAddressSearchService.Verify(m => m.GetValidatedAddress(It.IsAny <string>(), It.IsAny <string>()), Times.Never); Assert.AreEqual(foundAddressList.First().ValidationSourceKeyValue, result.Address.ValidationSourceKeyValue); Assert.AreEqual("PCA", result.Address.ValidationSourceCode); }
public async Task ShallRemoveDevicesWithFilter() { //arrange var devicesGenerator = new Fixture().Create<Generator<Device>>(); fixture.Customize<Device>(c => c.Without(x => x.State)); fixture.Customize<IEnumerable<Device>>( c => c.FromFactory( () => Enum.GetValues(typeof(DeviceState)).Cast<DeviceState>() .Select(s => devicesGenerator.First(u => u.State == s)))); var devices = fixture.Create<IEnumerable<Device>>(); // returns devices with all supported states Expression<Func<Device, bool>> disabledDevicesFilter = x => x.State == DeviceState.Disabled; using (var db = this.dbFactory.Open()) { foreach (var device in devices) { db.Insert(device); } var totalCount = await db.CountAsync<Device>(); Assert.AreEqual(devices.Count(), totalCount); //act var removedCount = await this.cut.DeleteAsync(disabledDevicesFilter); //assert Assert.AreEqual(1, removedCount); var remainingDevices = db.Select<Device>(); Assert.IsFalse(remainingDevices .Any(x => x.State == DeviceState.Disabled)); } }
public void ApproveMultilocationVacancy(int locationAddressCount) { //Arrange var vacancyReferenceNumber = 1; var parentVacancyId = 2; var locationAddresses = new Fixture().Build <VacancyLocation>() .CreateMany(locationAddressCount).ToList(); var vacancy = new Fixture().Build <Vacancy>() .With(x => x.VacancyReferenceNumber, vacancyReferenceNumber) .With(x => x.IsEmployerLocationMainApprenticeshipLocation, false) .With(x => x.VacancyId, parentVacancyId) .Create(); var vacanyLockingService = new Mock <IVacancyLockingService>(); var vacancyPostingService = new Mock <IVacancyPostingService>(); vacancyPostingService.Setup(r => r.GetVacancyByReferenceNumber(vacancyReferenceNumber)) .Returns(vacancy); vacancyPostingService.Setup(s => s.GetVacancyLocations(vacancy.VacancyId)).Returns(locationAddresses); //set up so that a bunch of vacancy reference numbers are created that are not the same as the one supplied above var fixture = new Fixture { RepeatCount = locationAddressCount - 1 }; var vacancyNumbers = fixture.Create <List <int> >(); vacancyPostingService.Setup(r => r.GetNextVacancyReferenceNumber()).ReturnsInOrder(vacancyNumbers.ToArray()); vacanyLockingService.Setup(vls => vls.IsVacancyAvailableToQABy(It.IsAny <string>(), It.IsAny <Vacancy>())) .Returns(true); var vacancyProvider = new VacancyProviderBuilder() .With(vacancyPostingService) .With(vacanyLockingService) .Build(); //Act vacancyProvider.ApproveVacancy(vacancyReferenceNumber); //Assert //get the submitted vacancy once vacancyPostingService.Verify(r => r.GetVacancyByReferenceNumber(vacancyReferenceNumber), Times.Once); //save the original vacancy with a status of Live and itself as a parent vacancy vacancyPostingService.Verify( r => r.UpdateVacancy( It.Is <Vacancy>( av => av.VacancyReferenceNumber == vacancyReferenceNumber && av.Status == VacancyStatus.Live && av.ParentVacancyId == parentVacancyId && av.IsEmployerLocationMainApprenticeshipLocation.Value && av.Address.Postcode == locationAddresses.First().Address.Postcode&& av.Address.AddressLine1 == locationAddresses.First().Address.AddressLine1&& av.Address.AddressLine2 == locationAddresses.First().Address.AddressLine2&& av.Address.AddressLine3 == locationAddresses.First().Address.AddressLine3&& av.Address.AddressLine4 == locationAddresses.First().Address.AddressLine4&& av.Address.AddressLine5 == locationAddresses.First().Address.AddressLine5&& av.NumberOfPositions == locationAddresses.First().NumberOfPositions))); //save new vacancies with a status of Live foreach (var number in vacancyNumbers) { vacancyPostingService.Verify(r => r.CreateVacancy(It.Is <Vacancy>(av => av.VacancyReferenceNumber == number && av.Status == VacancyStatus.Live && av.ParentVacancyId == parentVacancyId && av.IsEmployerLocationMainApprenticeshipLocation .Value)), Times.Once); } //save new vacancies with only one of the new addresses and the position count foreach (var location in locationAddresses.Skip(1)) { vacancyPostingService.Verify(r => r.CreateVacancy(It.Is <Vacancy>(av => av.Address.Postcode == location.Address.Postcode && av.Address.AddressLine1 == location.Address.AddressLine1 && av.Address.AddressLine2 == location.Address.AddressLine2 && av.Address.AddressLine3 == location.Address.AddressLine3 && av.Address.AddressLine4 == location.Address.AddressLine4 && av.Address.AddressLine5 == location.Address.AddressLine5 && av.NumberOfPositions == location.NumberOfPositions))); } //save the submitted vacancy once vacancyPostingService.Verify(r => r.UpdateVacancy(It.IsAny <Vacancy>()), Times.Once); //Create each child vacancy once vacancyPostingService.Verify(r => r.CreateVacancy(It.IsAny <Vacancy>()), Times.Exactly(locationAddressCount - 1)); vacancyPostingService.Verify(s => s.DeleteVacancyLocationsFor(vacancy.VacancyId)); }