public async Task CompletingPeekLockMessageCompletesTheAssociatedBrokeredMessage() { Mock <IMessageDeserializer <TestPeekLockMessage> > mockTestPeekLockMessageDeserializer = new Mock <IMessageDeserializer <TestPeekLockMessage> >(); mockTestPeekLockMessageDeserializer.Setup(md => md.GetTypeName()) .Returns(typeof(TestPeekLockMessage).Name); TestPeekLockMessage testPeekLockMessage = new TestPeekLockMessage(); mockTestPeekLockMessageDeserializer.Setup(md => md.Deserialize(It.IsAny <Stream>())) .Returns(testPeekLockMessage); IObservable <BrokeredMessage> brokeredMessages = Observable.Create <BrokeredMessage>(o => { o.OnNext(new BrokeredMessage { Properties = { { MessagePropertyNames.TypeName, typeof(TestPeekLockMessage).Name } } }); o.OnCompleted(); return(Disposable.Empty); }); Mock <IMessagePeekLockControl> mockBrokeredMessagePeekLockControl = new Mock <IMessagePeekLockControl>(); Mock <IMessagePeekLockControlProvider> mockPeekLockControlProvider = new Mock <IMessagePeekLockControlProvider>(); mockPeekLockControlProvider.Setup(bmplcp => bmplcp.GetMessagePeekLockControl(testPeekLockMessage)) .Returns(mockBrokeredMessagePeekLockControl.Object); MessagePeekLockControlProvider.Use(mockPeekLockControlProvider.Object); MessageSource <TestPeekLockMessage> messageSource = new MessageSource <TestPeekLockMessage>(brokeredMessages, new[] { mockTestPeekLockMessageDeserializer.Object }, Mock.Of <IMessageBrokeredMessageTable>()); TestPeekLockMessage message = await messageSource.Messages.SingleOrDefaultAsync(); IMessagePeekLockControl messagePeekLockControl = message.GetPeekLockControl(); messagePeekLockControl.Should().NotBeNull(); await messagePeekLockControl.CompleteAsync(); mockBrokeredMessagePeekLockControl.Verify(bmplc => bmplc.CompleteAsync(), Times.Once()); }
public async Task CompletingPeekLockMessageCompletesTheAssociatedBrokeredMessage() { Mock<IMessageDeserializer<TestPeekLockMessage>> mockTestPeekLockMessageDeserializer = new Mock<IMessageDeserializer<TestPeekLockMessage>>(); mockTestPeekLockMessageDeserializer.Setup(md => md.GetTypeName()) .Returns(typeof(TestPeekLockMessage).Name); TestPeekLockMessage testPeekLockMessage = new TestPeekLockMessage(); mockTestPeekLockMessageDeserializer.Setup(md => md.Deserialize(It.IsAny<Stream>())) .Returns(testPeekLockMessage); BrokeredMessage brokeredMessageThatShouldBeIgnored = new BrokeredMessage() { Properties = { { MessagePropertyNames.TypeName, "SomeMessageTypeThatIDontWant" } } }; BrokeredMessage brokeredMessageThatShouldBeReceived = new BrokeredMessage() { Properties = { { MessagePropertyNames.TypeName, typeof(TestPeekLockMessage).Name } } }; IObservable<BrokeredMessage> brokeredMessages = Observable.Create<BrokeredMessage>(o => { o.OnNext(brokeredMessageThatShouldBeIgnored); o.OnNext(brokeredMessageThatShouldBeReceived); o.OnCompleted(); return Disposable.Empty; }); Mock<IMessagePeekLockControl> brokeredMessagePeekLockControlForMessageThatShouldBeIgnored = new Mock<IMessagePeekLockControl>(); Mock<IMessagePeekLockControl> brokeredMessagePeekLockControlForMessageThatShouldBeReceived = new Mock<IMessagePeekLockControl>(); Mock<IBrokeredMessagePeekLockControlProvider> mockPeekLockControlProvider = new Mock<IBrokeredMessagePeekLockControlProvider>(); mockPeekLockControlProvider.Setup(bmplcp => bmplcp.ProvidePeekLockControl(brokeredMessageThatShouldBeIgnored)) .Returns(brokeredMessagePeekLockControlForMessageThatShouldBeIgnored.Object); mockPeekLockControlProvider.Setup(bmplcp => bmplcp.ProvidePeekLockControl(brokeredMessageThatShouldBeReceived)) .Returns(brokeredMessagePeekLockControlForMessageThatShouldBeReceived.Object); MessageSource<TestPeekLockMessage> messageSource = new MessageSource<TestPeekLockMessage>(brokeredMessages, new[] { mockTestPeekLockMessageDeserializer.Object }, mockPeekLockControlProvider.Object); TestPeekLockMessage message = await messageSource.Messages.SingleOrDefaultAsync(); IMessagePeekLockControl messagePeekLockControl = message.GetPeekLockControl(); messagePeekLockControl.Should().NotBeNull(); await messagePeekLockControl.CompleteAsync(); brokeredMessagePeekLockControlForMessageThatShouldBeIgnored.Verify(bmplc => bmplc.CompleteAsync(), Times.Never); brokeredMessagePeekLockControlForMessageThatShouldBeReceived.Verify(bmplc => bmplc.CompleteAsync(), Times.Once); }