diff --git a/src/NzbDrone.Core.Test/MusicTests/RefreshArtistServiceFixture.cs b/src/NzbDrone.Core.Test/MusicTests/RefreshArtistServiceFixture.cs index 7e6749ffb..f8f170249 100644 --- a/src/NzbDrone.Core.Test/MusicTests/RefreshArtistServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MusicTests/RefreshArtistServiceFixture.cs @@ -43,7 +43,9 @@ public void Setup() _remoteAlbums = _albums.JsonClone(); _remoteAlbums.ForEach(x => x.Id = 0); - var metadata = Builder.CreateNew().Build(); + var metadata = Builder.CreateNew() + .With(m => m.Status = ArtistStatusType.Continuing) + .Build(); _artist = Builder.CreateNew() .With(a => a.Metadata = metadata) @@ -53,6 +55,14 @@ public void Setup() .Setup(s => s.GetArtists(new List { _artist.Id })) .Returns(new List { _artist }); + Mocker.GetMock(MockBehavior.Strict) + .Setup(s => s.GetArtist(It.IsAny())) + .Returns(_artist); + + Mocker.GetMock(MockBehavior.Strict) + .Setup(s => s.FindById(It.IsAny())) + .Returns(default(Artist)); + Mocker.GetMock(MockBehavior.Strict) .Setup(s => s.InsertMany(It.IsAny>())); @@ -109,8 +119,12 @@ private void GivenAlbumsForRefresh(List albums) private void AllowArtistUpdate() { Mocker.GetMock(MockBehavior.Strict) - .Setup(x => x.UpdateArtist(It.IsAny(), It.IsAny())) - .Returns((Artist a, bool updated) => a); + .Setup(x => x.UpdateArtist(It.IsAny(), true)) + .Returns((Artist a, bool publishEvent) => a); + + Mocker.GetMock(MockBehavior.Strict) + .Setup(x => x.UpdateArtist(It.IsAny(), false)) + .Returns((Artist a, bool publishEvent) => a); } [Test] @@ -177,13 +191,16 @@ public void should_call_new_album_monitor_service_when_adding_album() [Test] public void should_log_error_and_delete_if_musicbrainz_id_not_found_and_author_has_no_files() { + GivenAlbumsForRefresh(new List()); + AllowArtistUpdate(); + Mocker.GetMock() .Setup(x => x.DeleteArtist(It.IsAny(), It.IsAny(), It.IsAny())); Subject.Execute(new RefreshArtistCommand(new List { _artist.Id })); Mocker.GetMock() - .Verify(v => v.UpdateArtist(It.IsAny(), It.IsAny()), Times.Never()); + .Verify(v => v.UpdateArtist(It.Is(s => s.Metadata.Value.Status == ArtistStatusType.Deleted), true), Times.Once()); Mocker.GetMock() .Verify(v => v.DeleteArtist(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once()); @@ -197,16 +214,53 @@ public void should_log_error_but_not_delete_if_musicbrainz_id_not_found_and_arti { GivenArtistFiles(); GivenAlbumsForRefresh(new List()); + AllowArtistUpdate(); + + Subject.Execute(new RefreshArtistCommand(new List { _artist.Id })); + + Mocker.GetMock() + .Verify(v => v.UpdateArtist(It.Is(s => s.Metadata.Value.Status == ArtistStatusType.Deleted), true), Times.Once()); + + Mocker.GetMock() + .Verify(v => v.DeleteArtist(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never()); + + ExceptionVerification.ExpectedErrors(2); + } + + [Test] + public void should_log_error_if_musicbrainz_id_not_found() + { + GivenAlbumsForRefresh(new List()); + AllowArtistUpdate(); + + Mocker.GetMock() + .Setup(x => x.DeleteArtist(It.IsAny(), It.IsAny(), It.IsAny())); + + Subject.Execute(new RefreshArtistCommand(new List { _artist.Id })); + + Mocker.GetMock() + .Verify(v => v.UpdateArtist(It.Is(s => s.Metadata.Value.Status == ArtistStatusType.Deleted), It.IsAny()), Times.Once()); + + ExceptionVerification.ExpectedErrors(1); + ExceptionVerification.ExpectedWarns(1); + } + + [Test] + public void should_not_remark_as_deleted_if_musicbrainz_id_not_found() + { + _artist.Metadata.Value.Status = ArtistStatusType.Deleted; + GivenAlbumsForRefresh(new List()); + + Mocker.GetMock() + .Setup(x => x.DeleteArtist(It.IsAny(), It.IsAny(), It.IsAny())); Subject.Execute(new RefreshArtistCommand(new List { _artist.Id })); Mocker.GetMock() .Verify(v => v.UpdateArtist(It.IsAny(), It.IsAny()), Times.Never()); - Mocker.GetMock() - .Verify(v => v.DeleteArtist(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never()); - - ExceptionVerification.ExpectedErrors(2); + ExceptionVerification.ExpectedErrors(1); + ExceptionVerification.ExpectedWarns(1); } [Test]