public void ShouldQueueCandidatesForMobileVerificationReminders() { // Arrange. var processor = new CandidateProcessor( _mockLogger.Object, _mockConfigurationService.Object, _mockMessageBus.Object, _mockUserReadRepository.Object, _mockCandidateReadRepository.Object); var candidates = new Fixture() .Build <Domain.Entities.Candidates.Candidate>() .CreateMany(5) .ToList(); var candidateIds = new List <Guid>(); _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); candidateIds.Count().Should().Be(candidates.Count()); candidateIds.Should().BeEquivalentTo(candidates.Select(each => each.EntityId)); }
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 ShouldQueueCandidatesPendingActivationDormantOrDeletion() { // Arrange. var processor = new CandidateProcessor( _mockLogger.Object, _mockConfigurationService.Object, _mockMessageBus.Object, _mockUserReadRepository.Object, _mockCandidateReadRepository.Object); var users = new Fixture() .Build <User>() .CreateMany(5) .ToList(); var candidateIds = new List <Guid>(); var userStatuses = new[] { UserStatuses.PendingActivation, UserStatuses.PendingDeletion }; _mockUserReadRepository.Setup(mock => mock.GetUsersWithStatus(userStatuses)) .Returns(users.Select(u => u.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); candidateIds.Count().Should().Be(users.Count()); candidateIds.Should().BeEquivalentTo(users.Select(each => each.EntityId)); }