public async Task DequeueAndSendWebHooks_GetsMessagesAndSubmitsToSender(int[] count) { // Arrange int index = 0; _storageMock.Setup(s => s.GetMessagesAsync(StorageManagerMock.CloudQueue, AzureWebHookDequeueManager.MaxDequeuedMessages, _messageTimeout)) .Returns(() => { int cnt = index > count.Length ? 0 : count[index++]; if (cnt < 0) { throw new Exception("Catch this!"); } var result = StorageManagerMock.CreateQueueMessages(cnt); return(Task.FromResult(result)); }) .Callback(() => { if (index > count.Length) { _tokenSource.Cancel(); } }) .Verifiable(); _dequeueManager = new AzureWebHookDequeueManagerMock(this, storageManager: _storageMock.Object, sender: _senderMock.Object); // Act await _dequeueManager.DequeueAndSendWebHooks(_tokenSource.Token); // Assert int expected = count.Where(i => i > 0).Count(); _senderMock.Verify(s => s.SendWebHookWorkItemsAsync(It.IsAny <IEnumerable <WebHookWorkItem> >()), Times.Exactly(expected)); }
public async Task DequeueAndSendWebHooks_GetsMessagesAndSubmitsToSender(int[] count) { // Arrange int index = 0; _storageMock.Setup(s => s.GetMessagesAsync(StorageManagerMock.CloudQueue, AzureWebHookDequeueManager.MaxDequeuedMessages, _messageTimeout)) .Returns(() => { int cnt = index > count.Length ? 0 : count[index++]; if (cnt < 0) { throw new Exception("Catch this!"); } var result = StorageManagerMock.CreateQueueMessages(cnt); return Task.FromResult(result); }) .Callback(() => { if (index > count.Length) { _tokenSource.Cancel(); } }) .Verifiable(); _dequeueManager = new AzureWebHookDequeueManagerMock(this, storageManager: _storageMock.Object, sender: _senderMock.Object); // Act await _dequeueManager.DequeueAndSendWebHooks(_tokenSource.Token); // Assert int expected = count.Where(i => i > 0).Count(); _senderMock.Verify(s => s.SendWebHookWorkItemsAsync(It.IsAny<IEnumerable<WebHookWorkItem>>()), Times.Exactly(expected)); }