1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-06 11:02:40 +01:00
Radarr/NzbDrone.Common.Test/EventingTests/MessageAggregatorEventTests.cs

95 lines
2.5 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
2013-02-23 21:09:44 +01:00
using Moq;
using NUnit.Framework;
using NzbDrone.Common.Messaging;
2013-02-23 21:09:44 +01:00
using NzbDrone.Test.Common;
namespace NzbDrone.Common.Test.EventingTests
{
[TestFixture]
public class MessageAggregatorEventTests : TestBase<MessageAggregator>
2013-02-23 21:09:44 +01:00
{
private Mock<IHandle<EventA>> HandlerA1;
private Mock<IHandle<EventA>> HandlerA2;
private Mock<IHandle<EventB>> HandlerB1;
private Mock<IHandle<EventB>> HandlerB2;
[SetUp]
public void Setup()
2013-02-23 21:09:44 +01:00
{
HandlerA1 = new Mock<IHandle<EventA>>();
HandlerA2 = new Mock<IHandle<EventA>>();
HandlerB1 = new Mock<IHandle<EventB>>();
HandlerB2 = new Mock<IHandle<EventB>>();
Mocker.GetMock<IServiceFactory>()
.Setup(c => c.BuildAll<IHandle<EventA>>())
.Returns(new List<IHandle<EventA>> { HandlerA1.Object, HandlerA2.Object });
Mocker.GetMock<IServiceFactory>()
.Setup(c => c.BuildAll<IHandle<EventB>>())
.Returns(new List<IHandle<EventB>> { HandlerB1.Object, HandlerB2.Object });
2013-02-23 21:09:44 +01:00
}
[Test]
public void should_publish_event_to_handlers()
2013-02-23 21:09:44 +01:00
{
var eventA = new EventA();
Subject.PublishEvent(eventA);
2013-02-23 21:09:44 +01:00
HandlerA1.Verify(c => c.Handle(eventA), Times.Once());
HandlerA2.Verify(c => c.Handle(eventA), Times.Once());
2013-02-23 21:09:44 +01:00
}
2013-02-23 21:34:51 +01:00
2013-02-23 21:09:44 +01:00
[Test]
public void should_not_publish_to_incompatible_handlers()
{
var eventA = new EventA();
2013-02-23 21:09:44 +01:00
Subject.PublishEvent(eventA);
2013-02-23 21:09:44 +01:00
HandlerA1.Verify(c => c.Handle(eventA), Times.Once());
HandlerA2.Verify(c => c.Handle(eventA), Times.Once());
HandlerB1.Verify(c => c.Handle(It.IsAny<EventB>()), Times.Never());
HandlerB2.Verify(c => c.Handle(It.IsAny<EventB>()), Times.Never());
2013-02-23 21:09:44 +01:00
}
[Test]
public void broken_handler_should_not_effect_others_handler()
{
var eventA = new EventA();
HandlerA1.Setup(c => c.Handle(It.IsAny<EventA>()))
.Throws(new NotImplementedException());
Subject.PublishEvent(eventA);
HandlerA1.Verify(c => c.Handle(eventA), Times.Once());
HandlerA2.Verify(c => c.Handle(eventA), Times.Once());
ExceptionVerification.ExpectedErrors(1);
}
2013-02-23 21:09:44 +01:00
}
public class EventA : IEvent
{
}
public class EventB : IEvent
{
}
2013-02-23 21:09:44 +01:00
}