* Implemented functionality to find album from DB if a track has album in the MusicBrainz Release Id tag. If tag doesn't exist or album is not found, handle via normal routes. * Added a test case * Fixed a bad merge. * Fixed a bug where a track with an empty Album IDv3 tag always was ignored, even if it had MusicBrainz Release Id hardcoded. * fixup: Quick fixes to get this merged tonight due to bug in developpull/6/head
parent
aaa3b5495f
commit
e9097b8dc6
@ -0,0 +1,75 @@
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Music;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NzbDrone.Core.Test.MusicTests.AlbumRepositoryTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class AlbumRepositoryFixture : DbTest<AlbumService, Album>
|
||||
{
|
||||
private Artist _artist;
|
||||
private Album _album;
|
||||
private AlbumRepository _albumRepo;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_artist = new Artist
|
||||
{
|
||||
Name = "Alien Ant Farm",
|
||||
Monitored = true,
|
||||
MBId = "this is a fake id",
|
||||
Id = 1
|
||||
};
|
||||
|
||||
_album = new Album
|
||||
{
|
||||
Title = "ANThology",
|
||||
ForeignAlbumId = "1",
|
||||
CleanTitle = "anthology",
|
||||
Artist = _artist,
|
||||
AlbumType = "",
|
||||
Releases = new List<AlbumRelease>
|
||||
{
|
||||
new AlbumRelease
|
||||
{
|
||||
Id = "e00e40a3-5ed5-4ed3-9c22-0a8ff4119bdf"
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
_albumRepo = Mocker.Resolve<AlbumRepository>();
|
||||
|
||||
_albumRepo.Insert(_album);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void should_find_album_in_db_by_releaseid()
|
||||
{
|
||||
var id = "e00e40a3-5ed5-4ed3-9c22-0a8ff4119bdf";
|
||||
|
||||
var album = _albumRepo.FindAlbumByRelease(id);
|
||||
|
||||
album.Title.Should().Be(_album.Title);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_find_album_in_db_by_partial_releaseid()
|
||||
{
|
||||
var id = "e00e40a3-5ed5-4ed3-9c22";
|
||||
|
||||
var album = _albumRepo.FindAlbumByRelease(id);
|
||||
|
||||
album.Should().BeNull();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Music;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Test.Common;
|
||||
|
||||
namespace NzbDrone.Core.Test.ParserTests.ParsingServiceTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class GetLocalTrackFixture : CoreTest<ParsingService>
|
||||
{
|
||||
private Artist _fakeArtist;
|
||||
private Album _fakeAlbum;
|
||||
private Track _fakeTrack;
|
||||
private ParsedTrackInfo _parsedTrackInfo;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_fakeArtist = Builder<Artist>
|
||||
.CreateNew()
|
||||
.Build();
|
||||
|
||||
_fakeAlbum = Builder<Album>
|
||||
.CreateNew()
|
||||
.With(e => e.ArtistId = _fakeArtist.Id)
|
||||
.With(e => e.Releases = new List<AlbumRelease>
|
||||
{
|
||||
new AlbumRelease
|
||||
{
|
||||
Id = "5ecd552b-e54b-4c37-b62c-9d6234834bad"
|
||||
}
|
||||
})
|
||||
.Build();
|
||||
|
||||
_fakeTrack = Builder<Track>
|
||||
.CreateNew()
|
||||
.With(e => e.ArtistId = _fakeArtist.Id)
|
||||
.With(e => e.AlbumId = _fakeAlbum.Id)
|
||||
.With(e => e.Album = null)
|
||||
.Build();
|
||||
|
||||
_parsedTrackInfo = Builder<ParsedTrackInfo>
|
||||
.CreateNew()
|
||||
.With(e => e.AlbumTitle = _fakeAlbum.Title)
|
||||
.With(e => e.Title = _fakeTrack.Title)
|
||||
.With(e => e.ArtistTitle = _fakeArtist.Name)
|
||||
.Build();
|
||||
|
||||
Mocker.GetMock<IAlbumService>()
|
||||
.Setup(s => s.FindByTitle(_fakeArtist.Id,_fakeAlbum.Title))
|
||||
.Returns(_fakeAlbum);
|
||||
|
||||
Mocker.GetMock<IAlbumService>()
|
||||
.Setup(s => s.FindAlbumByRelease(_fakeAlbum.Releases.First().Id))
|
||||
.Returns(_fakeAlbum);
|
||||
|
||||
Mocker.GetMock<ITrackService>()
|
||||
.Setup(s => s.FindTrackByTitle(_fakeArtist.Id, _fakeAlbum.Id, It.IsAny<int>(), _fakeTrack.Title))
|
||||
.Returns(_fakeTrack);
|
||||
}
|
||||
|
||||
private void HasAlbumTitleNoReleaseId()
|
||||
{
|
||||
_parsedTrackInfo.AlbumTitle = _fakeAlbum.Title;
|
||||
_parsedTrackInfo.ReleaseMBId = "";
|
||||
}
|
||||
|
||||
private void HasReleaseMbIdNoTitle()
|
||||
{
|
||||
_parsedTrackInfo.AlbumTitle = "";
|
||||
_parsedTrackInfo.ReleaseMBId = _fakeAlbum.Releases.First().Id;
|
||||
}
|
||||
|
||||
private void HasNoReleaseIdOrTitle()
|
||||
{
|
||||
_parsedTrackInfo.AlbumTitle = "";
|
||||
_parsedTrackInfo.ReleaseMBId = "";
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_find_album_with_title_no_MBID()
|
||||
{
|
||||
HasAlbumTitleNoReleaseId();
|
||||
|
||||
var localTrack = Subject.GetLocalTrack("somfile.mp3", _fakeArtist, _parsedTrackInfo);
|
||||
|
||||
localTrack.Artist.Id.Should().Be(_fakeArtist.Id);
|
||||
localTrack.Album.Id.Should().Be(_fakeAlbum.Id);
|
||||
localTrack.Tracks.First().Id.Should().Be(_fakeTrack.Id);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_find_album_with_release_MBID_no_title()
|
||||
{
|
||||
HasReleaseMbIdNoTitle();
|
||||
|
||||
var localTrack = Subject.GetLocalTrack("somfile.mp3", _fakeArtist, _parsedTrackInfo);
|
||||
|
||||
localTrack.Artist.Id.Should().Be(_fakeArtist.Id);
|
||||
localTrack.Album.Id.Should().Be(_fakeAlbum.Id);
|
||||
localTrack.Tracks.First().Id.Should().Be(_fakeTrack.Id);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_find_album_with_no_release_MBID_no_title()
|
||||
{
|
||||
HasNoReleaseIdOrTitle();
|
||||
|
||||
var localTrack = Subject.GetLocalTrack("somfile.mp3", _fakeArtist, _parsedTrackInfo);
|
||||
ExceptionVerification.ExpectedWarns(1);
|
||||
|
||||
localTrack.Should().BeNull();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue