Improve error message when deleting a profile that is in use

pull/221/head
Qstick 7 years ago
parent e8771c9c78
commit 425a9045b8

@ -41,15 +41,20 @@ namespace NzbDrone.Core.Test.Languages
[Test] [Test]
public void should_not_be_able_to_delete_profile_if_assigned_to_artist() public void should_not_be_able_to_delete_profile_if_assigned_to_artist()
{ {
var profile = Builder<LanguageProfile>.CreateNew()
.With(p => p.Id = 2)
.Build();
var artistList = Builder<Artist>.CreateListOfSize(3) var artistList = Builder<Artist>.CreateListOfSize(3)
.Random(1) .Random(1)
.With(c => c.LanguageProfileId = 2) .With(c => c.LanguageProfileId = profile.Id)
.Build().ToList(); .Build().ToList();
Mocker.GetMock<IArtistService>().Setup(c => c.GetAllArtists()).Returns(artistList); Mocker.GetMock<IArtistService>().Setup(c => c.GetAllArtists()).Returns(artistList);
Mocker.GetMock<ILanguageProfileRepository>().Setup(c => c.Get(profile.Id)).Returns(profile);
Assert.Throws<LanguageProfileInUseException>(() => Subject.Delete(2)); Assert.Throws<LanguageProfileInUseException>(() => Subject.Delete(profile.Id));
Mocker.GetMock<ILanguageProfileRepository>().Verify(c => c.Delete(It.IsAny<int>()), Times.Never()); Mocker.GetMock<ILanguageProfileRepository>().Verify(c => c.Delete(It.IsAny<int>()), Times.Never());

@ -41,15 +41,20 @@ namespace NzbDrone.Core.Test.Profiles.Metadata
[Test] [Test]
public void should_not_be_able_to_delete_profile_if_assigned_to_artist() public void should_not_be_able_to_delete_profile_if_assigned_to_artist()
{ {
var profile = Builder<MetadataProfile>.CreateNew()
.With(p => p.Id = 2)
.Build();
var artistList = Builder<Artist>.CreateListOfSize(3) var artistList = Builder<Artist>.CreateListOfSize(3)
.Random(1) .Random(1)
.With(c => c.MetadataProfileId = 2) .With(c => c.MetadataProfileId = profile.Id)
.Build().ToList(); .Build().ToList();
Mocker.GetMock<IArtistService>().Setup(c => c.GetAllArtists()).Returns(artistList); Mocker.GetMock<IArtistService>().Setup(c => c.GetAllArtists()).Returns(artistList);
Mocker.GetMock<IMetadataProfileRepository>().Setup(c => c.Get(profile.Id)).Returns(profile);
Assert.Throws<MetadataProfileInUseException>(() => Subject.Delete(2)); Assert.Throws<MetadataProfileInUseException>(() => Subject.Delete(profile.Id));
Mocker.GetMock<IMetadataProfileRepository>().Verify(c => c.Delete(It.IsAny<int>()), Times.Never()); Mocker.GetMock<IMetadataProfileRepository>().Verify(c => c.Delete(It.IsAny<int>()), Times.Never());

@ -41,15 +41,20 @@ namespace NzbDrone.Core.Test.Profiles
[Test] [Test]
public void should_not_be_able_to_delete_profile_if_assigned_to_artist() public void should_not_be_able_to_delete_profile_if_assigned_to_artist()
{ {
var profile = Builder<Profile>.CreateNew()
.With(p => p.Id = 2)
.Build();
var artistList = Builder<Artist>.CreateListOfSize(3) var artistList = Builder<Artist>.CreateListOfSize(3)
.Random(1) .Random(1)
.With(c => c.ProfileId = 2) .With(c => c.ProfileId = profile.Id)
.Build().ToList(); .Build().ToList();
Mocker.GetMock<IArtistService>().Setup(c => c.GetAllArtists()).Returns(artistList); Mocker.GetMock<IArtistService>().Setup(c => c.GetAllArtists()).Returns(artistList);
Mocker.GetMock<IProfileRepository>().Setup(c => c.Get(profile.Id)).Returns(profile);
Assert.Throws<ProfileInUseException>(() => Subject.Delete(2)); Assert.Throws<ProfileInUseException>(() => Subject.Delete(profile.Id));
Mocker.GetMock<IProfileRepository>().Verify(c => c.Delete(It.IsAny<int>()), Times.Never()); Mocker.GetMock<IProfileRepository>().Verify(c => c.Delete(It.IsAny<int>()), Times.Never());

@ -1,13 +1,14 @@
using NzbDrone.Common.Exceptions; using System.Net;
using NzbDrone.Core.Exceptions;
namespace NzbDrone.Core.Profiles.Languages namespace NzbDrone.Core.Profiles.Languages
{ {
public class LanguageProfileInUseException : NzbDroneException public class LanguageProfileInUseException : NzbDroneClientException
{ {
public LanguageProfileInUseException(int profileId) public LanguageProfileInUseException(string name)
: base("Language profile [{0}] is in use.", profileId) : base(HttpStatusCode.BadRequest, "Language profile [{0}] is in use.", name)
{ {
} }
} }
} }

@ -45,7 +45,8 @@ namespace NzbDrone.Core.Profiles.Languages
{ {
if (_artistService.GetAllArtists().Any(c => c.LanguageProfileId == id)) if (_artistService.GetAllArtists().Any(c => c.LanguageProfileId == id))
{ {
throw new LanguageProfileInUseException(id); var profile = _profileRepository.Get(id);
throw new LanguageProfileInUseException(profile.Name);
} }
_profileRepository.Delete(id); _profileRepository.Delete(id);

@ -1,11 +1,12 @@
using NzbDrone.Common.Exceptions; using System.Net;
using NzbDrone.Core.Exceptions;
namespace NzbDrone.Core.Profiles.Metadata namespace NzbDrone.Core.Profiles.Metadata
{ {
public class MetadataProfileInUseException : NzbDroneException public class MetadataProfileInUseException : NzbDroneClientException
{ {
public MetadataProfileInUseException(int profileId) public MetadataProfileInUseException(string name)
: base("Metadata profile [{0}] is in use.", profileId) : base(HttpStatusCode.BadRequest, "Metadata profile [{0}] is in use.", name)
{ {
} }

@ -44,7 +44,8 @@ namespace NzbDrone.Core.Profiles.Metadata
{ {
if (_artistService.GetAllArtists().Any(c => c.MetadataProfileId == id)) if (_artistService.GetAllArtists().Any(c => c.MetadataProfileId == id))
{ {
throw new MetadataProfileInUseException(id); var profile = _profileRepository.Get(id);
throw new MetadataProfileInUseException(profile.Name);
} }
_profileRepository.Delete(id); _profileRepository.Delete(id);

@ -1,11 +1,12 @@
using NzbDrone.Common.Exceptions; using System.Net;
using NzbDrone.Core.Exceptions;
namespace NzbDrone.Core.Profiles.Qualities namespace NzbDrone.Core.Profiles.Qualities
{ {
public class ProfileInUseException : NzbDroneException public class ProfileInUseException : NzbDroneClientException
{ {
public ProfileInUseException(int profileId) public ProfileInUseException(string name)
: base("Profile [{0}] is in use.", profileId) : base(HttpStatusCode.BadRequest, "Profile [{0}] is in use.", name)
{ {
} }

@ -49,7 +49,8 @@ namespace NzbDrone.Core.Profiles.Qualities
{ {
if (_artistService.GetAllArtists().Any(c => c.ProfileId == id)) if (_artistService.GetAllArtists().Any(c => c.ProfileId == id))
{ {
throw new ProfileInUseException(id); var profile = _profileRepository.Get(id);
throw new ProfileInUseException(profile.Name);
} }
_profileRepository.Delete(id); _profileRepository.Delete(id);

Loading…
Cancel
Save