public void AddMediatRServiceLike_EventRegistryが先に登録されている場合はそのインスタンスが利用される() { var services = new ServiceCollection(); var registry = new ListenerRegistry(); services.AddSingleton(registry); services.AddMediatRServiceLike(typeof(ServicePing).Assembly); var provider = services.BuildServiceProvider(); var registryFromService = provider.GetService <ListenerRegistry>(); registryFromService.Should().BeSameAs(registry); registry.GetListeners("pang").Should().NotBeNull(); registry.GetListeners("pang2").Should().NotBeNull(); }
public void Add_AsEventが複数付与されている場合は複数追加される() { var registry = new ListenerRegistry(); registry.Add(typeof(MultiPang)); var ev1 = registry.GetListeners("pang.1"); ev1.Should().NotBeNull(); var ev2 = registry.GetListeners("pang.2"); ev2.Should().NotBeNull(); registry.GetKeys().Should().HaveCount(2); }
public void Add_AsEventが付与されている場合は追加される() { var registry = new ListenerRegistry(); registry.Add(typeof(Pang)); var ev = registry.GetListeners("pang"); ev.Should().NotBeNull(); registry.GetKeys().Should().HaveCount(1); }
public Task PublishAsync(string key, object eventData, PublishOptions options) { if (eventData is null) { throw new ArgumentNullException(nameof(eventData)); } var mediatorNotifications = _listenerRegistry.GetListeners(key); PublishAndForget(mediatorNotifications, eventData, key, options); return(Task.CompletedTask); }
public void Add_同じパスが登録された場合は両方とも保持される() { var registry = new ListenerRegistry(); registry.Add(typeof(Pang)); registry.Add(typeof(Pang2)); registry.GetKeys().Should().HaveCount(1); var notifications = registry.GetListeners(registry.GetKeys().First()); notifications.Should().HaveCount(2); var expectedList = new Queue <Type>(new[] { typeof(Pang), typeof(Pang2) }); for (var i = 0; i < expectedList.Count; i++) { var expect = expectedList.Dequeue(); notifications.Should().Contain(n => n.ListenerType == expect); } }
public void GetNotifications_設定されていないパスが指定された場合はnullが返る() { var registry = new ListenerRegistry(); registry.GetListeners("unknown.event").Should().BeEmpty(); }