Beispiel #1
0
        public void GetGenres_TagWeightUnder400_IgnoresTags()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = 55,
                    Weight = 100,
                    Name   = "Tag1"
                },
                new TagData
                {
                    Id     = 46,
                    Weight = 399,
                    Name   = "Tag2"
                }
            };

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 2, false);

            genres.Should().BeEmpty();
        }
Beispiel #2
0
        public void GetPeople_HasCharacters_ReturnsPersonInfo()
        {
            var series = new AniDbSeriesData
            {
                Characters = new[]
                {
                    new CharacterData
                    {
                        Name   = "CharacterName",
                        Seiyuu = new SeiyuuData
                        {
                            PictureFileName = "Picture.jpg",
                            Name            = "Reverse Name"
                        }
                    }
                }
            };

            var aniDbParser = new AniDbParser();

            var person = aniDbParser.GetPeople(series).Single();

            person.ImageUrl.Should().Be("http://img7.anidb.net/pics/anime/Picture.jpg");
            person.Type.Should().Be(PersonType.Actor);
            person.Role.Should().Be("CharacterName");
        }
Beispiel #3
0
        public void GetGenres_HasTags_ReturnsTagNames()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = 55,
                    Weight = 400,
                    Name   = "Tag1"
                },
                new TagData
                {
                    Id     = 46,
                    Weight = 400,
                    Name   = "Tag2"
                }
            };

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 2, false);

            genres.Should().BeEquivalentTo("Tag1", "Tag2");
        }
Beispiel #4
0
        public void GetGenres_MoreTagsThanMaxGenres_TakesHighestWeighted()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = 55,
                    Weight = 400,
                    Name   = "Tag1"
                },
                new TagData
                {
                    Id     = 46,
                    Weight = 500,
                    Name   = "Tag2"
                }
            };

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 1, false);

            genres.Should().BeEquivalentTo("Tag2");
        }
        public IEnumerable <PersonInfo> GetPeople(AniDbSeriesData aniDbSeriesData)
        {
            var characters = aniDbSeriesData.Characters?.Where(c => c.Seiyuu != null)
                             .Select(
                c => new PersonInfo
            {
                Name     = ReverseName(c.Seiyuu.Name),
                ImageUrl = c.Seiyuu?.PictureUrl,
                Type     = PersonType.Actor,
                Role     = c.Name
            })
                             .ToList() ??
                             new List <PersonInfo>();

            var creators = aniDbSeriesData.Creators?.Where(c => this.creatorTypeMappings.ContainsKey(c.Type))
                           .Select(
                c => new PersonInfo
            {
                Name = ReverseName(c.Name),
                Type = this.creatorTypeMappings[c.Type]
            }) ??
                           new List <PersonInfo>();

            return(characters.Concat(creators));
        }
        public void Setup()
        {
            _sources = Substitute.For <ISources>();

            _embyItemData = Substitute.For <IEmbyItemData>();
            _embyItemData.Identifier.Returns(new ItemIdentifier(67, 1, "Name"));
            _embyItemData.Language.Returns("en");

            var aniDbSource = Substitute.For <IAniDbSource>();

            _sources.AniDb.Returns(aniDbSource);

            _mediaItem = Substitute.For <IMediaItem>();
            _mediaItem.EmbyData.Returns(_embyItemData);
            _mediaItem.ItemType.Returns(MediaItemTypes.Episode);

            _aniDbEpisodeMatcher = Substitute.For <IAniDbEpisodeMatcher>();

            _aniDbSeriesData  = new AniDbSeriesData().WithStandardData();
            _aniDbEpisodeData = new AniDbEpisodeData
            {
                RawEpisodeNumber = new EpisodeNumberData
                {
                    RawNumber = "67",
                    RawType   = 1
                },
                Titles = new[]
                {
                    new EpisodeTitleData
                    {
                        Title = "Title"
                    }
                }
            };
        }
        private string[] AddGenres(AniDbSeriesData s, string[] genres, int maxGenres, bool addAnimeGenre)
        {
            var genresList = genres.ToList();

            genresList.AddRange(this.aniDbParser.GetGenres(s, maxGenres, addAnimeGenre));
            return(genresList.ToArray());
        }
        public void SeriesMappings_DontMapEmptyFields()
        {
            var source = new AniDbSeriesData
            {
                StartDate   = null,
                EndDate     = null,
                Description = null,
                Ratings     = new PermanentRatingData[] { }
            };

            var aniDbParser = Substitute.For <IAniDbParser>();

            var target = new MetadataResult <Series>
            {
                Item = new Series()
            };

            var aniDbSourceMappingConfiguration =
                new AniDbSourceMappingConfiguration(aniDbParser, _titleSelector);

            aniDbSourceMappingConfiguration.GetSeriesMappings(1, true, true, TitleType.Localized, "en")
            .Where(m => !m.CanApply(source, target))
            .Select(m => m.TargetPropertyName)
            .Should()
            .BeEquivalentTo(nameof(target.Item.PremiereDate), nameof(target.Item.EndDate),
                            nameof(target.Item.Overview),
                            nameof(target.Item.CommunityRating));
        }
Beispiel #9
0
        public void GetTags_ConfiguredForExtraGenresToTags_ReturnsExcessGenres()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = 55,
                    Weight = 400,
                    Name   = "Tag1"
                },
                new TagData
                {
                    Id     = 46,
                    Weight = 500,
                    Name   = "Tag2"
                }
            };

            var aniDbParser = new AniDbParser();

            var tags = aniDbParser.GetTags(series, 2, true);

            tags.Should().BeEquivalentTo("Tag1");
        }
Beispiel #10
0
        public void GetGenres_TooManyTags_IncludesAnimeGenre()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = 55,
                    Weight = 500,
                    Name   = "Tag1"
                },
                new TagData
                {
                    Id     = 46,
                    Weight = 400,
                    Name   = "Tag2"
                }
            };

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 2, true);

            genres.Should().BeEquivalentTo("Anime", "Tag1");
        }
Beispiel #11
0
        public void GetGenres_HasTags_ReturnsTagNamesProperCased()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = 55,
                    Weight = 400,
                    Name   = "tag name A"
                },
                new TagData
                {
                    Id     = 46,
                    Weight = 400,
                    Name   = "aNotheR tag name"
                }
            };

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 2, false);

            genres.Should().BeEquivalentTo("Tag Name A", "Another Tag Name");
        }
        public static AniDbSeriesData WithoutTags(this AniDbSeriesData aniDbSeriesData)
        {
            aniDbSeriesData = aniDbSeriesData.WithStandardData();

            aniDbSeriesData.Tags = null;

            return(aniDbSeriesData);
        }
Beispiel #13
0
 private Either <ProcessFailedResult, AniDbEpisodeData> GetAniDbEpisodeData(AniDbSeriesData aniDbSeriesData,
                                                                            IEmbyItemData embyItemData,
                                                                            ProcessResultContext resultContext)
 {
     return(this.aniDbEpisodeMatcher.FindEpisode(aniDbSeriesData.Episodes,
                                                 embyItemData.Identifier.ParentIndex,
                                                 embyItemData.Identifier.Index, embyItemData.Identifier.Name)
            .ToEither(resultContext.Failed("Failed to find episode in AniDb")));
 }
        public IEnumerable <string> GetStudios(AniDbSeriesData aniDbSeriesData)
        {
            if (aniDbSeriesData.Creators == null)
            {
                return(new List <string>());
            }

            return(aniDbSeriesData.Creators.Where(c => c.Type == "Animation Work").Select(c => c.Name));
        }
Beispiel #15
0
        public void GetGenres_NoTags_ReturnsEmpty()
        {
            var series = new AniDbSeriesData().WithoutTags();

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 1, false);

            genres.Should().BeNullOrEmpty();
        }
        public void SeasonMappings_MapsAllFields()
        {
            var source = new AniDbSeriesData
            {
                StartDate   = new DateTime(2017, 1, 2, 3, 4, 5),
                EndDate     = new DateTime(2017, 5, 4, 3, 2, 1),
                Description = "Description",
                Ratings     = new[]
                {
                    new PermanentRatingData
                    {
                        Value = 45
                    }
                }
            };

            var aniDbParser = Substitute.For <IAniDbParser>();

            aniDbParser.FormatDescription("Description").Returns("FormattedDescription");
            aniDbParser.GetGenres(source, 1, true).Returns(new List <string> {
                "Genre"
            });
            aniDbParser.GetTags(source, 1, true).Returns(new List <string> {
                "Tags"
            });
            aniDbParser.GetStudios(source).Returns(new List <string> {
                "Studio"
            });

            var target = new MetadataResult <Season>
            {
                Item = new Season()
            };

            var aniDbSourceMappingConfiguration =
                new AniDbSourceMappingConfiguration(aniDbParser, _titleSelector);

            aniDbSourceMappingConfiguration.GetSeasonMappings(1, true, TitleType.Localized, "en")
            .Select(m => m.CanApply(source, target))
            .Count(v => v)
            .Should()
            .Be(7);

            aniDbSourceMappingConfiguration.GetSeasonMappings(1, true, TitleType.Localized, "en")
            .Iter(m => m.Apply(source, target));

            target.Item.PremiereDate.Should().Be(new DateTime(2017, 1, 2, 3, 4, 5));
            target.Item.EndDate.Should().Be(new DateTime(2017, 5, 4, 3, 2, 1));
            target.Item.Overview.Should().Be("FormattedDescription");
            target.Item.Genres.Should().BeEquivalentTo("Genre");
            target.Item.Studios.Should().BeEquivalentTo("Studio");
            target.Item.Tags.Should().BeEquivalentTo("Tags");
            target.Item.CommunityRating.Should().Be(45);
        }
        private AniDbSeriesData SetUpAniDbSeriesData(int id)
        {
            var seriesData = new AniDbSeriesData().WithStandardData();

            seriesData.Id = id;

            _embyData.GetParentId(MediaItemTypes.Series, _aniDbSource).Returns(id);
            _aniDbSource.GetSeriesData(_mediaItem.EmbyData, Arg.Any <ProcessResultContext>()).Returns(seriesData);

            return(seriesData);
        }
Beispiel #18
0
        public void GetPeople_NullCreators_ReturnsEmpty()
        {
            var series = new AniDbSeriesData
            {
                Characters = new CharacterData[0]
            };

            var aniDbParser = new AniDbParser();

            aniDbParser.GetPeople(series).Should().BeEmpty();
        }
Beispiel #19
0
        public void GetGenres_AddAnimeGenreIsTrue_AddsAnimeGenre()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new TagData[0];

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 2, true);

            genres.Should().BeEquivalentTo("Anime");
        }
Beispiel #20
0
        public void GetGenres_AddAnimeGenreIsFalse_DoesNotAddAnimeGenre()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new TagData[0];

            var aniDbParser = new AniDbParser();

            var genres = aniDbParser.GetGenres(series, 2, false);

            genres.Should().BeEmpty();
        }
Beispiel #21
0
        public void FormatDescription_NoDescription_DoesNotThrow()
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Description = null;

            var aniDbParser = new AniDbParser();

            Action action = () => aniDbParser.FormatDescription(series.Description);

            action.Should().NotThrow();
        }
Beispiel #22
0
        public async Task GetSeriesData_ReturnsSeries()
        {
            var embyItemData = EmbyItemData("Name", 56);

            var seriesData = new AniDbSeriesData();

            _aniDbClient.GetSeriesAsync(56).Returns(Option <AniDbSeriesData> .Some(seriesData));

            var result = await _aniDbSource.GetSeriesData(embyItemData, new ProcessResultContext("", "", null));

            result.IsRight.Should().BeTrue();
            result.IfRight(r => r.Should().BeSameAs(seriesData));
        }
Beispiel #23
0
        public void GetPeople_CharactersWithoutSeiyuu_ReturnsEmpty()
        {
            var series = new AniDbSeriesData
            {
                Characters = new[]
                {
                    new CharacterData()
                }
            };

            var aniDbParser = new AniDbParser();

            aniDbParser.GetPeople(series).Should().BeEmpty();
        }
Beispiel #24
0
        public void GetPeople_HasCreatorsAndCharacters_ReturnsBoth()
        {
            var series = new AniDbSeriesData
            {
                Characters = new[]
                {
                    new CharacterData
                    {
                        Name   = "CharacterName1",
                        Seiyuu = new SeiyuuData
                        {
                            PictureFileName = "Picture1.jpg",
                            Name            = "NameA"
                        }
                    },
                    new CharacterData
                    {
                        Name   = "CharacterName2",
                        Seiyuu = new SeiyuuData
                        {
                            PictureFileName = "Picture2.jpg",
                            Name            = "NameB"
                        }
                    }
                },
                Creators = new[]
                {
                    new CreatorData
                    {
                        Name = "Name1",
                        Type = "Music"
                    },
                    new CreatorData
                    {
                        Name = "Name2",
                        Type = "Direction"
                    }
                }
            };

            var aniDbParser = new AniDbParser();

            var people = aniDbParser.GetPeople(series);

            people.Select(p => p.Name).Should().BeEquivalentTo("NameA", "NameB", "Name1", "Name2");
        }
        public void GetPeople_HasCreators_ReturnsReversedNames()
        {
            var series = new AniDbSeriesData
            {
                Creators = new[]
                {
                    new CreatorData
                    {
                        Name = "Reverse Name"
                    }
                }
            };

            var aniDbParser = new AniDbParser();

            aniDbParser.GetPeople(series).Single().Name.Should().Be("Name Reverse");
        }
Beispiel #26
0
        public void Setup()
        {
            _aniDbSource = Substitute.For <IAniDbSource>();
            _aniDbSource.GetSeriesData(_embyItemData, Arg.Any <ProcessResultContext>())
            .Returns(x => _aniDbSeriesData);

            _sources = Substitute.For <ISources>();
            _sources.AniDb.Returns(_aniDbSource);

            _aniDbClient = Substitute.For <IAniDbClient>();

            _embyItemData = Substitute.For <IEmbyItemData>();
            _embyItemData.Identifier.Returns(new ItemIdentifier(67, 1, "Name"));
            _embyItemData.Language.Returns("en");

            _aniDbSeriesData = new AniDbSeriesData().WithStandardData();
        }
Beispiel #27
0
        private AniDbSeriesData CreateAniDbSeries(int id, string name)
        {
            var seriesData = new AniDbSeriesData
            {
                Id     = id,
                Titles = new[]
                {
                    new ItemTitleData
                    {
                        Title = name
                    }
                }
            };

            this.aniDbSourceData.Id.Returns(id);
            this.aniDbSourceData.Data.Returns(seriesData);

            return(seriesData);
        }
        public void Setup()
        {
            _aniDbSource = Substitute.For <IAniDbSource>();

            _sources = Substitute.For <ISources>();
            _sources.AniDb.Returns(_aniDbSource);

            _embyItemData = Substitute.For <IEmbyItemData>();
            _embyItemData.Language.Returns("en");

            _aniDbSeriesTitles = new ItemTitleData[] { };
            var aniDbSeriesData = new AniDbSeriesData
            {
                Titles = _aniDbSeriesTitles
            };

            _embyItemData.Identifier.Returns(new ItemIdentifier(67, Option <int> .None, "Name"));
            _aniDbSource.GetSeriesData(_embyItemData, Arg.Any <ProcessResultContext>())
            .Returns(aniDbSeriesData);
        }
Beispiel #29
0
        public void GetPeople_MusicType_MapsTypeToComposer()
        {
            var series = new AniDbSeriesData
            {
                Creators = new[]
                {
                    new CreatorData
                    {
                        Name = "Reverse Name",
                        Type = "Music"
                    }
                }
            };

            var aniDbParser = new AniDbParser();

            var person = aniDbParser.GetPeople(series).Single();

            person.Type.Should().Be(PersonType.Composer);
        }
Beispiel #30
0
        public void GetTags_IgnoresSpecificTags(int id)
        {
            var series = new AniDbSeriesData().WithStandardData();

            series.Tags = new[]
            {
                new TagData
                {
                    Id     = id,
                    Weight = 600,
                    Name   = "Tag1"
                }
            };

            var aniDbParser = new AniDbParser();

            var tags = aniDbParser.GetTags(series, 0, false);

            tags.Should().BeEmpty();
        }