public async Task DequeueCallsProcessorWithLargeMessage()
{
// Arrange
var didDeque = false;
var blob = new Mock<IBlob>();
_blobRepository.Setup(x => x.Get("hello")).Returns(blob.Object);
var queue = new LargeMessageQueue<TestQueueItem>(_queueSerializerMock.Object, _referenceQueueMock.Object, _blobRepository.Object, _loggerMock.Object, null);
var item = new TestQueueItem { Name = "Zaphod" };
var reference = new LargeMessageReference {BlobReference = "hello"};
//var referenceQueueItem = new Mock<IQueueItem>();
var referenceItem = new Mock<IQueueItem<LargeMessageReference>>();
referenceItem.SetupGet(x => x.Item).Returns(reference);
_referenceQueueMock.Setup(
x => x.DequeueAsync(It.IsAny<Func<IQueueItem<LargeMessageReference>, Task<bool>>>()))
.Returns(Task.FromResult(0))
.Callback((Func<IQueueItem<LargeMessageReference>,Task<bool>> func) =>
{
func(referenceItem.Object);
});
// Act
await queue.DequeueAsync(tqi =>
{
didDeque = true;
return Task.FromResult(true);
});
// Assert
Assert.IsTrue(didDeque);
}
}