public void DoDeletesMessageWhenRunIsSuccessfull() { var message = new MessageStub(); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); mockQueue.Setup(q => q.GetMessages(1)).Returns(() => new[] { message }); var command = new Mock <ICommand <MessageStub> >(); command.Setup(c => c.Run(It.IsAny <MessageStub>())).Returns(true); var queueHandler = new QueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); mockQueue.Verify(q => q.DeleteMessage(message)); }
public void DoCallsPostRunForBatch() { var message1 = new MessageStub(); var message2 = new MessageStub(); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); var queue = new Queue <IEnumerable <MessageStub> >(); queue.Enqueue(new[] { message1, message2 }); mockQueue.Setup(q => q.GetMessages(32)).Returns(() => queue.Count > 0 ? queue.Dequeue() : new MessageStub[] { }); var command = new Mock <IBatchCommand <MessageStub> >(); var queueHandler = new BatchProcessingQueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); command.Verify(c => c.PostRun(), Times.Once()); }
public void DoRunsGivenCommandForEachMessage() { var message1 = new MessageStub(); var message2 = new MessageStub(); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); mockQueue.Setup(q => q.GetMessages(1)).Returns(() => new[] { message1, message2 }); var command = new Mock <ICommand <MessageStub> >(); var queueHandler = new QueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); command.Verify(c => c.Run(It.IsAny <MessageStub>()), Times.Exactly(2)); command.Verify(c => c.Run(message1)); command.Verify(c => c.Run(message2)); }
public void DoDeletesMessageWhenRunIsSuccessfull() { var message = new MessageStub(); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); var queue = new Queue <IEnumerable <MessageStub> >(); queue.Enqueue(new[] { message }); mockQueue.Setup(q => q.GetMessages(32)).Returns(() => queue.Count > 0 ? queue.Dequeue() : new MessageStub[] { }); var command = new Mock <IBatchCommand <MessageStub> >(); command.Setup(c => c.Run(It.IsAny <MessageStub>())).Returns(true); var queueHandler = new BatchProcessingQueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); mockQueue.Verify(q => q.DeleteMessage(message)); }
public void DoDeletesMessageWhenRunIsNotSuccessfullAndMessageHasBeenDequeuedMoreThanFiveTimes() { var message = new MessageStub(); message.SetMessageReference(new CloudQueueMessageStub(string.Empty)); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); mockQueue.Setup(q => q.GetMessages(1)).Returns(() => new[] { message }); var command = new Mock <ICommand <MessageStub> >(); command.Setup(c => c.Run(It.IsAny <MessageStub>())).Throws(new Exception("This will cause the command to fail")); var queueHandler = new QueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); mockQueue.Verify(q => q.DeleteMessage(message)); }
public void DoRunsGivenCommandForEachMessage() { var message1 = new MessageStub(); var message2 = new MessageStub(); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); var queue = new Queue <IEnumerable <MessageStub> >(); queue.Enqueue(new[] { message1, message2 }); mockQueue.Setup(q => q.GetMessages(32)).Returns(() => queue.Count > 0 ? queue.Dequeue() : new MessageStub[] { }); var command = new Mock <IBatchCommand <MessageStub> >(); var queueHandler = new BatchProcessingQueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); command.Verify(c => c.Run(It.IsAny <MessageStub>()), Times.Exactly(2)); command.Verify(c => c.Run(message1)); command.Verify(c => c.Run(message2)); }
public void DoDeletesMessageWhenRunIsNotSuccessfullAndMessageHasBeenDequeuedMoreThanFiveTimes() { using (ShimsContext.Create()) { var message = new MessageStub(); var mockCloudQueueMessage = new ShimCloudQueueMessage(); mockCloudQueueMessage.DequeueCountGet = () => 6; message.SetMessageReference(mockCloudQueueMessage); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); mockQueue.Setup(q => q.GetMessagesAsync(1)).ReturnsAsync(new[] { message }); var command = new Mock <ICommand <MessageStub> >(); command.Setup(c => c.Run(It.IsAny <MessageStub>())).Throws(new Exception("This will cause the command to fail")); var queueHandler = new QueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); mockQueue.Verify(q => q.DeleteMessageAsync(message)); } }
[Ignore]//Hieu: should not run this time public void DoDeletesMessageWhenRunIsNotSuccessfullAndMessageHasBeenDequeuedMoreThanFiveTimes() { var message = new MessageStub(); var cloudQueueStub = new CloudQueueMessage(string.Empty); //var msgStub = new CloudQueueMessageStub(string.Empty); message.SetMessageReference(cloudQueueStub); var mockQueue = new Mock <IAzureQueue <MessageStub> >(); var queue = new Queue <IEnumerable <MessageStub> >(); queue.Enqueue(new[] { message }); mockQueue.Setup(q => q.GetMessages(32)).Returns(() => queue.Count > 0 ? queue.Dequeue() : new MessageStub[] { }); var command = new Mock <IBatchCommand <MessageStub> >(); command.Setup(c => c.Run(It.IsAny <MessageStub>())).Throws(new Exception("This will cause the command to fail")); var queueHandler = new BatchProcessingQueueHandlerStub(mockQueue.Object); queueHandler.Do(command.Object); //Hieu: since DequeueCount is readonly properties, have no solution so far for dequeued more than 5 times. mockQueue.Verify(q => q.DeleteMessage(message)); }