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)); })); }