diff --git a/src/NzbDrone.Core.Test/HealthCheck/HealthCheckServiceFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/HealthCheckServiceFixture.cs new file mode 100644 index 000000000..31eee2656 --- /dev/null +++ b/src/NzbDrone.Core.Test/HealthCheck/HealthCheckServiceFixture.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Common.Cache; +using NzbDrone.Common.Messaging; +using NzbDrone.Core.HealthCheck; +using NzbDrone.Core.Test.Framework; +using NzbDrone.Core.Tv.Events; + +namespace NzbDrone.Core.Test.HealthCheck +{ + public class HealthCheckServiceFixture : CoreTest + { + FakeHealthCheck _healthCheck; + + [SetUp] + public void SetUp() + { + _healthCheck = new FakeHealthCheck(); + + Mocker.SetConstant>(new[] { _healthCheck }); + Mocker.SetConstant(Mocker.Resolve()); + } + + [Test] + public void should_not_execute_conditional() + { + Subject.HandleAsync(new FakeEvent()); + + _healthCheck.Executed.Should().BeFalse(); + } + + [Test] + public void should_execute_conditional() + { + Subject.HandleAsync(new FakeEvent() { ShouldExecute = true }); + + _healthCheck.Executed.Should().BeTrue(); + } + + [Test] + public void should_execute_unconditional() + { + Subject.HandleAsync(new FakeEvent2()); + + _healthCheck.Executed.Should().BeTrue(); + } + + } + + public class FakeEvent : IEvent + { + public bool ShouldExecute { get; set; } + } + + public class FakeEvent2 : IEvent + { + public bool ShouldExecute { get; set; } + } + + [CheckOn(typeof(FakeEvent))] + [CheckOn(typeof(FakeEvent2))] + public class FakeHealthCheck : IProvideHealthCheck, ICheckOnCondition + { + public bool CheckOnStartup => false; + public bool CheckOnSchedule => false; + + public bool Executed { get; set; } + public bool Checked { get; set; } + + public Core.HealthCheck.HealthCheck Check() + { + Executed = true; + + return new Core.HealthCheck.HealthCheck(GetType()); + } + + public bool ShouldCheckOnEvent(FakeEvent message) + { + return message.ShouldExecute; + } + } +} diff --git a/src/NzbDrone.Core/HealthCheck/EventDrivenHealthCheck.cs b/src/NzbDrone.Core/HealthCheck/EventDrivenHealthCheck.cs index 4f7e8cabe..544c0d9c3 100644 --- a/src/NzbDrone.Core/HealthCheck/EventDrivenHealthCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/EventDrivenHealthCheck.cs @@ -35,7 +35,7 @@ namespace NzbDrone.Core.HealthCheck return false; } - if (EventFilter == null && !EventFilter.ShouldCheckOnEvent((TEvent)message)) + if (EventFilter != null && !EventFilter.ShouldCheckOnEvent((TEvent)message)) { return false; }