using System.Collections.Generic; using System.Linq; using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Newznab; using NzbDrone.Core.Indexers.Omgwtfnzbs; using NzbDrone.Core.Indexers.Wombles; using NzbDrone.Core.Lifecycle; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.IndexerTests { public class IndexerServiceFixture : DbTest { private List _indexers; [SetUp] public void Setup() { _indexers = new List(); _indexers.Add(new Newznab()); _indexers.Add(new Omgwtfnzbs()); _indexers.Add(new Wombles()); Mocker.SetConstant>(_indexers); } [Test] public void should_create_default_indexer_on_startup() { IList storedIndexers = null; Mocker.GetMock() .Setup(c => c.InsertMany(It.IsAny>())) .Callback>(indexers => storedIndexers = indexers); Subject.Handle(new ApplicationStartedEvent()); storedIndexers.Should().NotBeEmpty(); storedIndexers.Select(c => c.Name).Should().OnlyHaveUniqueItems(); storedIndexers.Select(c => c.Enable).Should().NotBeEmpty(); storedIndexers.Select(c => c.Implementation).Should().NotContainNulls(); } [Test] public void getting_list_of_indexers() { Mocker.SetConstant(Mocker.Resolve()); Subject.Handle(new ApplicationStartedEvent()); var indexers = Subject.All().ToList(); indexers.Should().NotBeEmpty(); indexers.Should().NotContain(c => c.Settings == null); indexers.Should().NotContain(c => c.Name == null); indexers.Select(c => c.Name).Should().OnlyHaveUniqueItems(); } [Test] public void should_remove_missing_indexers_on_startup() { var repo = Mocker.Resolve(); Mocker.SetConstant(repo); var existingIndexers = Builder.CreateNew().BuildNew(); existingIndexers.ConfigContract = typeof (NewznabSettings).Name; repo.Insert(existingIndexers); Subject.Handle(new ApplicationStartedEvent()); AllStoredModels.Should().NotContain(c => c.Id == existingIndexers.Id); } } }