public void MessageWithValidFormatShouldInvokeMessageHandler() { // arrange var messageId = 123; var parsedMessage = new Message(messageId, "message"); _messageParser.Setup(_ => _.TryParse(It.IsAny <string>(), out parsedMessage)) .Returns(true); // simulation of message in valid format _messageHandler.Setup(_ => _.OnExpectedMessage(It.IsAny <string>(), It.IsAny <Message>())); var subscriber = new ReliableSubscriberTraceable(_redis.GetConnection(), _messageParser.Object, null); var publisher = _redis.GetConnection().GetSubscriber(); // standard, not-reliable publisher // act subscriber.Subscribe("testChannel", _messageHandler.Object); publisher.Publish("testChannel", $"{messageId}:message"); // simulation of sending messageId of type long Thread.Sleep(50); // assert Assert.Null(subscriber.LastException); Assert.Equal(0, subscriber.ExceptionsCount); _messageParser.Verify(_ => _.TryParse($"{messageId}:message", out parsedMessage), Times.Once); _messageHandler.Verify(_ => _.OnExpectedMessage("testChannel", new Message(messageId, "message")), Times.Once); }
public void ReceivingMessageInInvalidFormatShouldNotInvokeMessageHandler() { // arrange var log = new Mock <ILoggerFactory>(MockBehavior.Strict); log.Setup(_ => _.CreateLogger(It.IsAny <string>()).Log( It.IsAny <LogLevel>(), It.IsAny <EventId>(), It.IsAny <object>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >())); Message parsedMessage; _messageParser.Setup(_ => _.TryParse(It.IsAny <string>(), out parsedMessage)) .Returns(false); // simulation of message in invalid format var subscriber = new ReliableSubscriberTraceable(_redis.GetConnection(), _messageParser.Object, log.Object); var publisher = _redis.GetConnection().GetSubscriber(); // standard, not-reliable publisher // act subscriber.Subscribe("testChannel", _messageHandler.Object); publisher.Publish("testChannel", "message"); Thread.Sleep(50); // assert Assert.Null(subscriber.LastException); Assert.Equal(0, subscriber.ExceptionsCount); _messageParser.Verify(_ => _.TryParse("message", out parsedMessage), Times.Once); log.Verify(_ => _.CreateLogger(It.IsAny <string>()).Log( LogLevel.Warning, It.IsAny <EventId>(), It.IsAny <object>(), null, It.IsAny <Func <object, Exception, string> >()), Times.Once); }