From 68e40bca29bf47b912d71fc31097a5d5218cec67 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 23 Oct 2013 08:19:27 -0700 Subject: [PATCH] Blacklist check is case insensitive now --- .../SabProviderTests/QueueFixture.cs | 324 ------------------ .../Blacklisting/BlacklistRepository.cs | 5 +- .../IndexerSearch/SearchAndDownloadService.cs | 39 --- 3 files changed, 3 insertions(+), 365 deletions(-) delete mode 100644 src/NzbDrone.Core.Test/Download/DownloadClientTests/SabProviderTests/QueueFixture.cs delete mode 100644 src/NzbDrone.Core/IndexerSearch/SearchAndDownloadService.cs diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabProviderTests/QueueFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabProviderTests/QueueFixture.cs deleted file mode 100644 index 1b5c75c22..000000000 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/SabProviderTests/QueueFixture.cs +++ /dev/null @@ -1,324 +0,0 @@ -/*using System; -using System.Collections.Generic; -using System.Linq; -using FluentAssertions; -using Moq; -using NUnit.Framework; -using NzbDrone.Common; -using NzbDrone.Core.Configuration; -using NzbDrone.Core.Download.Clients.Sabnzbd; -using NzbDrone.Core.Model; -using NzbDrone.Core.Qualities; -using NzbDrone.Core.Test.Framework; -using NzbDrone.Core.Tv; -using NzbDrone.Test.Common; - -namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabProviderTests -{ - [TestFixture] - - public class QueueFixture : CoreTest - { - [SetUp] - public void Setup() - { - string sabHost = "192.168.5.55"; - int sabPort = 2222; - string apikey = "5c770e3197e4fe763423ee7c392c25d1"; - string username = "admin"; - string password = "pass"; - string cat = "tv"; - - var fakeConfig = Mocker.GetMock(); - fakeConfig.SetupGet(c => c.SabHost).Returns(sabHost); - fakeConfig.SetupGet(c => c.SabPort).Returns(sabPort); - fakeConfig.SetupGet(c => c.SabApiKey).Returns(apikey); - fakeConfig.SetupGet(c => c.SabUsername).Returns(username); - fakeConfig.SetupGet(c => c.SabPassword).Returns(password); - fakeConfig.SetupGet(c => c.SabTvCategory).Returns(cat); - } - - private void WithFullQueue() - { - Mocker.GetMock() - .Setup( - s => - s.DownloadString( - "http://192.168.5.55:2222/api?mode=queue&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass")) - .Returns(ReadAllText("Files","Queue.txt")); - } - - private void WithEmptyQueue() - { - Mocker.GetMock() - .Setup(s => s.DownloadString("http://192.168.5.55:2222/api?mode=queue&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass")) - .Returns(ReadAllText("Files","QueueEmpty.txt")); - } - - private void WithFailResponse() - { - Mocker.GetMock() - .Setup(s => s.DownloadString(It.IsAny())).Returns(ReadAllText("Files","JsonError.txt")); - } - - private void WithUnknownPriorityQueue() - { - Mocker.GetMock() - .Setup( - s => - s.DownloadString( - "http://192.168.5.55:2222/api?mode=queue&output=json&start=0&limit=0&apikey=5c770e3197e4fe763423ee7c392c25d1&ma_username=admin&ma_password=pass")) - .Returns(ReadAllText("Files", "QueueUnknownPriority.txt")); - } - - [Test] - public void GetQueue_should_return_an_empty_list_when_the_queue_is_empty() - { - WithEmptyQueue(); - - var result = Mocker.Resolve().GetQueue(); - - result.Should().BeEmpty(); - } - - [Test] - public void GetQueue_should_throw_when_there_is_an_error_getting_the_queue() - { - WithFailResponse(); - - Assert.Throws(() => Mocker.Resolve().GetQueue(), "API Key Incorrect"); - } - - [Test] - public void GetQueue_should_return_a_list_with_items_when_the_queue_has_items() - { - WithFullQueue(); - - var result = Mocker.Resolve().GetQueue(); - - result.Should().HaveCount(7); - } - - [Test] - public void GetQueue_should_return_a_list_with_items_even_when_priority_is_non_standard() - { - WithUnknownPriorityQueue(); - - var result = Mocker.Resolve().GetQueue(); - - result.Should().HaveCount(7); - } - - [Test] - public void is_in_queue_should_find_if_exact_episode_is_in_queue() - { - WithFullQueue(); - - var parseResult = new RemoteEpisode - { - EpisodeTitle = "Title", - EpisodeNumbers = new List { 5 }, - SeasonNumber = 1, - Quality = new QualityModel { Quality = Quality.SDTV, Proper = false }, - Series = new Series { Title = "30 Rock", CleanTitle = Parser.NormalizeTitle("30 Rock") }, - }; - - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeTrue(); - } - - [Test] - public void is_in_queue_should_find_if_exact_daily_episode_is_in_queue() - { - WithFullQueue(); - - var parseResult = new RemoteEpisode - { - Quality = new QualityModel { Quality = Quality.Bluray720p, Proper = false }, - AirDate = new DateTime(2011, 12, 01), - Series = new Series { Title = "The Dailyshow", CleanTitle = Parser.NormalizeTitle("The Dailyshow"), SeriesType = SeriesTypes.Daily }, - }; - - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeTrue(); - } - - [Test] - public void is_in_queue_should_find_if_exact_full_season_release_is_in_queue() - { - WithFullQueue(); - - - var parseResult = new RemoteEpisode - { - Quality = new QualityModel { Quality = Quality.Bluray720p, Proper = false }, - FullSeason = true, - SeasonNumber = 5, - Series = new Series { Title = "My Name is earl", CleanTitle = Parser.NormalizeTitle("My Name is earl") }, - }; - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeTrue(); - } - - public static object[] DifferentEpisodeCases = - { - new object[] { 2, new[] { 5 }, "30 Rock", Quality.Bluray1080p, true }, //Same Series, Different Season, Episode - new object[] { 1, new[] { 6 }, "30 Rock", Quality.Bluray1080p, true }, //Same series, different episodes - new object[] { 1, new[] { 6, 7, 8 }, "30 Rock", Quality.Bluray1080p, true }, //Same series, different episodes - new object[] { 1, new[] { 6 }, "Some other show", Quality.Bluray1080p, true }, //Different series, same season, episode - new object[] { 1, new[] { 5 }, "Rock", Quality.Bluray1080p, true }, //Similar series, same season, episodes - new object[] { 1, new[] { 5 }, "30 Rock", Quality.Bluray720p, false }, //Same series, higher quality - new object[] { 1, new[] { 5 }, "30 Rock", Quality.HDTV720p, true } //Same series, higher quality - }; - - [Test, TestCaseSource("DifferentEpisodeCases")] - public void IsInQueue_should_not_find_diffrent_episode_queue(int season, int[] episodes, string title, Quality qualityType, bool proper) - { - WithFullQueue(); - - var parseResult = new RemoteEpisode - { - EpisodeTitle = "Title", - EpisodeNumbers = new List(episodes), - SeasonNumber = season, - Quality = new QualityModel { Quality = qualityType, Proper = proper }, - Series = new Series { Title = title, CleanTitle = Parser.NormalizeTitle(title) }, - }; - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeFalse(); - } - - public static object[] LowerQualityCases = - { - new object[] { 1, new[] { 5 }, "30 Rock", Quality.SDTV, false }, //Same Series, lower quality - new object[] { 1, new[] { 5 }, "30 rocK", Quality.SDTV, false }, //Same Series, different casing - new object[] { 1, new[] { 5 }, "30 RocK", Quality.HDTV720p, false }, //Same Series, same quality - new object[] { 1, new[] { 5, 6 }, "30 RocK", Quality.HDTV720p, false }, //Same Series, same quality, one different episode - new object[] { 1, new[] { 5, 6 }, "30 RocK", Quality.HDTV720p, false }, //Same Series, same quality, one different episode - new object[] { 4, new[] { 8 }, "Parks and Recreation", Quality.WEBDL720p, false }, //Same Series, same quality - }; - - [Test, TestCaseSource("LowerQualityCases")] - public void IsInQueue_should_find_same_or_lower_quality_episode_queue(int season, int[] episodes, string title, Quality qualityType, bool proper) - { - WithFullQueue(); - - var parseResult = new RemoteEpisode - { - EpisodeTitle = "Title", - EpisodeNumbers = new List(episodes), - SeasonNumber = season, - Quality = new QualityModel { Quality = qualityType, Proper = proper }, - Series = new Series { Title = title, CleanTitle = Parser.NormalizeTitle(title) }, - }; - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeTrue(); - } - - public static object[] DuplicateItemsCases = - { - new object[] { 5, new[] { 13 }, "The Big Bang Theory", Quality.SDTV, false }, //Same Series, lower quality - new object[] { 5, new[] { 13 }, "The Big Bang Theory", Quality.HDTV720p, false }, //Same Series, same quality - new object[] { 5, new[] { 13 }, "The Big Bang Theory", Quality.HDTV720p, true }, //Same Series, same quality - new object[] { 5, new[] { 13, 14 }, "The Big Bang Theory", Quality.HDTV720p, false } //Same Series, same quality, one diffrent episode - }; - - [Test, TestCaseSource("DuplicateItemsCases")] - public void IsInQueue_should_find_items_marked_as_duplicate(int season, int[] episodes, string title, Quality qualityType, bool proper) - { - WithFullQueue(); - - var parseResult = new RemoteEpisode - { - EpisodeTitle = "Title", - EpisodeNumbers = new List(episodes), - SeasonNumber = season, - Quality = new QualityModel { Quality = qualityType, Proper = proper }, - Series = new Series { Title = title, CleanTitle = Parser.NormalizeTitle(title) }, - }; - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeTrue(); - } - - public static object[] DoubleEpisodeCases = - { - new object[] { 3, new[] { 14, 15 }, "My Name Is Earl", Quality.Bluray720p, false }, - new object[] { 3, new[] { 15 }, "My Name Is Earl", Quality.DVD, false }, - new object[] { 3, new[] { 14 }, "My Name Is Earl", Quality.HDTV720p, false }, - new object[] { 3, new[] { 15, 16 }, "My Name Is Earl", Quality.SDTV, false } - }; - - [Test, TestCaseSource("DoubleEpisodeCases")] - public void IsInQueue_should_find_double_episodes_(int season, int[] episodes, string title, Quality qualityType, bool proper) - { - WithFullQueue(); - - var parseResult = new RemoteEpisode - { - EpisodeTitle = "Title", - EpisodeNumbers = new List(episodes), - SeasonNumber = season, - Quality = new QualityModel { Quality = qualityType, Proper = proper }, - Series = new Series { Title = title, CleanTitle = Parser.NormalizeTitle(title) }, - }; - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeTrue(); - } - - [Test] - public void IsInQueue_should_return_false_if_queue_is_empty() - { - WithEmptyQueue(); - - var parseResult = new RemoteEpisode - { - EpisodeTitle = "Title", - EpisodeNumbers = new List { 1 }, - SeasonNumber = 2, - Quality = new QualityModel { Quality = Quality.Bluray1080p, Proper = true }, - Series = new Series { Title = "Test", CleanTitle = Parser.NormalizeTitle("Test") }, - }; - - var result = Mocker.Resolve().IsInQueue(parseResult); - - result.Should().BeFalse(); - } - - [Test] - public void GetQueue_should_parse_timeleft_with_hours_greater_than_24_hours() - { - WithFullQueue(); - - var result = Mocker.Resolve().GetQueue(); - - result.Should().NotBeEmpty(); - var timeleft = result.First(q => q.Id == "SABnzbd_nzo_qv6ilb").Timeleft; - timeleft.Days.Should().Be(2); - timeleft.Hours.Should().Be(9); - timeleft.Minutes.Should().Be(27); - timeleft.Seconds.Should().Be(45); - } - - [TearDown] - public void TearDown() - { - ExceptionVerification.IgnoreWarns(); - } - - - } -}*/ \ No newline at end of file diff --git a/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs b/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs index 90d026325..c0b7e5fbf 100644 --- a/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs +++ b/src/NzbDrone.Core/Blacklisting/BlacklistRepository.cs @@ -1,4 +1,5 @@ -using NzbDrone.Core.Datastore; +using System; +using NzbDrone.Core.Datastore; using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Blacklisting @@ -17,7 +18,7 @@ public BlacklistRepository(IDatabase database, IEventAggregator eventAggregator) public bool Blacklisted(string sourceTitle) { - return Query.Any(e => e.SourceTitle == sourceTitle); + return Query.Any(e => e.SourceTitle.Contains(sourceTitle)); } } } diff --git a/src/NzbDrone.Core/IndexerSearch/SearchAndDownloadService.cs b/src/NzbDrone.Core/IndexerSearch/SearchAndDownloadService.cs deleted file mode 100644 index d15c9c63c..000000000 --- a/src/NzbDrone.Core/IndexerSearch/SearchAndDownloadService.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; - -namespace NzbDrone.Core.IndexerSearch -{ - - interface ISearchAndDownload - { - void SearchSingle(int seriesId, int seasonNumber, int episodeNumber); - void SearchDaily(int seriesId, DateTime airDate); - void SearchSeason(int seriesId, int seasonNumber); - } - - /* public class SearchAndDownloadService : ISearchAndDownload - { - private readonly ISearchForNzb _searchService; - private readonly IMakeDownloadDecision _downloadDecisionMaker; - - public SearchAndDownloadService(ISearchForNzb searchService, IMakeDownloadDecision downloadDecisionMaker) - { - _searchService = searchService; - _downloadDecisionMaker = downloadDecisionMaker; - } - - public void FetchSearchSingle(int seriesId, int seasonNumber, int episodeNumber) - { - var result = _searchService.SearchSingle(seriesId, seasonNumber, episodeNumber); - } - - public void SearchDaily(int seriesId, DateTime airDate) - { - throw new NotImplementedException(); - } - - public void SearchSeason(int seriesId, int seasonNumber) - { - throw new NotImplementedException(); - } - }*/ -} \ No newline at end of file