From 051930455eb3eeae650b7615b07ac9f371c7f40d Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 20 May 2023 19:46:38 +0300 Subject: [PATCH] Add tests for normalizing IMDb IDs in ReleaseSearchService --- .../ReleaseSearchServiceFixture.cs | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/NzbDrone.Core.Test/IndexerSearchTests/ReleaseSearchServiceFixture.cs diff --git a/src/NzbDrone.Core.Test/IndexerSearchTests/ReleaseSearchServiceFixture.cs b/src/NzbDrone.Core.Test/IndexerSearchTests/ReleaseSearchServiceFixture.cs new file mode 100644 index 000000000..e67fda3f3 --- /dev/null +++ b/src/NzbDrone.Core.Test/IndexerSearchTests/ReleaseSearchServiceFixture.cs @@ -0,0 +1,91 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.Indexers; +using NzbDrone.Core.IndexerSearch; +using NzbDrone.Core.IndexerSearch.Definitions; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.IndexerSearchTests +{ + public class ReleaseSearchServiceFixture : CoreTest + { + private Mock _mockIndexer; + + [SetUp] + public void SetUp() + { + _mockIndexer = Mocker.GetMock(); + _mockIndexer.SetupGet(s => s.Definition).Returns(new IndexerDefinition { Id = 1 }); + _mockIndexer.SetupGet(s => s.SupportsSearch).Returns(true); + + Mocker.GetMock() + .Setup(s => s.Enabled(It.IsAny())) + .Returns(new List { _mockIndexer.Object }); + } + + private List WatchForSearchCriteria() + { + var result = new List(); + + _mockIndexer.Setup(v => v.Fetch(It.IsAny())) + .Callback(s => result.Add(s)) + .Returns(Task.FromResult(new IndexerPageableQueryResult())); + + _mockIndexer.Setup(v => v.Fetch(It.IsAny())) + .Callback(s => result.Add(s)) + .Returns(Task.FromResult(new IndexerPageableQueryResult())); + + return result; + } + + [TestCase("tt0183790", "0183790")] + [TestCase("0183790", "0183790")] + [TestCase("183790", "0183790")] + [TestCase("tt10001870", "10001870")] + [TestCase("10001870", "10001870")] + public void should_normalize_imdbid_movie_search_criteria(string input, string expected) + { + var allCriteria = WatchForSearchCriteria(); + + var request = new NewznabRequest + { + t = "movie", + imdbid = input + }; + + Subject.Search(request, new List { 1 }, false); + + var criteria = allCriteria.OfType().ToList(); + + criteria.Count.Should().Be(1); + criteria[0].ImdbId.Should().Be(expected); + } + + [TestCase("tt0183790", "0183790")] + [TestCase("0183790", "0183790")] + [TestCase("183790", "0183790")] + [TestCase("tt10001870", "10001870")] + [TestCase("10001870", "10001870")] + public void should_normalize_imdbid_tv_search_criteria(string input, string expected) + { + var allCriteria = WatchForSearchCriteria(); + + var request = new NewznabRequest + { + t = "tvsearch", + imdbid = input + }; + + Subject.Search(request, new List { 1 }, false); + + var criteria = allCriteria.OfType().ToList(); + + criteria.Count.Should().Be(1); + criteria[0].ImdbId.Should().Be(expected); + } + } +}