Ejemplo n.º 1
0
    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();
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
    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);
        }
    }
Ejemplo n.º 6
0
    public void GetNotifications_設定されていないパスが指定された場合はnullが返る()
    {
        var registry = new ListenerRegistry();

        registry.GetListeners("unknown.event").Should().BeEmpty();
    }