diff --git a/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs index fad3a9cf4..3efee379b 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs @@ -279,5 +279,51 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture tag.Quality.Should().NotBeNull(); tag.MediaInfo.Should().NotBeNull(); } + + private TrackFile GivenPopulatedTrackfile() + { + var meta = Builder.CreateNew().Build(); + var artist = Builder.CreateNew() + .With(x => x.Metadata = meta) + .Build(); + + var album = Builder.CreateNew() + .With(x => x.Artist = artist) + .Build(); + + var media = Builder.CreateListOfSize(2).Build() as List; + var release = Builder.CreateNew() + .With(x => x.Album = album) + .With(x => x.Media = media) + .With(x => x.Country = new List()) + .With(x => x.Label = new List()) + .Build(); + + var tracks = Builder.CreateListOfSize(10) + .All() + .With(x => x.AlbumRelease = release) + .With(x => x.ArtistMetadata = meta) + .TheFirst(5) + .With(x => x.MediumNumber = 1) + .TheNext(5) + .With(x => x.MediumNumber = 2) + .Build() as List; + release.Tracks = tracks; + + var file = Builder.CreateNew() + .With(x => x.Tracks = new List { tracks[0] }) + .Build(); + + return file; + } + + [Test] + public void get_metadata_should_not_fail_with_missing_country() + { + var file = GivenPopulatedTrackfile(); + var tag = Subject.GetTrackMetadata(file); + + tag.MusicBrainzReleaseCountry.Should().BeNull(); + } } } diff --git a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs index cff10c204..a1fe3f91e 100644 --- a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs +++ b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs @@ -67,7 +67,7 @@ namespace NzbDrone.Core.MediaFiles return new AudioTag(path); } - private AudioTag GetTrackMetadata(TrackFile trackfile) + public AudioTag GetTrackMetadata(TrackFile trackfile) { var track = trackfile.Tracks.Value[0]; var release = track.AlbumRelease.Value; @@ -90,7 +90,7 @@ namespace NzbDrone.Core.MediaFiles OriginalReleaseDate = album.ReleaseDate, OriginalYear = (uint)album.ReleaseDate?.Year, Publisher = release.Label.FirstOrDefault(), - MusicBrainzReleaseCountry = IsoCountries.Find(release.Country.FirstOrDefault()).TwoLetterCode, + MusicBrainzReleaseCountry = IsoCountries.Find(release.Country.FirstOrDefault())?.TwoLetterCode, MusicBrainzReleaseStatus = release.Status.ToLower(), MusicBrainzReleaseType = album.AlbumType.ToLower(), MusicBrainzReleaseId = release.ForeignReleaseId,