public void TryGetMessage_NullOptions_ThrowsArgumentNull()
        {
            var consumer = Substitute.For <IKafkaConsumer>();

            var sut = new KafkaBlockingRawMessageReader(consumer);

            Assert.Throws <ArgumentNullException>(() => sut.TryGetMessage(out var _, null));
        }
        public void Dispose_DisposesKafkaConsumer()
        {
            var consumer = Substitute.For <IKafkaConsumer>();
            var sut      = new KafkaBlockingRawMessageReader(consumer);

            sut.Dispose();

            consumer.Received(1).Dispose();
        }
        public void TryGetMessage_ReturnsConsumerMessage(byte[] expectedMessage, string topic)
        {
            // Arrange
            var options = new KafkaOptions();

            var consumer = Substitute.For <IKafkaConsumer>();

            consumer.Consume(out _, Arg.Any <TimeSpan>())
            .Returns(r => {
                r[0] = new Message <Null, byte[]>(topic, 0, 0, null, expectedMessage, new Timestamp(), null);
                return(true);
            });

            // Act
            var sut  = new KafkaBlockingRawMessageReader(consumer);
            var read = sut.TryGetMessage(out var actualMessage, options);

            // Assert
            Assert.True(read);
            Assert.Equal(expectedMessage, actualMessage);
        }
        public void TryGetMessage_ConsumerReturnsFalse_ReaderReturnsFalse()
        {
            // Arrange
            var options = new KafkaOptions();

            var consumer = Substitute.For <IKafkaConsumer>();

            consumer.Consume(out _, Arg.Any <TimeSpan>())
            .Returns(r => {
                r[0] = null;
                return(false);
            });

            // Act
            var sut  = new KafkaBlockingRawMessageReader(consumer);
            var read = sut.TryGetMessage(out var readMessage, options);

            // Assert
            Assert.False(read);
            Assert.Null(readMessage);
        }