New: Unmapped files view (#888)

* New: Unmapped files view

Displays all trackfiles that haven't been matched to a track.
Generalised the file details component and adds it to the album
details screen.

* Add sorting by quality

* New: MediaServiceTests & MediaRepoTests
This commit is contained in:
ta264
2019-08-25 16:49:30 +01:00
committed by Qstick
parent 74cb2a6f52
commit 4413c7e46c
36 changed files with 1507 additions and 404 deletions
@@ -15,6 +15,7 @@ namespace NzbDrone.Core.Test.MediaFiles
{
private Artist artist;
private Album album;
private List<AlbumRelease> releases;
[SetUp]
public void Setup()
@@ -36,7 +37,7 @@ namespace NzbDrone.Core.Test.MediaFiles
.Build();
Db.Insert(album);
var releases = Builder<AlbumRelease>.CreateListOfSize(2)
releases = Builder<AlbumRelease>.CreateListOfSize(2)
.All()
.With(a => a.Id = 0)
.With(a => a.AlbumId = album.Id)
@@ -44,7 +45,7 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(a => a.Monitored = true)
.TheNext(1)
.With(a => a.Monitored = false)
.Build();
.Build().ToList();
Db.InsertMany(releases);
var files = Builder<TrackFile>.CreateListOfSize(10)
@@ -53,6 +54,10 @@ namespace NzbDrone.Core.Test.MediaFiles
.With(c => c.Quality =new QualityModel(Quality.MP3_192))
.TheFirst(5)
.With(c => c.AlbumId = album.Id)
.TheFirst(1)
.With(c => c.Path = "/Test/Path/Artist/somefile1.flac")
.TheNext(1)
.With(c => c.Path = "/Test/Path/Artist/somefile2.flac")
.BuildListOfNew();
Db.InsertMany(files);
@@ -88,6 +93,55 @@ namespace NzbDrone.Core.Test.MediaFiles
artistFiles.Should().OnlyContain(c => c.Artist.Value.Id == artist.Id);
}
[Test]
public void get_unmapped_files()
{
VerifyData();
var unmappedfiles = Subject.GetUnmappedFiles();
VerifyUnmapped(unmappedfiles);
unmappedfiles.Should().HaveCount(5);
}
[Test]
public void get_files_by_release()
{
VerifyData();
var firstReleaseFiles = Subject.GetFilesByRelease(releases[0].Id);
var secondReleaseFiles = Subject.GetFilesByRelease(releases[1].Id);
VerifyEagerLoaded(firstReleaseFiles);
VerifyEagerLoaded(secondReleaseFiles);
firstReleaseFiles.Should().HaveCount(4);
secondReleaseFiles.Should().HaveCount(1);
}
[Test]
public void get_files_by_base_path()
{
VerifyData();
var firstReleaseFiles = Subject.GetFilesWithBasePath("/Test/Path");
VerifyEagerLoaded(firstReleaseFiles);
firstReleaseFiles.Should().HaveCount(2);
}
[Test]
public void get_file_by_path()
{
VerifyData();
var file = Subject.GetFileWithPath("/Test/Path/Artist/somefile2.flac");
file.Should().NotBeNull();
file.Tracks.IsLoaded.Should().BeTrue();
file.Tracks.Value.Should().NotBeNull();
file.Tracks.Value.Should().NotBeEmpty();
file.Album.IsLoaded.Should().BeTrue();
file.Album.Value.Should().NotBeNull();
file.Artist.IsLoaded.Should().BeTrue();
file.Artist.Value.Should().NotBeNull();
}
[Test]
public void get_files_by_artist_should_only_return_tracks_for_monitored_releases()
{
@@ -142,6 +196,20 @@ namespace NzbDrone.Core.Test.MediaFiles
}
}
private void VerifyUnmapped(List<TrackFile> files)
{
foreach (var file in files)
{
file.Tracks.IsLoaded.Should().BeFalse();
file.Tracks.Value.Should().NotBeNull();
file.Tracks.Value.Should().BeEmpty();
file.Album.IsLoaded.Should().BeFalse();
file.Album.Value.Should().BeNull();
file.Artist.IsLoaded.Should().BeFalse();
file.Artist.Value.Should().BeNull();
}
}
[Test]
public void delete_files_by_album_should_work_if_join_fails()
{