public void It_can_process_pending_messages() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); var messages = GenerateMessages(8, "oneTopic"); sut.ProcessPendingMessages(messages); Assert.NotNull(forwarderFactory.Forwarders["oneTopic"]); forwarderFactory.Forwarders["oneTopic"].Received(messages.Value.Count()).AddMessage(Arg.Any<string>()); }
public void It_routes_each_message_by_topic() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); var messages = GenerateMessages(8); sut.ProcessPendingMessages(messages); var groupedTopics = messages.Value .GroupBy(m => serializer.Value.Deserialize<BaseEvent>(m).Topic) .Select(g => new { Name = g.Key, Count = g.Count() }); Assert.NotEmpty(groupedTopics); groupedTopics.ToList().ForEach(topicCount => { Assert.NotNull(forwarderFactory.Forwarders[topicCount.Name]); forwarderFactory.Forwarders[topicCount.Name].Received(topicCount.Count).AddMessage(Arg.Any<string>()); }); }
public void StopSendingMessages_stops_every_awakened_forwarder() { var serializer = new NotNullable<IStringSerializer>(new JsonSerializer()); var forwarderFactory = new MessageForwarderFactoryFake(); var serviceEvents = new ServiceEvents(); var sut = new MessageForwardingService(serializer, serviceEvents, forwarderFactory); var messages = GenerateMessages(8); sut.ProcessPendingMessages(messages); sut.StopSendingMessages(); Assert.True(forwarderFactory.Forwarders.Any()); forwarderFactory.Forwarders.ToList().ForEach(item => item.Value.Received().StopForwarding()); }