public async Task LoadFrom_SingleDistinctSeriesFound_ReturnsSourceData() { var aniListSeriesData = new AniListSeriesData { Id = 1, Title = new AniListTitleData("english", string.Empty, string.Empty) }; this.aniDbTitles = new[] { new ItemTitleData { Title = "TitleA", Language = "en" } }; this.aniListClient.FindSeriesAsync("NormalisedTitleA", Arg.Any <ProcessResultContext>()) .Returns(new[] { aniListSeriesData }); this.sources.AniList.SelectTitle(aniListSeriesData.Title, "en", Arg.Any <ProcessResultContext>()) .Returns(Right <ProcessFailedResult, string>("SelectedTitle")); var result = await this.loader.LoadFrom(this.mediaItem, this.aniDbSourceData); result.IsRight.Should().BeTrue(); result.IfRight(r => r.Should() .BeEquivalentTo(new SourceData <AniListSeriesData>( TestSources.AniListSource, 1, new ItemIdentifier(None, None, "SelectedTitle"), aniListSeriesData ))); }
public void SeriesMappings_DontMapEmptyFields() { var source = new AniListSeriesData { Genres = new List <string>(), Staff = new GraphQlEdge <AniListStaffData>(new List <AniListStaffData>()), Characters = new GraphQlEdge <AniListCharacterData>(new List <AniListCharacterData>()), Studios = new GraphQlEdge <AniListStudioData>(new List <AniListStudioData>()) }; var target = new MetadataResult <Series> { Item = new Series() }; var aniListSourceMappingConfiguration = new AniListSourceMappingConfiguration(new AniListNameSelector(new ConsoleLogManager())); aniListSourceMappingConfiguration.GetSeriesMappings(1, true, true, TitleType.Localized, "en") .Where(m => m.CanApply(source, target)) .Select(m => m.TargetPropertyName) .Should() .BeEmpty(); }
private ISourceData CreateSourceData(AniListSeriesData seriesData, string title) { return(new SourceData <AniListSeriesData>(this.sources.AniList, seriesData.Id, new ItemIdentifier(None, None, title), seriesData)); }
private Either <ProcessFailedResult, ISourceData> CreateSourceDataWithTitle(IMediaItem mediaItem, AniListSeriesData seriesData, ProcessResultContext resultContext) { return(this.sources.AniList.SelectTitle(seriesData.Title, mediaItem.EmbyData.Language, resultContext) .Map(t => this.CreateSourceData(seriesData, t))); }
public void SeriesMappings_MapsAllFields() { var source = new AniListSeriesData { Title = new AniListTitleData("SelectedTitle", "", ""), StartDate = new AniListFuzzyDate(2018, 7, 6), EndDate = new AniListFuzzyDate(2018, 8, 5), Description = "Description", AverageScore = 6.7d, Genres = new[] { "Genre", "Tags" }, Studios = new GraphQlEdge <AniListStudioData>(new List <AniListStudioData> { new AniListStudioData(true, new AniListStudioData.StudioName("Studio")) }), Staff = new GraphQlEdge <AniListStaffData>(new[] { new AniListStaffData( new AniListStaffData.InnerStaffData(new AniListPersonNameData("Staff", "Name", ""), new AniListImageUrlData("StaffUrl", "")), "StaffRole") }), Characters = new GraphQlEdge <AniListCharacterData>(new[] { new AniListCharacterData( new AniListCharacterData.InnerCharacterData(new AniListPersonNameData("Character", "Name", ""), new AniListImageUrlData("CharacterUrl", "")), new[] { new AniListCharacterData.VoiceActorData("JAPANESE", new AniListImageUrlData("VoiceActorUrl", ""), new AniListPersonNameData("VoiceActor", "Name", "")) }) }) }; var target = new MetadataResult <Series> { Item = new Series() }; var aniListSourceMappingConfiguration = new AniListSourceMappingConfiguration(new AniListNameSelector(new ConsoleLogManager())); aniListSourceMappingConfiguration.GetSeriesMappings(1, true, true, TitleType.Localized, "en") .Select(m => m.CanApply(source, target)) .All(v => v) .Should() .BeTrue(); aniListSourceMappingConfiguration.GetSeriesMappings(1, true, true, TitleType.Localized, "en") .Iter(m => m.Apply(source, target)); target.Item.Name.Should().Be("SelectedTitle"); target.Item.PremiereDate.Should().Be(new DateTime(2018, 7, 6, 0, 0, 0)); target.Item.EndDate.Should().Be(new DateTime(2018, 8, 5, 0, 0, 0)); target.Item.Overview.Should().Be("Description"); target.Item.Genres.Should().BeEquivalentTo("Genre"); target.Item.Studios.Should().BeEquivalentTo("Studio"); target.Item.Tags.Should().BeEquivalentTo("Tags"); target.Item.CommunityRating.Should().Be(6.7f); target.People.Should() .BeEquivalentTo(new List <PersonInfo> { new PersonInfo { Name = "Staff Name", Role = "StaffRole", ImageUrl = "StaffUrl" }, new PersonInfo { Name = "VoiceActor Name", Role = "Character Name", Type = PersonType.Actor, ImageUrl = "VoiceActorUrl" } }); }