|
|
@ -1,4 +1,6 @@
|
|
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.IO;
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
using System.Linq;
|
|
|
|
using FizzWare.NBuilder;
|
|
|
|
using FizzWare.NBuilder;
|
|
|
|
using FluentAssertions;
|
|
|
|
using FluentAssertions;
|
|
|
|
using Moq;
|
|
|
|
using Moq;
|
|
|
@ -15,26 +17,33 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|
|
|
{
|
|
|
|
{
|
|
|
|
private Series _series;
|
|
|
|
private Series _series;
|
|
|
|
private EpisodeFile _episodeFile;
|
|
|
|
private EpisodeFile _episodeFile;
|
|
|
|
|
|
|
|
private readonly KeyValuePair<string, int> _positiveScore = new KeyValuePair<string, int>("Positive", 10);
|
|
|
|
|
|
|
|
private readonly KeyValuePair<string, int> _negativeScore = new KeyValuePair<string, int>("Negative", -10);
|
|
|
|
|
|
|
|
private KeyValuePair<string, int> _neutralScore = new KeyValuePair<string, int>("Neutral", 0);
|
|
|
|
|
|
|
|
|
|
|
|
[SetUp]
|
|
|
|
[SetUp]
|
|
|
|
public void Setup()
|
|
|
|
public void Setup()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_series = Builder<Series>.CreateNew().Build();
|
|
|
|
_series = Builder<Series>.CreateNew().Build();
|
|
|
|
_episodeFile = Builder<EpisodeFile>.CreateNew().Build();
|
|
|
|
_episodeFile = Builder<EpisodeFile>.CreateNew().Build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IPreferredWordService>()
|
|
|
|
|
|
|
|
.Setup(s => s.GetMatchingPreferredWordsAndScores(It.IsAny<Series>(), It.IsAny<string>(), 0))
|
|
|
|
|
|
|
|
.Returns(new List<KeyValuePair<string, int>>());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void GivenPreferredWordScore(string title, int score)
|
|
|
|
private void GivenPreferredWordScore(string title, params KeyValuePair<string, int>[] matches)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Mocker.GetMock<IPreferredWordService>()
|
|
|
|
Mocker.GetMock<IPreferredWordService>()
|
|
|
|
.Setup(s => s.Calculate(It.IsAny<Series>(), title, 0))
|
|
|
|
.Setup(s => s.GetMatchingPreferredWordsAndScores(It.IsAny<Series>(), title, 0))
|
|
|
|
.Returns(score);
|
|
|
|
.Returns(matches.ToList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
|
public void should_return_score_for_relative_file_name_when_it_is_higher_than_scene_name()
|
|
|
|
public void should_return_score_for_relative_file_name_when_it_is_higher_than_scene_name()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GivenPreferredWordScore(_episodeFile.SceneName, 10);
|
|
|
|
GivenPreferredWordScore(_episodeFile.SceneName, _positiveScore);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -45,7 +54,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|
|
|
_episodeFile.SceneName = null;
|
|
|
|
_episodeFile.SceneName = null;
|
|
|
|
_episodeFile.RelativePath = null;
|
|
|
|
_episodeFile.RelativePath = null;
|
|
|
|
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -55,7 +64,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_episodeFile.SceneName = null;
|
|
|
|
_episodeFile.SceneName = null;
|
|
|
|
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -63,17 +72,17 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
|
public void should_return_score_for_scene_name_when_higher_than_relative_file_name()
|
|
|
|
public void should_return_score_for_scene_name_when_higher_than_relative_file_name()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GivenPreferredWordScore(_episodeFile.SceneName, 50);
|
|
|
|
GivenPreferredWordScore(_episodeFile.SceneName, _positiveScore, _positiveScore, _positiveScore);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(50);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
|
public void should_return_score_for_relative_file_if_available()
|
|
|
|
public void should_return_score_for_relative_file_if_available()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _positiveScore, _positiveScore);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, 50);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, _positiveScore, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(20);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -86,12 +95,12 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|
|
|
|
|
|
|
|
|
|
|
_episodeFile.OriginalFilePath = Path.Combine(folderName, fileName);
|
|
|
|
_episodeFile.OriginalFilePath = Path.Combine(folderName, fileName);
|
|
|
|
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _positiveScore);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, 50);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, _positiveScore, _positiveScore);
|
|
|
|
GivenPreferredWordScore(folderName, 60);
|
|
|
|
GivenPreferredWordScore(folderName, _positiveScore, _positiveScore, _positiveScore);
|
|
|
|
GivenPreferredWordScore(fileName, 50);
|
|
|
|
GivenPreferredWordScore(fileName, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(60);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
@ -102,12 +111,42 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|
|
|
|
|
|
|
|
|
|
|
_episodeFile.OriginalFilePath = Path.Combine(folderName, fileName);
|
|
|
|
_episodeFile.OriginalFilePath = Path.Combine(folderName, fileName);
|
|
|
|
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, 20);
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _positiveScore);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, 50);
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, _positiveScore, _positiveScore);
|
|
|
|
GivenPreferredWordScore(folderName, 40);
|
|
|
|
GivenPreferredWordScore(folderName, _positiveScore, _positiveScore);
|
|
|
|
GivenPreferredWordScore(fileName, 50);
|
|
|
|
GivenPreferredWordScore(fileName, _positiveScore, _positiveScore, _positiveScore);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(30);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
|
|
public void should_return_negative_score_if_0_result_has_no_matches()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var folderName = "folder-name";
|
|
|
|
|
|
|
|
var fileName = "file-name";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_episodeFile.OriginalFilePath = Path.Combine(folderName, fileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _negativeScore);
|
|
|
|
|
|
|
|
GivenPreferredWordScore(fileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(-10);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
|
|
public void should_return_0_score_if_0_result_has_matches()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var folderName = "folder-name";
|
|
|
|
|
|
|
|
var fileName = "file-name";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_episodeFile.OriginalFilePath = Path.Combine(folderName, fileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.RelativePath, _negativeScore);
|
|
|
|
|
|
|
|
GivenPreferredWordScore(_episodeFile.Path, _negativeScore);
|
|
|
|
|
|
|
|
GivenPreferredWordScore(folderName, _negativeScore);
|
|
|
|
|
|
|
|
GivenPreferredWordScore(fileName, _neutralScore);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(50);
|
|
|
|
Subject.Calculate(_series, _episodeFile).Should().Be(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|