diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index dce67f8c2..84a4070be 100644
--- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -328,6 +328,7 @@
+
diff --git a/src/NzbDrone.Core.Test/Profiles/Releases/PreferredWordService/GetMatchingPreferredWordsFixture.cs b/src/NzbDrone.Core.Test/Profiles/Releases/PreferredWordService/GetMatchingPreferredWordsFixture.cs
new file mode 100644
index 000000000..d261bf18a
--- /dev/null
+++ b/src/NzbDrone.Core.Test/Profiles/Releases/PreferredWordService/GetMatchingPreferredWordsFixture.cs
@@ -0,0 +1,79 @@
+using System.Collections.Generic;
+using System.Linq;
+using FizzWare.NBuilder;
+using FluentAssertions;
+using Moq;
+using NUnit.Framework;
+using NzbDrone.Core.Profiles.Releases;
+using NzbDrone.Core.Test.Framework;
+using NzbDrone.Core.Music;
+
+namespace NzbDrone.Core.Test.Profiles.Releases.PreferredWordService
+{
+ [TestFixture]
+ public class GetMatchingPreferredWordsFixture : CoreTest
+ {
+ private Artist _artist = null;
+ private List _releaseProfiles = null;
+ private string _title = "Artist.Name-Album.Name-2018-Flac-Vinyl-Lidarr";
+
+ [SetUp]
+ public void Setup()
+ {
+ _artist = Builder.CreateNew()
+ .With(s => s.Tags = new HashSet(new[] { 1, 2 }))
+ .Build();
+
+ _releaseProfiles = new List();
+
+ _releaseProfiles.Add(new ReleaseProfile
+ {
+ Preferred = new List>
+ {
+ new KeyValuePair("Vinyl", 5),
+ new KeyValuePair("CD", -10)
+ }
+ });
+
+
+ Mocker.GetMock()
+ .Setup(s => s.MatchingTerm(It.IsAny(), _title))
+ .Returns((term, title) => title.Contains(term) ? term : null);
+ }
+
+
+ private void GivenReleaseProfile()
+ {
+ Mocker.GetMock()
+ .Setup(s => s.AllForTags(It.IsAny>()))
+ .Returns(_releaseProfiles);
+ }
+
+ [Test]
+ public void should_return_empty_list_when_there_are_no_release_profiles()
+ {
+ Mocker.GetMock()
+ .Setup(s => s.AllForTags(It.IsAny>()))
+ .Returns(new List());
+
+ Subject.GetMatchingPreferredWords(_artist, _title).Should().BeEmpty();
+ }
+
+ [Test]
+ public void should_return_empty_list_when_there_are_no_matching_preferred_words()
+ {
+ _releaseProfiles.First().Preferred.RemoveAt(0);
+ GivenReleaseProfile();
+
+ Subject.GetMatchingPreferredWords(_artist, _title).Should().BeEmpty();
+ }
+
+ [Test]
+ public void should_return_list_of_matching_terms()
+ {
+ GivenReleaseProfile();
+
+ Subject.GetMatchingPreferredWords(_artist, _title).Should().Contain(new[] { "Vinyl" });
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Profiles/Releases/TermMatchers/CaseInsensitiveTermMatcher.cs b/src/NzbDrone.Core/Profiles/Releases/TermMatchers/CaseInsensitiveTermMatcher.cs
index 7a6eb9224..d8fa49120 100644
--- a/src/NzbDrone.Core/Profiles/Releases/TermMatchers/CaseInsensitiveTermMatcher.cs
+++ b/src/NzbDrone.Core/Profiles/Releases/TermMatchers/CaseInsensitiveTermMatcher.cs
@@ -16,7 +16,12 @@ namespace NzbDrone.Core.Profiles.Releases.TermMatchers
public string MatchingTerm(string value)
{
- return _term;
+ if (value.ToLowerInvariant().Contains(_term))
+ {
+ return _term;
+ }
+
+ return null;
}
}
}