diff --git a/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/UpdateCleanTitleForArtistFixture.cs b/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/UpdateCleanTitleForArtistFixture.cs new file mode 100644 index 000000000..a7cf09a07 --- /dev/null +++ b/src/NzbDrone.Core.Test/Housekeeping/Housekeepers/UpdateCleanTitleForArtistFixture.cs @@ -0,0 +1,50 @@ +using FizzWare.NBuilder; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.Housekeeping.Housekeepers; +using NzbDrone.Core.Test.Framework; +using NzbDrone.Core.Music; + +namespace NzbDrone.Core.Test.Housekeeping.Housekeepers +{ + [TestFixture] + public class UpdateCleanTitleForArtistFixture : CoreTest + { + [Test] + public void should_update_clean_title() + { + var artist = Builder.CreateNew() + .With(s => s.Name = "Full Name") + .With(s => s.CleanName = "unclean") + .Build(); + + Mocker.GetMock() + .Setup(s => s.All()) + .Returns(new[] { artist }); + + Subject.Clean(); + + Mocker.GetMock() + .Verify(v => v.Update(It.Is(s => s.CleanName == "fullname")), Times.Once()); + } + + [Test] + public void should_not_update_unchanged_title() + { + var artist = Builder.CreateNew() + .With(s => s.Name = "Full Name") + .With(s => s.CleanName = "fullname") + .Build(); + + Mocker.GetMock() + .Setup(s => s.All()) + .Returns(new[] { artist }); + + Subject.Clean(); + + Mocker.GetMock() + .Verify(v => v.Update(It.Is(s => s.CleanName == "fullname")), Times.Never()); + } + } +} diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index a977a07a7..182175a3a 100644 --- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -200,6 +200,7 @@ + diff --git a/src/NzbDrone.Core/Housekeeping/Housekeepers/UpdateCleanTitleForArtist.cs b/src/NzbDrone.Core/Housekeeping/Housekeepers/UpdateCleanTitleForArtist.cs index 04dce6e36..a1c5a3227 100644 --- a/src/NzbDrone.Core/Housekeeping/Housekeepers/UpdateCleanTitleForArtist.cs +++ b/src/NzbDrone.Core/Housekeeping/Housekeepers/UpdateCleanTitleForArtist.cs @@ -19,8 +19,12 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers artists.ForEach(s => { - s.CleanName = s.CleanName.CleanArtistName(); - _artistRepository.Update(s); + var cleanName = s.Name.CleanArtistName(); + if (s.CleanName != cleanName) + { + s.CleanName = cleanName; + _artistRepository.Update(s); + } }); } }