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));
        }