public async Task HandleAsync_ProcessesNotificationsWithPipeline() { var notificationsToRelease = new MultiValueDictionary <NotificationBuffer, BufferedNotification>(); NotificationBuffer buffer1 = new NotificationBuffer(Guid.NewGuid(), bufferGovernor1.Id, notificationPipeline1.Id); inMemoryCrudRepository.Attach(buffer1); BufferedNotification notification1 = new BufferedNotification(Guid.NewGuid(), "Notification1", "{}", buffer1, DateTime.Today); notificationsToRelease.Add(buffer1, notification1); inMemoryCrudRepository.Attach(notification1); BufferedNotification notification2 = new BufferedNotification(Guid.NewGuid(), "Notification2", "{}", buffer1, DateTime.Today); notificationsToRelease.Add(buffer1, notification2); inMemoryCrudRepository.Attach(notification2); NotificationBuffer buffer2 = new NotificationBuffer(Guid.NewGuid(), bufferGovernor1.Id, notificationPipeline2.Id); inMemoryCrudRepository.Attach(buffer2); BufferedNotification notification3 = new BufferedNotification(Guid.NewGuid(), "Notification3", "{}", buffer2, DateTime.Today); notificationsToRelease.Add(buffer2, notification3); inMemoryCrudRepository.Attach(notification3); bufferGovernor1.SelectNotificationsForReleaseAsync(inMemoryCrudRepository) .Returns(notificationsToRelease); var job = new ProcessBufferedNotificationsJob(Clock.Current.Now); await sut.HandleAsync(job, CancellationToken.None); notificationPipeline1.Received(1).ProcessNotificationsAsync( Arg.Is <IReadOnlyCollection <INotification> >( x => x.Count() == 2 && x.Count(y => ((TestNotification)y).TypeName == "Notification1") == 1 && x.Count(y => ((TestNotification)y).TypeName == "Notification2") == 1)); notificationPipeline2.Received(1).ProcessNotificationsAsync( Arg.Is <IReadOnlyCollection <INotification> >( x => x.Count() == 1 && x.Count(y => ((TestNotification)y).TypeName == "Notification3") == 1)); }
public async Task HandleAsync_RemovesNotificationFromRepository() { var notificationsToRelease = new MultiValueDictionary <NotificationBuffer, BufferedNotification>(); NotificationBuffer buffer1 = new NotificationBuffer(Guid.NewGuid(), bufferGovernor1.Id, notificationPipeline1.Id); inMemoryCrudRepository.Attach(buffer1); BufferedNotification notification1 = new BufferedNotification(Guid.NewGuid(), "Notification1", "{}", buffer1, DateTime.Today); notificationsToRelease.Add(buffer1, notification1); inMemoryCrudRepository.Attach(notification1); bufferGovernor1.SelectNotificationsForReleaseAsync(inMemoryCrudRepository) .Returns(notificationsToRelease); var job = new ProcessBufferedNotificationsJob(Clock.Current.Now); await sut.HandleAsync(job, CancellationToken.None); Assert.DoesNotContain(notification1, inMemoryCrudRepository.FindAll <BufferedNotification>()); }