public async Task DispatchAsync_should_publish_events() { var topicFactory = new TopicClientFactory(_connStr); var logger = NSubstitute.Substitute.For <ILogger <EventProducer <DummyAggregate, Guid> > >(); var sut = new EventProducer <DummyAggregate, Guid>(topicFactory, "test", _eventSerializer, logger); await CreateTopicAsync(sut.TopicName); int expectedMessagesCount = 3; var subscriptionClient = new SubscriptionClient(_connStr, sut.TopicName, SubscriptionName); subscriptionClient.RegisterMessageHandler( async(msg, tkn) => { --expectedMessagesCount; await subscriptionClient.CompleteAsync(msg.SystemProperties.LockToken); }, (ex) => Task.CompletedTask); var aggregate = new DummyAggregate(Guid.NewGuid()); aggregate.DoSomething("lorem"); aggregate.DoSomething("ipsum"); await sut.DispatchAsync(aggregate); var timeout = 30 * 1000; var timer = new Stopwatch(); timer.Start(); while (true) { if (expectedMessagesCount < 1 || timer.ElapsedMilliseconds > timeout) { break; } await Task.Delay(200); } expectedMessagesCount.Should().Be(0); }
public void SetUp() { _topicClientFactory = new TopicClientFactory(); }