public async Task PublishAsync_SubscribedMessage_ReceivedRepublishedMessages(IEvent message, int expectedEventOne, int expectedEventTwo)
        {
            var service1  = new TestServiceOne();
            var service2  = new TestServiceTwo();
            var publisher = GetPublisher(new RepublishMessagesTestService(), service1, service2);

            await publisher.PublishAsync(message);

            service1.ReceivedMessagesCount.Should().Be(expectedEventOne * 2);
            service2.ReceivedMessagesCount.Should().Be(expectedEventTwo * 2);
        }
        public async Task Publish_SomeMessages_ReceivedByAllSubscribedMethods()
        {
            var service1  = new TestServiceOne();
            var service2  = new TestServiceTwo();
            var publisher = GetPublisher(config => config.Subscribe <ISubscriber>(false), service1, service2);

            await publisher.PublishAsync(new TestCommandOne());            // service1 +2

            await publisher.PublishAsync(new TestCommandTwo());            // service2 +2

            publisher.Publish(new TestCommandOne());                       // service1 +2
            await publisher.PublishAsync(new TransactionCompletedEvent()); // service1/2 +1

            publisher.Publish(new TransactionAbortedEvent());              // service1/2 +1

            service1.ReceivedMessagesCount.Should().Be(6);
            service2.ReceivedMessagesCount.Should().Be(4);
        }
Exemple #3
0
        public void AddSubscribers_Interface_MessagesReceived()
        {
            var testService1 = new TestServiceOne();
            var testService2 = new TestServiceTwo();

            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddSilverback()
                .AddSubscribers <IService>()
                .Services
                .AddSingleton <IService>(testService1)
                .AddSingleton(testService1)
                .AddSingleton <IService>(testService2)
                .AddSingleton(testService2));

            var publisher = serviceProvider.GetRequiredService <IPublisher>();

            publisher.Publish(new object[] { new TestCommandOne(), new TestCommandTwo() });

            testService1.ReceivedMessagesCount.Should().BeGreaterThan(0);
            testService2.ReceivedMessagesCount.Should().BeGreaterThan(0);
        }