Beispiel #1
0
        public async Task LoadFrom_CreatesSourceData()
        {
            _aniDbClient.FindSeriesAsync("Name").Returns(_aniDbSeriesData);
            _sources.AniDb.SelectTitle(_aniDbSeriesData.Titles, "en", Arg.Any <ProcessResultContext>())
            .Returns("Title");

            var loader = new AniDbSeriesFromEmbyData(_aniDbClient, _sources);

            var result = await loader.LoadFrom(_embyItemData);

            result.IsRight.Should().BeTrue();
            result.IfRight(sd => sd.Data.Should().Be(_aniDbSeriesData));
            result.IfRight(sd => sd.Source.Should().Be(_sources.AniDb));
            result.IfRight(sd =>
                           sd.Identifier.Should().BeEquivalentTo(new ItemIdentifier(67, Option <int> .None, "Title")));
        }
        public Task <Either <ProcessFailedResult, ISourceData> > LoadFrom(IEmbyItemData embyItemData)
        {
            var resultContext = new ProcessResultContext(nameof(AniDbSeriesFromEmbyData), embyItemData.Identifier.Name,
                                                         embyItemData.ItemType);

            return(_aniDbClient.FindSeriesAsync(embyItemData.Identifier.Name)
                   .ToEitherAsync(resultContext.Failed("Failed to find series in AniDb"))
                   .BindAsync(s =>
            {
                var title = _sources.AniDb.SelectTitle(s.Titles, embyItemData.Language, resultContext);

                return title.Map(t => CreateSourceData(s, embyItemData, t));
            }));
        }