diff --git a/NzbDrone.Core.Test/SeriesProviderTest.cs b/NzbDrone.Core.Test/SeriesProviderTest.cs index 63796e6ea..d2b271695 100644 --- a/NzbDrone.Core.Test/SeriesProviderTest.cs +++ b/NzbDrone.Core.Test/SeriesProviderTest.cs @@ -10,6 +10,7 @@ using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; using NzbDrone.Core.Repository.Quality; using NzbDrone.Core.Test.Framework; +using PetaPoco; // ReSharper disable InconsistentNaming namespace NzbDrone.Core.Test @@ -350,5 +351,129 @@ namespace NzbDrone.Core.Test series.QualityProfile.Should().NotBeNull(); series.QualityProfileId.Should().Be(fakeQuality.QualityProfileId); } + + [Test] + public void SeriesPathExists_exact_match() + { + var mocker = new AutoMoqer(MockBehavior.Strict); + var db = MockLib.GetEmptyDatabase(); + mocker.SetConstant(db); + + var path = @"C:\Test\TV\30 Rock"; + + var fakeSeries = Builder.CreateListOfSize(10) + .WhereAll() + .Have(c => c.QualityProfileId = 1) + .WhereTheFirst(1) + .Have(c => c.Path = path) + .Build(); + var fakeQuality = Builder.CreateNew().Build(); + + db.InsertMany(fakeSeries); + db.Insert(fakeQuality); + + //Act + mocker.Resolve(); + //mocker.GetMock().Setup(s => s.Fetch(It.IsAny())).Returns( + //fakeSeries.ToList()); + + var result = mocker.Resolve().SeriesPathExists(path); + + //Assert + result.Should().BeTrue(); + } + + [Test] + public void SeriesPathExists_match() + { + var mocker = new AutoMoqer(MockBehavior.Strict); + var db = MockLib.GetEmptyDatabase(); + mocker.SetConstant(db); + + var path = @"C:\Test\TV\30 Rock"; + + var fakeSeries = Builder.CreateListOfSize(10) + .WhereAll() + .Have(c => c.QualityProfileId = 1) + .WhereTheFirst(1) + .Have(c => c.Path = path) + .Build(); + var fakeQuality = Builder.CreateNew().Build(); + + db.InsertMany(fakeSeries); + db.Insert(fakeQuality); + + //Act + mocker.Resolve(); + //mocker.GetMock().Setup(s => s.Fetch(It.IsAny())).Returns( + //fakeSeries.ToList()); + + var result = mocker.Resolve().SeriesPathExists(path.ToUpper()); + + //Assert + result.Should().BeTrue(); + } + + [Test] + public void SeriesPathExists_match_alt() + { + var mocker = new AutoMoqer(MockBehavior.Strict); + var db = MockLib.GetEmptyDatabase(); + mocker.SetConstant(db); + + var path = @"C:\Test\TV\The Simpsons"; + + var fakeSeries = Builder.CreateListOfSize(10) + .WhereAll() + .Have(c => c.QualityProfileId = 1) + .WhereTheFirst(1) + .Have(c => c.Path = path) + .Build(); + var fakeQuality = Builder.CreateNew().Build(); + + db.InsertMany(fakeSeries); + db.Insert(fakeQuality); + + //Act + mocker.Resolve(); + //mocker.GetMock().Setup(s => s.Fetch(It.IsAny())).Returns( + //fakeSeries.ToList()); + + var result = mocker.Resolve().SeriesPathExists(@"c:\Test\Tv\the sIMpsons"); + + //Assert + result.Should().BeTrue(); + } + + [Test] + public void SeriesPathExists_match_false() + { + var mocker = new AutoMoqer(MockBehavior.Strict); + var db = MockLib.GetEmptyDatabase(); + mocker.SetConstant(db); + + var path = @"C:\Test\TV\30 Rock"; + + var fakeSeries = Builder.CreateListOfSize(10) + .WhereAll() + .Have(c => c.QualityProfileId = 1) + .WhereTheFirst(1) + .Have(c => c.Path = path) + .Build(); + var fakeQuality = Builder.CreateNew().Build(); + + db.InsertMany(fakeSeries); + db.Insert(fakeQuality); + + //Act + mocker.Resolve(); + //mocker.GetMock().Setup(s => s.Fetch(It.IsAny())).Returns( + //fakeSeries.ToList()); + + var result = mocker.Resolve().SeriesPathExists(@"C:\Test\TV\Not A match"); + + //Assert + result.Should().BeFalse(); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/SeriesProvider.cs b/NzbDrone.Core/Providers/SeriesProvider.cs index 8daeb1c89..038e1c5ab 100644 --- a/NzbDrone.Core/Providers/SeriesProvider.cs +++ b/NzbDrone.Core/Providers/SeriesProvider.cs @@ -178,7 +178,7 @@ namespace NzbDrone.Core.Providers public virtual bool SeriesPathExists(string cleanPath) { - if (GetAllSeries().Any(s => s.Path == cleanPath)) + if (GetAllSeries().Any(s => s.Path.ToLower() == cleanPath.ToLower())) return true; return false;