New: Release Profiles, Frontend updates (#580)

* New: Release Profiles - UI Updates

* New: Release Profiles - API Changes

* New: Release Profiles - Test Updates

* New: Release Profiles - Backend Updates

* New: Interactive Artist Search

* New: Change Montiored on Album Details Page

* New: Show Duration on Album Details Page

* Fixed: Manual Import not working if no albums are Missing

* Fixed: Sort search input by sortTitle

* Fixed: Queue columnLabel throwing JS error
This commit is contained in:
Qstick
2019-02-23 17:39:11 -05:00
committed by GitHub
parent f126eafd26
commit 3f064c94b9
409 changed files with 6882 additions and 3176 deletions
@@ -2,7 +2,7 @@ using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Profiles.Qualities;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Profiles.Languages;
@@ -13,11 +13,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
[TestFixture]
public class CutoffSpecificationFixture : CoreTest<UpgradableSpecification>
{
private static readonly int NoPreferredWordScore = 0;
[Test]
public void should_return_true_if_current_album_is_less_than_cutoff()
{
Subject.CutoffNotMet(
new Profile
new QualityProfile
{
Cutoff = Quality.MP3_256.Id,
@@ -28,14 +30,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Languages = LanguageFixture.GetDefaultLanguages(Language.English),
Cutoff = Language.English
},
new QualityModel(Quality.MP3_192, new Revision(version: 2)), Language.English).Should().BeTrue();
new QualityModel(Quality.MP3_192, new Revision(version: 2)), Language.English, NoPreferredWordScore).Should().BeTrue();
}
[Test]
public void should_return_false_if_current_album_is_equal_to_cutoff()
{
Subject.CutoffNotMet(
new Profile
new QualityProfile
{
Cutoff = Quality.MP3_256.Id,
Items = Qualities.QualityFixture.GetDefaultQualities()
@@ -45,14 +47,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Languages = LanguageFixture.GetDefaultLanguages(Language.English),
Cutoff = Language.English
},
new QualityModel(Quality.MP3_256, new Revision(version: 2)), Language.English).Should().BeFalse();
new QualityModel(Quality.MP3_256, new Revision(version: 2)), Language.English, NoPreferredWordScore).Should().BeFalse();
}
[Test]
public void should_return_false_if_current_album_is_greater_than_cutoff()
{
Subject.CutoffNotMet(
new Profile
new QualityProfile
{
Cutoff = Quality.MP3_256.Id,
@@ -63,14 +65,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Languages = LanguageFixture.GetDefaultLanguages(Language.English),
Cutoff = Language.English
},
new QualityModel(Quality.MP3_320, new Revision(version: 2)), Language.English).Should().BeFalse();
new QualityModel(Quality.MP3_320, new Revision(version: 2)), Language.English, NoPreferredWordScore).Should().BeFalse();
}
[Test]
public void should_return_true_when_new_album_is_proper_but_existing_is_not()
{
Subject.CutoffNotMet(
new Profile
new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
@@ -81,7 +83,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Languages = LanguageFixture.GetDefaultLanguages(Language.English),
Cutoff = Language.English
},
new QualityModel(Quality.MP3_320, new Revision(version: 1)),Language.English,
new QualityModel(Quality.MP3_320, new Revision(version: 1)),
Language.English,
NoPreferredWordScore,
new QualityModel(Quality.MP3_320, new Revision(version: 2))).Should().BeTrue();
}
@@ -90,7 +94,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_false_if_cutoff_is_met_and_quality_is_higher()
{
Subject.CutoffNotMet(
new Profile
new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
@@ -101,7 +105,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
Languages = LanguageFixture.GetDefaultLanguages(Language.English),
Cutoff = Language.English
},
new QualityModel(Quality.MP3_320, new Revision(version: 2)),Language.English,
new QualityModel(Quality.MP3_320, new Revision(version: 2)), Language.English,
NoPreferredWordScore,
new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeFalse();
}
@@ -109,7 +114,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_true_if_quality_cutoff_is_met_and_quality_is_higher_but_language_is_not_met()
{
Profile _profile = new Profile
QualityProfile _profile = new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities(),
@@ -125,6 +130,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_langProfile,
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
Language.English,
NoPreferredWordScore,
new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeTrue();
}
@@ -132,7 +138,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_false_if_cutoff_is_met_and_quality_is_higher_and_language_is_met()
{
Profile _profile = new Profile
QualityProfile _profile = new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities(),
@@ -149,6 +155,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_langProfile,
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
Language.Spanish,
NoPreferredWordScore,
new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeFalse();
}
@@ -156,7 +163,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_false_if_cutoff_is_met_and_quality_is_higher_and_language_is_higher()
{
Profile _profile = new Profile
QualityProfile _profile = new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities(),
@@ -173,6 +180,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_langProfile,
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
Language.French,
NoPreferredWordScore,
new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeFalse();
}
@@ -180,7 +188,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_true_if_cutoff_is_not_met_and_new_quality_is_higher_and_language_is_higher()
{
Profile _profile = new Profile
QualityProfile _profile = new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities(),
@@ -197,6 +205,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_langProfile,
new QualityModel(Quality.MP3_256, new Revision(version: 2)),
Language.French,
NoPreferredWordScore,
new QualityModel(Quality.FLAC, new Revision(version: 2))).Should().BeTrue();
}
@@ -204,7 +213,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
public void should_return_true_if_cutoff_is_not_met_and_language_is_higher()
{
Profile _profile = new Profile
QualityProfile _profile = new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities(),
@@ -220,7 +229,32 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
_profile,
_langProfile,
new QualityModel(Quality.MP3_256, new Revision(version: 2)),
Language.French).Should().BeTrue();
Language.French, NoPreferredWordScore).Should().BeTrue();
}
[Test]
public void should_return_true_if_cutoffs_are_met_and_score_is_higher()
{
QualityProfile _profile = new QualityProfile
{
Cutoff = Quality.MP3_320.Id,
Items = Qualities.QualityFixture.GetDefaultQualities(),
};
LanguageProfile _langProfile = new LanguageProfile
{
Cutoff = Language.Spanish,
Languages = LanguageFixture.GetDefaultLanguages()
};
Subject.CutoffNotMet(
_profile,
_langProfile,
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
Language.Spanish,
NoPreferredWordScore,
new QualityModel(Quality.FLAC, new Revision(version: 2)),
10).Should().BeTrue();
}
}
}