public void CanLoadFrom_WrongItemType_IsFalse()
        {
            var sourceData = Substitute.For <ISourceData <AniDbSeriesData> >();

            var loader = new AniDbSeriesFromAniDbEpisode(_sources);

            loader.CanLoadFrom(sourceData).Should().BeFalse();
        }
        public void CanLoadFrom_CorrectItemType_IsTrue()
        {
            var sourceData = Substitute.For <ISourceData <AniDbEpisodeData> >();

            var loader = new AniDbSeriesFromAniDbEpisode(_sources);

            loader.CanLoadFrom(sourceData).Should().BeTrue();
        }
        public async Task LoadFrom_NoMatchingSeries_Fails()
        {
            _aniDbSource.GetSeriesData(_mediaItem.EmbyData, Arg.Any <ProcessResultContext>())
            .Returns(Left <ProcessFailedResult, AniDbSeriesData>(new ProcessFailedResult("", "",
                                                                                         MediaItemTypes.Series, "Failed to find series in AniDb")));

            var loader = new AniDbSeriesFromAniDbEpisode(_sources);

            var result = await loader.LoadFrom(_mediaItem, null);

            result.IsLeft.Should().BeTrue();
            result.IfLeft(f => f.Reason.Should().Be("Failed to find series in AniDb"));
        }
        public async Task LoadFrom_CreatesSourceData()
        {
            _sources.AniDb.SelectTitle(_aniDbSeriesData.Titles, "en", Arg.Any <ProcessResultContext>())
            .Returns("Title");

            var loader = new AniDbSeriesFromAniDbEpisode(_sources);

            var result = await loader.LoadFrom(_mediaItem, null);

            result.IsRight.Should().BeTrue();
            result.IfRight(sd => sd.Data.Should().Be(_aniDbSeriesData));
            result.IfRight(sd => sd.Source.Should().BeEquivalentTo(_sources.AniDb.ForAdditionalData()));
            result.IfRight(sd =>
                           sd.Identifier.Should().BeEquivalentTo(new ItemIdentifier(67, Option <int> .None, "Title")));
        }
        public void CanLoadFrom_Null_IsFalse()
        {
            var loader = new AniDbSeriesFromAniDbEpisode(_sources);

            loader.CanLoadFrom(null).Should().BeFalse();
        }