Ejemplo n.º 1
0
        public void GetVideosWithFile_WithNoVideos()
        {
            var fileRepository = new MediaFileRepository();
            var fileId         = fileRepository.CreateMediaFile(new CreateMediaFileDto("", MediaFileType.VIDEO_TYPE, ""));

            var expectedList = new List <Video> {
            };
            var actualList   = repository.GetVideosWithFile(GetFirstPage(), fileId).Result.Results;

            CollectionAssert.AreEquivalent(expectedList, actualList);
        }
Ejemplo n.º 2
0
 private void InitRepositories()
 {
     libraryRepository        = DependencyInjectionContainer.Container.Resolve <LibraryRepository>();
     videoRepository          = DependencyInjectionContainer.Container.Resolve <VideoRepository>();
     characterRepository      = DependencyInjectionContainer.Container.Resolve <CharacterRepository>();
     seriesRepository         = DependencyInjectionContainer.Container.Resolve <SeriesRepository>();
     publisherRepository      = DependencyInjectionContainer.Container.Resolve <PublisherRepository>();
     calendarRepository       = DependencyInjectionContainer.Container.Resolve <CalendarRepository>();
     locationRepository       = DependencyInjectionContainer.Container.Resolve <LocationRepository>();
     playlistRepository       = DependencyInjectionContainer.Container.Resolve <PlaylistRepository>();
     tagRepository            = DependencyInjectionContainer.Container.Resolve <TagRepository>();
     mediaFileRepository      = DependencyInjectionContainer.Container.Resolve <MediaFileRepository>();
     seriesSequenceRepository = DependencyInjectionContainer.Container.Resolve <SeriesSequenceRepository>();
 }
Ejemplo n.º 3
0
        public void TestCreateLocation_WithCover()
        {
            var tagName     = "Test name";
            var description = "Test tag";
            var coverFileId = new MediaFileRepository().CreateMediaFile(new CreateMediaFileDto("C:/test.jpg", MediaFileType.IMAGE_TYPE, "test"));

            var locationId = repository.CreateLocation(new CreateLocationDto(tagName, description, testLibrary.LibraryId, DatabaseConstants.DEFAULT_ID, coverFileId));
            var location   = repository.GetLocation(locationId);

            Assert.AreEqual(tagName, location.Name);
            Assert.AreEqual(description, location.Description);
            Assert.AreEqual(locationId, location.LocationId);
            Assert.AreEqual(testLibrary.LibraryId, location.LibraryId);
            Assert.AreEqual(DatabaseConstants.DEFAULT_ID, location.PublisherId);
            Assert.AreEqual(coverFileId, location.CoverFileId);
        }
Ejemplo n.º 4
0
        public void GetVideosWithFile_WithOtherFileOnVideos()
        {
            var fileRepository = new MediaFileRepository();
            var fileId         = fileRepository.CreateMediaFile(new CreateMediaFileDto("", MediaFileType.VIDEO_TYPE, ""));
            var file2Id        = fileRepository.CreateMediaFile(new CreateMediaFileDto("", MediaFileType.VIDEO_TYPE, ""));
            var file2          = fileRepository.GetMediaFile(file2Id);

            var videoDto = GetNewVideoDetails();
            var video1Id = repository.CreateVideo(videoDto);

            fileRepository.AddFileToVideo(video1Id, file2).ConfigureAwait(false);

            var expectedList = new List <Video> {
            };
            var actualList   = repository.GetVideosWithFile(GetFirstPage(), fileId).Result.Results;

            CollectionAssert.AreEquivalent(expectedList, actualList);
        }
Ejemplo n.º 5
0
        public void should_explicit_load_everything_if_joined()
        {
            var db    = Mocker.Resolve <IDatabase>();
            var files = MediaFileRepository.Query(db,
                                                  new SqlBuilder()
                                                  .Join <BookFile, Edition>((t, a) => t.EditionId == a.Id)
                                                  .Join <Edition, Book>((e, b) => e.BookId == b.Id)
                                                  .Join <Book, Author>((book, author) => book.AuthorMetadataId == author.AuthorMetadataId)
                                                  .Join <Author, AuthorMetadata>((a, m) => a.AuthorMetadataId == m.Id));

            Assert.IsNotEmpty(files);
            foreach (var file in files)
            {
                Assert.IsTrue(file.Edition.IsLoaded);
                Assert.IsTrue(file.Author.IsLoaded);
                Assert.IsTrue(file.Author.Value.Metadata.IsLoaded);
            }
        }
Ejemplo n.º 6
0
        public void should_explicit_load_everything_if_joined()
        {
            var db    = Mocker.Resolve <IDatabase>();
            var files = MediaFileRepository.Query(db,
                                                  new SqlBuilder()
                                                  .Join <TrackFile, Track>((f, t) => f.Id == t.TrackFileId)
                                                  .Join <TrackFile, Album>((t, a) => t.AlbumId == a.Id)
                                                  .Join <Album, Artist>((album, artist) => album.ArtistMetadataId == artist.ArtistMetadataId)
                                                  .Join <Artist, ArtistMetadata>((a, m) => a.ArtistMetadataId == m.Id));

            Assert.IsNotEmpty(files);
            foreach (var file in files)
            {
                Assert.IsTrue(file.Tracks.IsLoaded);
                Assert.IsNotEmpty(file.Tracks.Value);
                Assert.IsTrue(file.Album.IsLoaded);
                Assert.IsTrue(file.Artist.IsLoaded);
                Assert.IsTrue(file.Artist.Value.Metadata.IsLoaded);
            }
        }
Ejemplo n.º 7
0
        public void GetVideosWithFile_WithFileAttachedToVideo_AndCover_ShouldntReturnDuplicates()
        {
            var fileRepository = new MediaFileRepository();
            var fileId         = fileRepository.CreateMediaFile(new CreateMediaFileDto("", MediaFileType.VIDEO_TYPE, ""));
            var file           = fileRepository.GetMediaFile(fileId);

            var videoDto = GetNewVideoDetails();

            videoDto.CoverFileId = fileId;
            var video1Id = repository.CreateVideo(videoDto);
            var video1   = repository.GetVideo(video1Id).Result;

            fileRepository.AddFileToVideo(video1Id, file).ConfigureAwait(false);

            var expectedList = new List <Video> {
                video1
            };
            var actualList = repository.GetVideosWithFile(GetFirstPage(), fileId).Result.Results;

            CollectionAssert.AreEquivalent(expectedList, actualList);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Creates an instance of <see cref="CardWidgetViewComponent"/> class.
 /// </summary>
 /// <param name="mediaFileRepository">Repository for media files.</param>
 /// <param name="mediaFileUrlRetriever">The media file URL retriever.</param>
 public CardWidgetViewComponent(MediaFileRepository mediaFileRepository, IMediaFileUrlRetriever mediaFileUrlRetriever)
 {
     this.mediaFileRepository   = mediaFileRepository;
     this.mediaFileUrlRetriever = mediaFileUrlRetriever;
 }
Ejemplo n.º 9
0
        public static void Map()
        {
            RegisterMappers();

            Mapper.Entity <Config>("Config").RegisterModel();

            Mapper.Entity <RootFolder>("RootFolders").RegisterModel()
            .Ignore(r => r.Accessible)
            .Ignore(r => r.FreeSpace)
            .Ignore(r => r.TotalSpace);

            Mapper.Entity <ScheduledTask>("ScheduledTasks").RegisterModel();

            Mapper.Entity <IndexerDefinition>("Indexers").RegisterModel()
            .Ignore(x => x.ImplementationName)
            .Ignore(i => i.Enable)
            .Ignore(i => i.Protocol)
            .Ignore(i => i.SupportsRss)
            .Ignore(i => i.SupportsSearch)
            .Ignore(d => d.Tags);

            Mapper.Entity <ImportListDefinition>("ImportLists").RegisterModel()
            .Ignore(x => x.ImplementationName)
            .Ignore(i => i.Enable)
            .Ignore(i => i.ListType);

            Mapper.Entity <NotificationDefinition>("Notifications").RegisterModel()
            .Ignore(x => x.ImplementationName)
            .Ignore(i => i.SupportsOnGrab)
            .Ignore(i => i.SupportsOnReleaseImport)
            .Ignore(i => i.SupportsOnUpgrade)
            .Ignore(i => i.SupportsOnRename)
            .Ignore(i => i.SupportsOnHealthIssue)
            .Ignore(i => i.SupportsOnDownloadFailure)
            .Ignore(i => i.SupportsOnImportFailure)
            .Ignore(i => i.SupportsOnTrackRetag);

            Mapper.Entity <MetadataDefinition>("Metadata").RegisterModel()
            .Ignore(x => x.ImplementationName)
            .Ignore(d => d.Tags);

            Mapper.Entity <DownloadClientDefinition>("DownloadClients").RegisterModel()
            .Ignore(x => x.ImplementationName)
            .Ignore(d => d.Protocol)
            .Ignore(d => d.Tags);

            Mapper.Entity <History.History>("History").RegisterModel();

            Mapper.Entity <Artist>("Artists")
            .Ignore(s => s.RootFolderPath)
            .Ignore(s => s.Name)
            .Ignore(s => s.ForeignArtistId)
            .HasOne(a => a.Metadata, a => a.ArtistMetadataId)
            .HasOne(a => a.QualityProfile, a => a.QualityProfileId)
            .HasOne(s => s.MetadataProfile, s => s.MetadataProfileId)
            .LazyLoad(a => a.Albums, (db, a) => db.Query <Album>(new SqlBuilder().Where <Album>(rg => rg.ArtistMetadataId == a.Id)).ToList(), a => a.Id > 0);

            Mapper.Entity <ArtistMetadata>("ArtistMetadata").RegisterModel();

            Mapper.Entity <Album>("Albums").RegisterModel()
            .Ignore(x => x.ArtistId)
            .HasOne(r => r.ArtistMetadata, r => r.ArtistMetadataId)
            .LazyLoad(a => a.AlbumReleases, (db, album) => db.Query <AlbumRelease>(new SqlBuilder().Where <AlbumRelease>(r => r.AlbumId == album.Id)).ToList(), a => a.Id > 0)
            .LazyLoad(a => a.Artist,
                      (db, album) => ArtistRepository.Query(db,
                                                            new SqlBuilder()
                                                            .Join <Artist, ArtistMetadata>((a, m) => a.ArtistMetadataId == m.Id)
                                                            .Where <Artist>(a => a.ArtistMetadataId == album.ArtistMetadataId)).SingleOrDefault(),
                      a => a.ArtistMetadataId > 0);

            Mapper.Entity <AlbumRelease>("AlbumReleases").RegisterModel()
            .HasOne(r => r.Album, r => r.AlbumId)
            .LazyLoad(x => x.Tracks, (db, release) => db.Query <Track>(new SqlBuilder().Where <Track>(t => t.AlbumReleaseId == release.Id)).ToList(), r => r.Id > 0);

            Mapper.Entity <Track>("Tracks").RegisterModel()
            .Ignore(t => t.HasFile)
            .Ignore(t => t.AlbumId)
            .HasOne(track => track.AlbumRelease, track => track.AlbumReleaseId)
            .HasOne(track => track.ArtistMetadata, track => track.ArtistMetadataId)
            .LazyLoad(t => t.TrackFile,
                      (db, track) => MediaFileRepository.Query(db,
                                                               new SqlBuilder()
                                                               .Join <TrackFile, Track>((l, r) => l.Id == r.TrackFileId)
                                                               .Join <TrackFile, Album>((l, r) => l.AlbumId == r.Id)
                                                               .Join <Album, Artist>((l, r) => l.ArtistMetadataId == r.ArtistMetadataId)
                                                               .Join <Artist, ArtistMetadata>((l, r) => l.ArtistMetadataId == r.Id)
                                                               .Where <TrackFile>(t => t.Id == track.TrackFileId)).SingleOrDefault(),
                      t => t.TrackFileId > 0)
            .LazyLoad(x => x.Artist,
                      (db, t) => ArtistRepository.Query(db,
                                                        new SqlBuilder()
                                                        .Join <Artist, ArtistMetadata>((a, m) => a.ArtistMetadataId == m.Id)
                                                        .Join <Artist, Album>((l, r) => l.ArtistMetadataId == r.ArtistMetadataId)
                                                        .Join <Album, AlbumRelease>((l, r) => l.Id == r.AlbumId)
                                                        .Where <AlbumRelease>(r => r.Id == t.AlbumReleaseId)).SingleOrDefault(),
                      t => t.Id > 0);

            Mapper.Entity <TrackFile>("TrackFiles").RegisterModel()
            .HasOne(f => f.Album, f => f.AlbumId)
            .LazyLoad(x => x.Tracks, (db, file) => db.Query <Track>(new SqlBuilder().Where <Track>(t => t.TrackFileId == file.Id)).ToList(), x => x.Id > 0)
            .LazyLoad(x => x.Artist,
                      (db, f) => ArtistRepository.Query(db,
                                                        new SqlBuilder()
                                                        .Join <Artist, ArtistMetadata>((a, m) => a.ArtistMetadataId == m.Id)
                                                        .Join <Artist, Album>((l, r) => l.ArtistMetadataId == r.ArtistMetadataId)
                                                        .Where <Album>(a => a.Id == f.AlbumId)).SingleOrDefault(),
                      t => t.Id > 0);

            Mapper.Entity <QualityDefinition>("QualityDefinitions").RegisterModel()
            .Ignore(d => d.GroupName)
            .Ignore(d => d.GroupWeight)
            .Ignore(d => d.Weight);

            Mapper.Entity <QualityProfile>("QualityProfiles").RegisterModel();
            Mapper.Entity <MetadataProfile>("MetadataProfiles").RegisterModel();
            Mapper.Entity <Log>("Logs").RegisterModel();
            Mapper.Entity <NamingConfig>("NamingConfig").RegisterModel();

            Mapper.Entity <Blacklist>("Blacklist").RegisterModel();
            Mapper.Entity <MetadataFile>("MetadataFiles").RegisterModel();
            Mapper.Entity <LyricFile>("LyricFiles").RegisterModel();
            Mapper.Entity <OtherExtraFile>("ExtraFiles").RegisterModel();

            Mapper.Entity <PendingRelease>("PendingReleases").RegisterModel()
            .Ignore(e => e.RemoteAlbum);

            Mapper.Entity <RemotePathMapping>("RemotePathMappings").RegisterModel();
            Mapper.Entity <Tag>("Tags").RegisterModel();
            Mapper.Entity <ReleaseProfile>("ReleaseProfiles").RegisterModel();

            Mapper.Entity <DelayProfile>("DelayProfiles").RegisterModel();
            Mapper.Entity <User>("Users").RegisterModel();
            Mapper.Entity <CommandModel>("Commands").RegisterModel()
            .Ignore(c => c.Message);

            Mapper.Entity <IndexerStatus>("IndexerStatus").RegisterModel();
            Mapper.Entity <DownloadClientStatus>("DownloadClientStatus").RegisterModel();
            Mapper.Entity <ImportListStatus>("ImportListStatus").RegisterModel();

            Mapper.Entity <CustomFilter>("CustomFilters").RegisterModel();
            Mapper.Entity <ImportListExclusion>("ImportListExclusions").RegisterModel();
        }
        public void Setup()
        {
            var profile = new Profile
            {
                Id     = 1,
                Cutoff = Quality.WEBDL480p,
                Items  = new List <ProfileQualityItem>
                {
                    new ProfileQualityItem {
                        Allowed = true, Quality = Quality.SDTV
                    },
                    new ProfileQualityItem {
                        Allowed = true, Quality = Quality.WEBDL480p
                    },
                    new ProfileQualityItem {
                        Allowed = true, Quality = Quality.RAWHD
                    }
                }
            };

            _monitoredSeries = Builder <Series> .CreateNew()
                               .With(s => s.TvRageId  = RandomNumber)
                               .With(s => s.Runtime   = 30)
                               .With(s => s.Monitored = true)
                               .With(s => s.TitleSlug = "Title3")
                               .With(s => s.Id        = profile.Id)
                               .BuildNew();

            _unmonitoredSeries = Builder <Series> .CreateNew()
                                 .With(s => s.TvdbId    = RandomNumber)
                                 .With(s => s.Runtime   = 30)
                                 .With(s => s.Monitored = false)
                                 .With(s => s.TitleSlug = "Title2")
                                 .With(s => s.Id        = profile.Id)
                                 .BuildNew();

            _monitoredSeries.Id   = Db.Insert(_monitoredSeries).Id;
            _unmonitoredSeries.Id = Db.Insert(_unmonitoredSeries).Id;

            _pagingSpec = new PagingSpec <Episode>
            {
                Page          = 1,
                PageSize      = 10,
                SortKey       = "AirDate",
                SortDirection = SortDirection.Ascending
            };

            _qualitiesBelowCutoff = new List <QualitiesBelowCutoff>
            {
                new QualitiesBelowCutoff(profile.Id, new[] { Quality.SDTV.Id })
            };

            var qualityMet = new EpisodeFile {
                RelativePath = "a", Quality = new QualityModel {
                    Quality = Quality.WEBDL480p
                }
            };
            var qualityUnmet = new EpisodeFile {
                RelativePath = "b", Quality = new QualityModel {
                    Quality = Quality.SDTV
                }
            };
            var qualityRawHD = new EpisodeFile {
                RelativePath = "c", Quality = new QualityModel {
                    Quality = Quality.RAWHD
                }
            };

            MediaFileRepository fileRepository = Mocker.Resolve <MediaFileRepository>();

            qualityMet   = fileRepository.Insert(qualityMet);
            qualityUnmet = fileRepository.Insert(qualityUnmet);
            qualityRawHD = fileRepository.Insert(qualityRawHD);

            var monitoredSeriesEpisodes = Builder <Episode> .CreateListOfSize(4)
                                          .All()
                                          .With(e => e.Id            = 0)
                                          .With(e => e.SeriesId      = _monitoredSeries.Id)
                                          .With(e => e.AirDateUtc    = DateTime.Now.AddDays(-5))
                                          .With(e => e.Monitored     = true)
                                          .With(e => e.EpisodeFileId = qualityUnmet.Id)
                                          .TheFirst(1)
                                          .With(e => e.Monitored     = false)
                                          .With(e => e.EpisodeFileId = qualityMet.Id)
                                          .TheNext(1)
                                          .With(e => e.EpisodeFileId = qualityRawHD.Id)
                                          .TheLast(1)
                                          .With(e => e.SeasonNumber = 0)
                                          .Build();

            var unmonitoredSeriesEpisodes = Builder <Episode> .CreateListOfSize(3)
                                            .All()
                                            .With(e => e.Id            = 0)
                                            .With(e => e.SeriesId      = _unmonitoredSeries.Id)
                                            .With(e => e.AirDateUtc    = DateTime.Now.AddDays(-5))
                                            .With(e => e.Monitored     = true)
                                            .With(e => e.EpisodeFileId = qualityUnmet.Id)
                                            .TheFirst(1)
                                            .With(e => e.Monitored     = false)
                                            .With(e => e.EpisodeFileId = qualityMet.Id)
                                            .TheLast(1)
                                            .With(e => e.SeasonNumber = 0)
                                            .Build();


            _unairedEpisodes = Builder <Episode> .CreateListOfSize(1)
                               .All()
                               .With(e => e.Id            = 0)
                               .With(e => e.SeriesId      = _monitoredSeries.Id)
                               .With(e => e.AirDateUtc    = DateTime.Now.AddDays(5))
                               .With(e => e.Monitored     = true)
                               .With(e => e.EpisodeFileId = qualityUnmet.Id)
                               .Build()
                               .ToList();

            Db.InsertMany(monitoredSeriesEpisodes);
            Db.InsertMany(unmonitoredSeriesEpisodes);
        }
Ejemplo n.º 11
0
 public MediaGalleryViewComponent(MediaFileRepository mediaFileRepository, IMediaFileUrlRetriever fileUrlRetriever)
 {
     this.mediaFileRepository = mediaFileRepository;
     this.fileUrlRetriever    = fileUrlRetriever;
 }