public void UpdateVideo_ChangingSeries_ShouldRemoveVideoFromSequence()
        {
            var seriesService      = new SeriesService();
            var sequenceRepository = new SeriesSequenceRepository();
            var series             = seriesService.CreateAndRetrieveSeries(GetNewSeriesDetails());

            var videoDto        = GetNewVideoDetails(testLibrary, null, series);
            var videoToUpdateId = repository.CreateVideo(videoDto);
            var videoToUpdate   = repository.GetVideo(videoToUpdateId).Result;

            var sequenceDto = new CreateSeriesSequenceDto(series.SeriesId, "title", "desc", -1, true, 2);
            var sequenceId  = sequenceRepository.CreateVideoSequence(sequenceDto);
            var sequence    = sequenceRepository.GetSeriesSequence(sequenceId);

            sequenceRepository.AddVideoToSequence(videoToUpdateId, sequence.SequenceId);

            videoToUpdate.SeriesId = DatabaseConstants.DEFAULT_ID;
            repository.UpdateVideo(videoToUpdate).ConfigureAwait(false);

            var updatedVideo = repository.GetVideo(videoToUpdateId).Result;
            var details      = sequenceRepository.GetVideoSeriesChronologyDetails(videoToUpdateId);

            Assert.AreEqual(DatabaseConstants.DEFAULT_ID, updatedVideo.SeriesId);
            Assert.AreEqual(null, details);
        }
        public void RemoveVideoFromSequence_ShouldDecrementOrderOfLaterVideos()
        {
            var seasonNumber = 5;
            var dto          = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, true, seasonNumber);
            var sequence     = CreateAndRetrieveVideoSequence(dto);

            var thirdVideo  = CreateAndRetrieveVideo(testLibrary.LibraryId, testSeries.SeriesId);
            var fourthVideo = CreateAndRetrieveVideo(testLibrary.LibraryId, testSeries.SeriesId);

            repository.AddVideoToSequence(otherVideo.VideoId, sequence.SequenceId);
            repository.AddVideoToSequence(testVideo.VideoId, sequence.SequenceId);
            repository.AddVideoToSequence(thirdVideo.VideoId, sequence.SequenceId);
            repository.AddVideoToSequence(fourthVideo.VideoId, sequence.SequenceId);

            Assert.AreEqual(1, repository.GetVideoSeriesChronologyDetails(otherVideo.VideoId).EpisodeNumber);
            Assert.AreEqual(2, repository.GetVideoSeriesChronologyDetails(testVideo.VideoId).EpisodeNumber);
            Assert.AreEqual(3, repository.GetVideoSeriesChronologyDetails(thirdVideo.VideoId).EpisodeNumber);
            Assert.AreEqual(4, repository.GetVideoSeriesChronologyDetails(fourthVideo.VideoId).EpisodeNumber);

            repository.RemoveVideoFromSequence(testVideo.VideoId, sequence.SequenceId);

            Assert.AreEqual(1, repository.GetVideoSeriesChronologyDetails(otherVideo.VideoId).EpisodeNumber);
            Assert.AreEqual(2, repository.GetVideoSeriesChronologyDetails(thirdVideo.VideoId).EpisodeNumber);
            Assert.AreEqual(3, repository.GetVideoSeriesChronologyDetails(fourthVideo.VideoId).EpisodeNumber);
        }
        public void AddVideosToSequence()
        {
            var seasonNumber = 5;
            var dto          = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, true, seasonNumber);
            var sequence     = CreateAndRetrieveVideoSequence(dto);

            var thirdVideo  = CreateAndRetrieveVideo(testLibrary.LibraryId, testSeries.SeriesId);
            var fourthVideo = CreateAndRetrieveVideo(testLibrary.LibraryId, testSeries.SeriesId);
            var videos      = new List <long>()
            {
                otherVideo.VideoId, testVideo.VideoId, thirdVideo.VideoId, fourthVideo.VideoId
            };

            repository.AddVideosToSequence(videos, sequence.SequenceId);

            var video1Details = repository.GetVideoSeriesChronologyDetails(otherVideo.VideoId);

            Assert.AreEqual(seasonNumber, video1Details.SeasonNumber);
            Assert.AreEqual(1, video1Details.EpisodeNumber);

            var video2Details = repository.GetVideoSeriesChronologyDetails(testVideo.VideoId);

            Assert.AreEqual(seasonNumber, video2Details.SeasonNumber);
            Assert.AreEqual(2, video2Details.EpisodeNumber);

            var video3Details = repository.GetVideoSeriesChronologyDetails(thirdVideo.VideoId);

            Assert.AreEqual(seasonNumber, video3Details.SeasonNumber);
            Assert.AreEqual(3, video3Details.EpisodeNumber);

            var video4Details = repository.GetVideoSeriesChronologyDetails(fourthVideo.VideoId);

            Assert.AreEqual(seasonNumber, video4Details.SeasonNumber);
            Assert.AreEqual(4, video4Details.EpisodeNumber);
        }
        public void GetVideosNotInSeriesSequence_WithNonSeasonSequence_ShouldntIncludeAlreadyIncludedVideos()
        {
            var nonSeasonDto      = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, false, 1);
            var nonSeasonSequence = CreateAndRetrieveVideoSequence(nonSeasonDto);

            repository.AddVideoToSequence(testVideo.VideoId, nonSeasonSequence.SequenceId);

            var videos = videoRepository.GetVideosNotInSeriesSequence(nonSeasonSequence, nonSeasonSequence.SeriesId, "", GetFirstVideoPage()).Result.Results;

            CollectionAssert.AreEquivalent(new List <Video>(), videos);
        }
        public void GetVideosNotInSeriesSequence_ShouldntIncludeDeletedVideos()
        {
            var dto      = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, false, 1);
            var sequence = CreateAndRetrieveVideoSequence(dto);

            videoRepository.DeleteVideo(testVideo.VideoId);

            var videos = videoRepository.GetVideosNotInSeriesSequence(sequence, sequence.SeriesId, "", GetFirstVideoPage()).Result.Results;

            CollectionAssert.AreEquivalent(new List <Video>(), videos);
        }
        public void GetVideoSeriesChronologyDetails_WithVideoInANonSeasonSequence()
        {
            var dto      = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, false, 2);
            var sequence = CreateAndRetrieveVideoSequence(dto);

            repository.AddVideoToSequence(testVideo.VideoId, sequence.SequenceId);

            var details = repository.GetVideoSeriesChronologyDetails(testVideo.VideoId);

            Assert.AreEqual(null, details);
        }
        public void TestGetSeriesSequence()
        {
            var seasonNumber   = 5;
            var dto            = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, true, seasonNumber);
            var videoSequence  = CreateAndRetrieveVideoSequence(dto);
            var seriesSequence = repository.GetSeriesSequence(videoSequence.SequenceId);

            Assert.AreEqual(seasonNumber, seriesSequence.SeasonNumber);
            Assert.AreEqual(true, seriesSequence.IsSeason);
            Assert.AreEqual(videoSequence.Title, seriesSequence.Title);
            Assert.AreEqual(videoSequence.Description, seriesSequence.Description);
            Assert.AreEqual(videoSequence.CoverFile, seriesSequence.CoverFile);
        }
        public void GetVideoSeriesChronologyDetails_WithVideoInASequence()
        {
            var seasonNumber = 5;
            var dto          = new CreateSeriesSequenceDto(testSeries.SeriesId, "title", "desc", -1, true, seasonNumber);
            var sequence     = CreateAndRetrieveVideoSequence(dto);

            repository.AddVideoToSequence(testVideo.VideoId, sequence.SequenceId);

            var details = repository.GetVideoSeriesChronologyDetails(testVideo.VideoId);

            Assert.AreEqual(seasonNumber, details.SeasonNumber);
            Assert.AreEqual(1, details.EpisodeNumber);
        }
        public SeriesSequence CreateAndRetrieveSeriesSequence(CreateSeriesSequenceDto dto)
        {
            var sequencesId = CreateSeriesSequence(dto);

            return(new SeriesSequence(sequencesId, dto));
        }
 public long CreateSeriesSequence(CreateSeriesSequenceDto dto)
 {
     return(sequencesRepository.CreateVideoSequence(dto));
 }