public void Subscribe_HandleAllMessages(int messageCount)
        {
            var consumerMock = new Mock <INatsStreamingConsumer>();

            consumerMock.Setup(c => c.Subscribe(It.IsAny <Func <byte[], INatsStreamingSignalProperties, Task> >()))
            .Callback((Func <byte[], INatsStreamingSignalProperties, Task> handler) =>
            {
                for (var i = 0; i < messageCount; i++)
                {
                    handler(new byte[0], new Mock <INatsStreamingSignalProperties>().Object).Wait();
                }
            });

            var factory      = Create.NatsConsumerFactory().SetupCreate(consumerMock.Object).Get();
            var natsConsumer = new NatsConsumer("topic", "Environment", factory);

            var receiveMessagesCount = 0;

            natsConsumer.Subscribe(bytes =>
            {
                receiveMessagesCount++;
                return(Task.CompletedTask);
            });

            receiveMessagesCount.Should().Be(messageCount);
        }
Example #2
0
        public void CtorTopicIsEmply_GetArgumentException()
        {
            var       Environment  = "Test";
            var       factoryMock  = new Mock <INatsStreamingConsumerFactory>();
            IConsumer natsConsumer = null;

            Action act = () => { natsConsumer = new NatsConsumer("", Environment, factoryMock.Object); };

            act.Should().Throw <ArgumentNullException>("Topic(subscription) must me not empty.");
        }
        public void Connect_Success()
        {
            var       consumerMock = new Mock <INatsStreamingConsumer>();
            var       factory      = Create.NatsConsumerFactory().SetupCreate(consumerMock.Object).Get();
            IConsumer natsConsumer = new NatsConsumer("topic", "Environment", factory);

            Action act = () => { natsConsumer.Connect(); };

            act.Should().NotThrow();
            consumerMock.Verify(c => c.Connect(), Times.Once);
        }
        public void Subscribe_Error()
        {
            var consumerMock = new Mock <INatsStreamingConsumer>();

            consumerMock.Setup(c => c.Subscribe(It.IsAny <Func <byte[], INatsStreamingSignalProperties, Task> >())).Throws <Exception>();

            var factory      = Create.NatsConsumerFactory().SetupCreate(consumerMock.Object).Get();
            var natsConsumer = new NatsConsumer("topic", "Environment", factory);

            Action act = () => { natsConsumer.Subscribe(bytes => Task.CompletedTask); };

            act.Should().Throw <Exception>();
            consumerMock.Verify(c => c.Subscribe(It.IsAny <Func <byte[], INatsStreamingSignalProperties, Task> >()), Times.Once);
        }
Example #5
0
        public void Ctor_SetSameTierAndTopic()
        {
            var       Environment  = "Test";
            var       topic        = "Test.Topic";
            var       factoryMock  = new Mock <INatsStreamingConsumerFactory>();
            IConsumer natsConsumer = null;

            Action act = () => { natsConsumer = new NatsConsumer(topic, Environment, factoryMock.Object); };

            act.Should().NotThrow();

            natsConsumer.Should().NotBeNull();
            using (new AssertionScope())
            {
                natsConsumer.Environment.Should().Be(Environment);
                natsConsumer.Topic.Should().Be(topic);
            }
        }
Example #6
0
        public async Task Test2()
        {
            var port    = 4222;
            var subPort = 8222;

            using var container = Containers.CreateNatsStreamingContainer(port, subPort);

            container.Start();

            await Task.Delay(1000); //StartingNats

            var connectionConfiguration = new NatsStreamingConnectionConfigurationBuilder()
                                          .WithClusterId("test-cluster")
                                          .WithNatsUrl($"http://localhost:{port}/")
                                          .Build();

            var factory = new NatsStreamingConsumerFactory(connectionConfiguration);

            var natsConsumer = new NatsConsumer("test", "test", factory);

            Action act = () => natsConsumer.Connect();

            act.Should().NotThrow();
        }