From 3e1ff7e96ee986759c8394f12a3c17904d5919be Mon Sep 17 00:00:00 2001 From: "kay.one" <kay.one@gmail.com> Date: Thu, 19 May 2011 21:18:51 -0700 Subject: [PATCH] Basic indexer tests are working --- NzbDrone.Core.Test/EpisodeProviderTest.cs | Bin 8242 -> 6888 bytes .../Framework/ExceptionVerification.cs | 16 ++++ NzbDrone.Core.Test/IndexerProviderTest.cs | 87 ++++++------------ NzbDrone.Core.Test/SabProviderTest.cs | 4 +- 4 files changed, 46 insertions(+), 61 deletions(-) diff --git a/NzbDrone.Core.Test/EpisodeProviderTest.cs b/NzbDrone.Core.Test/EpisodeProviderTest.cs index 80f5c3c9b6f0e31d34e37d7eb26501f2f1993353..c2faea37504c2340fe9bc77d9ec539df75d6d70f 100644 GIT binary patch delta 1711 zcmb7EO>7fK6qcPI$LpQ=H?gz+!A?RGgX>jN1*)WJ2_#6V5(FeDLXbvIGK2-=O?THM zDT)M_iVKR+>!n9-+z@bV5nK_d61^hS9@|5OKu8?vd$YT&<6K}@nt3ztdvCt?GxOlc zKO_5J|Ms|UYPGfe+?HwaD`QM*T$X3F+K*%Gc3*F%NinHa)@r(GX)7k`m-a<n{Y2f; zXLT~V)$@hBIlFwOrdj3VM&%0M(2dI<kFk+Y(??z8iJz7y4ZX(8$8>|2Pa67FZIv5% zhQn*O{xo0LP0iActuY3DJ}u?K=C7_U&uGi#$%<7$TLyQ0*(8&$F)5GVxp{6{$F)tX zZtz70fBF{DkQ9#oBL<a)co&@YC;Dta6Nr|oI$;=<+8SqY%RlI&F$vH8u@*Y^FaH$o z^tbfl=##tQe9QMj8h|G)!O+4*Zt#g}b+AZUu?LaXuRVlRK3dnRtAj-Z+-N-{TrS2B zi1~gd0q<KqIUGo$;q_<=cv}IbpW8+R?)SC{jE;U{>wd_3#bOX`KZwx#nGEPk3@)|j zaCNi&2TYX<q#41c$qmHQq2WM3qHd=X@JG5GW&>$lT?~xoJ)7;u(?qftDH)Ff3PSI7 zq~UGgfFm95P=z!WwTwD1<!LMu8u9l!rXAFV6ovlafLIlv8YI%>=RxqWBP~djHrlhL z9cdQVRJ=FRuLX}<Lxt_g=D1Z~XK*((g7_O@3e6`MVMz`PX#oC<1mJp4%2~aXT}fe- z?;*BdWO;!V1tRCaMh<#GVIg?VLSnNQUdobuL96mp^-5K<wg{4I+ZLUvc8*3oenbjA zY;<PP@|Vt=IA+2J<GTU2;kc3lJsd-XOPfO2Oa4g2X7MF#MotI>1(guAk$!l$ZwA<4 z0ecS<+Vu@Qi6vsCJYUyLeU(qwF6c$Un;KxII|%P$@#fNd9-ZQgLOe_sKA{ksi9_9< zy`2uxj0|2U@~y)qCc&#nl1k!7@tLf^PFJL>vE#_dPSM>^20o;ez4;|qUwxJ<%nIhN z@zRYeQ%#Ol6?T-7y_+u-s?2!qySbrZN*)n(Klg5xr_Fin{Xv79^{O@WX)yAJH<4P; zzK`)y&pX~i_YhBVZ=<U@H?_H5)mAhMpSozKEPF`o!d)?o=u0@h%9Iiwj2x+Ig&q^N zGYP}ll4z`@EIoXfA{_tCe%sSrA2e~El<^$hR15-Z=(2LC<Fx(oMXut5zjN~c$dr|( literal 8242 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 C1+<g^ diff --git a/NzbDrone.Core.Test/Framework/ExceptionVerification.cs b/NzbDrone.Core.Test/Framework/ExceptionVerification.cs index 6f6f27331..6de716867 100644 --- a/NzbDrone.Core.Test/Framework/ExceptionVerification.cs +++ b/NzbDrone.Core.Test/Framework/ExceptionVerification.cs @@ -69,6 +69,16 @@ namespace NzbDrone.Core.Test.Framework Excpected(LogLevel.Warn, count); } + internal static void IgnoreWarns() + { + Ignore(LogLevel.Warn); + } + + internal static void IgnoreErrors() + { + Ignore(LogLevel.Error); + } + private static void Excpected(LogLevel level, int count) { var levelLogs = _logs.Where(l => l.Level == level).ToList(); @@ -83,5 +93,11 @@ namespace NzbDrone.Core.Test.Framework levelLogs.ForEach(c => _logs.Remove(c)); } + + private static void Ignore(LogLevel level) + { + var levelLogs = _logs.Where(l => l.Level == level).ToList(); + levelLogs.ForEach(c => _logs.Remove(c)); + } } } \ No newline at end of file diff --git a/NzbDrone.Core.Test/IndexerProviderTest.cs b/NzbDrone.Core.Test/IndexerProviderTest.cs index 6eeadec26..aa924a42d 100644 --- a/NzbDrone.Core.Test/IndexerProviderTest.cs +++ b/NzbDrone.Core.Test/IndexerProviderTest.cs @@ -7,6 +7,7 @@ using AutoMoq; using FizzWare.NBuilder; using MbUnit.Framework; using Moq; +using NzbDrone.Core.Model; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Providers.ExternalNotification; @@ -22,11 +23,11 @@ namespace NzbDrone.Core.Test public class IndexerProviderTest : TestBase { [Test] - [Row("nzbsorg.xml")] - [Row("nzbsrus.xml")] - [Row("newzbin.xml")] - [Row("nzbmatrix.xml")] - public void parse_feed_xml(string fileName) + [Row("nzbsorg.xml", 0)] + [Row("nzbsrus.xml", 6)] + [Row("newzbin.xml", 1)] + [Row("nzbmatrix.xml", 1)] + public void parse_feed_xml(string fileName, int warns) { var mocker = new AutoMoqer(); @@ -39,21 +40,18 @@ namespace NzbDrone.Core.Test .Setup(c => c.GetSettings(It.IsAny<Type>())) .Returns(fakeSettings); - var exceptions = mocker.Resolve<MockIndexerProvider>().Fetch(); + var parseResults = mocker.Resolve<MockIndexerProvider>().Fetch(); - foreach (var exception in exceptions) - { - Console.WriteLine(exception.ToString()); - } - Assert.IsEmpty(exceptions); + Assert.IsNotEmpty(parseResults); + ExceptionVerification.ExcpectedWarns(warns); } [Test] [Row("Adventure.Inc.S03E19.DVDRip.XviD-OSiTV", 3, 19, QualityTypes.DVD)] - public void parse_feed_test_success(string title, int season, int episode, QualityTypes quality) + public void custome_parser_partial_success(string title, int season, int episode, QualityTypes quality) { var mocker = new AutoMoqer(); @@ -64,11 +62,6 @@ namespace NzbDrone.Core.Test .Setup(c => c.GetSettings(It.IsAny<Type>())) .Returns(fakeSettings); - mocker.GetMock<SeriesProvider>() - .Setup(c => c.FindSeries(It.IsAny<String>())) - .Returns(Builder<Series>.CreateNew().Build()); - - var fakeRssItem = Builder<SyndicationItem>.CreateNew() .With(c => c.Title = new TextSyndicationContent(title)) .With(c => c.Summary = new TextSyndicationContent(summary)) @@ -78,31 +71,33 @@ namespace NzbDrone.Core.Test Assert.IsNotNull(result); Assert.AreEqual(summary, result.EpisodeTitle); + Assert.AreEqual(season, result.SeasonNumber); + Assert.AreEqual(episode, result.Episodes[0]); + Assert.AreEqual(quality, result.Quality); } [Test] [Row("Adventure.Inc.DVDRip.XviD-OSiTV")] - public void parse_feed_test_fail(string title) + public void custome_parser_full_parse(string title) { var mocker = new AutoMoqer(); - + const string summary = "My fake summary"; var fakeSettings = Builder<IndexerSetting>.CreateNew().Build(); mocker.GetMock<IndexerProvider>() .Setup(c => c.GetSettings(It.IsAny<Type>())) .Returns(fakeSettings); - mocker.GetMock<SeriesProvider>(MockBehavior.Strict); - - var fakeRssItem = Builder<SyndicationItem>.CreateNew() .With(c => c.Title = new TextSyndicationContent(title)) + .With(c => c.Summary = new TextSyndicationContent(summary)) .Build(); var result = mocker.Resolve<CustomParserIndexer>().ParseFeed(fakeRssItem); - Assert.IsNull(result); + Assert.IsNotNull(result); + Assert.AreEqual(summary, result.EpisodeTitle); ExceptionVerification.ExcpectedWarns(1); } @@ -119,6 +114,8 @@ namespace NzbDrone.Core.Test .Returns(fakeSettings); mocker.Resolve<TestUrlIndexer>().Fetch(); + + ExceptionVerification.IgnoreWarns(); } [Test] @@ -146,19 +143,14 @@ namespace NzbDrone.Core.Test .Returns<Series>(null); var indexer = mocker.Resolve<MockIndexerProvider>(); - indexer.ProcessItem(new SyndicationItem { Title = new TextSyndicationContent("Adventure.Inc.S01E18.DVDRip.XviD-OSiTV") }); + //indexer.ProcessItem(new SyndicationItem { Title = new TextSyndicationContent("Adventure.Inc.S01E18.DVDRip.XviD-OSiTV") }); } } public class MockIndexerProvider : IndexerProviderBase { - public MockIndexerProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider, - EpisodeProvider episodeProvider, ConfigProvider configProvider, - HttpProvider httpProvider, IndexerProvider indexerProvider, - HistoryProvider historyProvider, SabProvider sabProvider, IEnumerable<ExternalNotificationProviderBase> externalNotificationProvider) - : base(seriesProvider, seasonProvider, episodeProvider, - configProvider, httpProvider, indexerProvider, historyProvider, - sabProvider, externalNotificationProvider) + public MockIndexerProvider(HttpProvider httpProvider, ConfigProvider configProvider, IndexerProvider indexerProvider) + : base(httpProvider, configProvider, indexerProvider) { } @@ -177,10 +169,6 @@ namespace NzbDrone.Core.Test get { return "Mocked Indexer"; } } - public override bool SupportsBacklog - { - get { return false; } - } protected override string NzbDownloadUrl(SyndicationItem item) { @@ -190,13 +178,8 @@ namespace NzbDrone.Core.Test public class TestUrlIndexer : IndexerProviderBase { - public TestUrlIndexer(SeriesProvider seriesProvider, SeasonProvider seasonProvider, - EpisodeProvider episodeProvider, ConfigProvider configProvider, - HttpProvider httpProvider, IndexerProvider indexerProvider, - HistoryProvider historyProvider, SabProvider sabProvider, IEnumerable<ExternalNotificationProviderBase> externalNotificationProvider) - : base(seriesProvider, seasonProvider, episodeProvider, - configProvider, httpProvider, indexerProvider, historyProvider, - sabProvider, externalNotificationProvider) + public TestUrlIndexer(HttpProvider httpProvider, ConfigProvider configProvider, IndexerProvider indexerProvider) + : base(httpProvider, configProvider, indexerProvider) { } @@ -205,11 +188,6 @@ namespace NzbDrone.Core.Test get { return "All Urls"; } } - public override bool SupportsBacklog - { - get { return false; } - } - protected override string[] Urls { get { return new[] { "http://rss.nzbmatrix.com/rss.php?cat=TV" }; } @@ -223,13 +201,8 @@ namespace NzbDrone.Core.Test public class CustomParserIndexer : IndexerProviderBase { - public CustomParserIndexer(SeriesProvider seriesProvider, SeasonProvider seasonProvider, - EpisodeProvider episodeProvider, ConfigProvider configProvider, - HttpProvider httpProvider, IndexerProvider indexerProvider, - HistoryProvider historyProvider, SabProvider sabProvider, IEnumerable<ExternalNotificationProviderBase> externalNotificationProvider) - : base(seriesProvider, seasonProvider, episodeProvider, - configProvider, httpProvider, indexerProvider, historyProvider, - sabProvider, externalNotificationProvider) + public CustomParserIndexer(HttpProvider httpProvider, ConfigProvider configProvider, IndexerProvider indexerProvider) + : base(httpProvider, configProvider, indexerProvider) { } @@ -238,10 +211,7 @@ namespace NzbDrone.Core.Test get { return "Custom parser"; } } - public override bool SupportsBacklog - { - get { return false; } - } + protected override string[] Urls { @@ -255,6 +225,7 @@ namespace NzbDrone.Core.Test protected override Model.EpisodeParseResult CustomParser(SyndicationItem item, Model.EpisodeParseResult currentResult) { + if (currentResult == null) currentResult = new EpisodeParseResult(); currentResult.EpisodeTitle = item.Summary.Text; return currentResult; } diff --git a/NzbDrone.Core.Test/SabProviderTest.cs b/NzbDrone.Core.Test/SabProviderTest.cs index 229d2564e..8f4f37494 100644 --- a/NzbDrone.Core.Test/SabProviderTest.cs +++ b/NzbDrone.Core.Test/SabProviderTest.cs @@ -221,18 +221,16 @@ namespace NzbDrone.Core.Test var parsResult = new EpisodeParseResult() { - SeriesId = 12, AirDate = DateTime.Now, Episodes = episodes.ToList(), Proper = proper, Quality = quality, SeasonNumber = seasons, EpisodeTitle = title, - FolderName = "My Series Name" }; //Act - var actual = mocker.Resolve<SabProvider>().GetSabTitle(parsResult); + var actual = mocker.Resolve<SabProvider>().GetSabTitle(parsResult, "My Series Name"); //Assert Assert.AreEqual(excpected, actual);