using System.Linq; using DryIoc; using DryIoc.Microsoft.DependencyInjection; using FluentAssertions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; using NzbDrone.Common.Composition.Extensions; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Instrumentation.Extensions; using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore.Extensions; using NzbDrone.Core.Lifecycle; using NzbDrone.Core.Messaging.Events; using NzbDrone.Host; using NzbDrone.Test.Common; namespace NzbDrone.Common.Test { [TestFixture] public class ServiceFactoryFixture : TestBase { [Test] public void event_handlers_should_be_unique() { var container = new Container(rules => rules.WithNzbDroneRules()) .AddNzbDroneLogger() .AutoAddServices(Bootstrap.ASSEMBLIES) .AddDummyDatabase() .AddStartupContext(new StartupContext("first", "second")); container.RegisterInstance(new Mock().Object); container.RegisterInstance(new Mock>().Object); var serviceProvider = container.GetServiceProvider(); serviceProvider.GetRequiredService().Register(); Mocker.SetConstant(serviceProvider); var handlers = Subject.BuildAll>() .Select(c => c.GetType().FullName); handlers.Should().OnlyHaveUniqueItems(); } } }