Example #1
0
            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);
            }