New: Update DB to store all releases for an album (#517)

* New: Store all releases for an album and track artists

* Add Overview, links and release date by release

* Tidy up

* Fix metadata refresh errors following musicbrainz edits
This commit is contained in:
ta264
2018-12-15 00:02:43 +00:00
committed by Qstick
parent 24bdb5a891
commit c392569a63
136 changed files with 2305 additions and 1120 deletions

View File

@@ -41,6 +41,14 @@ namespace NzbDrone.Core.Test.MetadataSource.SkyHook
Allowed = true
}
},
ReleaseStatuses = new List<ProfileReleaseStatusItem>
{
new ProfileReleaseStatusItem
{
ReleaseStatus = ReleaseStatus.Official,
Allowed = true
}
}
};
Mocker.GetMock<IMetadataProfileService>()
@@ -58,34 +66,33 @@ namespace NzbDrone.Core.Test.MetadataSource.SkyHook
{
var details = Subject.GetArtistInfo(mbId, 1);
ValidateArtist(details.Item1);
ValidateAlbums(details.Item2);
ValidateArtist(details);
ValidateAlbums(details.Albums.Value);
details.Item1.Name.Should().Be(name);
details.Name.Should().Be(name);
}
[TestCase("12fa3845-7c62-36e5-a8da-8be137155a72", null, "Hysteria")]
public void should_be_able_to_get_album_detail(string mbId, string release, string name)
[TestCase("12fa3845-7c62-36e5-a8da-8be137155a72", "Hysteria")]
public void should_be_able_to_get_album_detail(string mbId, string name)
{
var details = Subject.GetAlbumInfo(mbId, release);
var details = Subject.GetAlbumInfo(mbId);
ValidateAlbums(new List<Album> {details.Item1});
ValidateAlbums(new List<Album> {details.Item2});
details.Item1.Title.Should().Be(name);
details.Item2.Title.Should().Be(name);
}
[TestCase("12fa3845-7c62-36e5-a8da-8be137155a72", "3c186b52-ca73-46a3-a8e6-04559bfbb581",1, 13, "Hysteria")]
[TestCase("12fa3845-7c62-36e5-a8da-8be137155a72", "dee9ca6f-4f84-4359-82a9-b75a37ffc316",2, 27,"Hysteria")]
public void should_be_able_to_get_album_detail_with_release(string mbId, string release, int mediaCount, int trackCount, string name)
{
var details = Subject.GetAlbumInfo(mbId, release);
var details = Subject.GetAlbumInfo(mbId);
ValidateAlbums(new List<Album> { details.Item1 });
ValidateAlbums(new List<Album> { details.Item2 });
details.Item1.Media.Count.Should().Be(mediaCount);
details.Item2.Count.Should().Be(trackCount);
details.Item1.Title.Should().Be(name);
details.Item2.AlbumReleases.Value.Single(r => r.ForeignReleaseId == release).Media.Count.Should().Be(mediaCount);
details.Item2.AlbumReleases.Value.Single(r => r.ForeignReleaseId == release).Tracks.Value.Count.Should().Be(trackCount);
details.Item2.Title.Should().Be(name);
}
[Test]
@@ -103,13 +110,13 @@ namespace NzbDrone.Core.Test.MetadataSource.SkyHook
[Test]
public void getting_details_of_invalid_album()
{
Assert.Throws<AlbumNotFoundException>(() => Subject.GetAlbumInfo("66c66aaa-6e2f-4930-8610-912e24c63ed1",null));
Assert.Throws<AlbumNotFoundException>(() => Subject.GetAlbumInfo("66c66aaa-6e2f-4930-8610-912e24c63ed1"));
}
[Test]
public void getting_details_of_invalid_guid_for_album()
{
Assert.Throws<BadRequestException>(() => Subject.GetAlbumInfo("66c66aaa-6e2f-4930-aaaaaa", null));
Assert.Throws<BadRequestException>(() => Subject.GetAlbumInfo("66c66aaa-6e2f-4930-aaaaaa"));
}
private void ValidateArtist(Artist artist)
@@ -118,8 +125,8 @@ namespace NzbDrone.Core.Test.MetadataSource.SkyHook
artist.Name.Should().NotBeNullOrWhiteSpace();
artist.CleanName.Should().Be(Parser.Parser.CleanArtistName(artist.Name));
artist.SortName.Should().Be(Parser.Parser.NormalizeTitle(artist.Name));
artist.Overview.Should().NotBeNullOrWhiteSpace();
artist.Images.Should().NotBeEmpty();
artist.Metadata.Value.Overview.Should().NotBeNullOrWhiteSpace();
artist.Metadata.Value.Images.Should().NotBeEmpty();
artist.ForeignArtistId.Should().NotBeNullOrWhiteSpace();
}

View File

@@ -40,6 +40,14 @@ namespace NzbDrone.Core.Test.MetadataSource.SkyHook
Allowed = true
}
},
ReleaseStatuses = new List<ProfileReleaseStatusItem>
{
new ProfileReleaseStatusItem
{
ReleaseStatus = ReleaseStatus.Official,
Allowed = true
}
}
};
Mocker.GetMock<IMetadataProfileService>()