Ejemplo n.º 1
0
        public async Task SearchAnimeAsync_EmptyQueryWithConfigWithInvalidEnums_ShouldThrowValidationException(
            AiringStatus?airingStatus,
            AnimeAgeRating?rating,
            AnimeType?mangaType,
            AnimeSearchOrderBy?orderBy,
            SortDirection?sortDirection,
            AnimeGenreSearch?genreSearch
            )
        {
            // Given
            var searchConfig = new AnimeSearchConfig()
            {
                Status        = airingStatus.GetValueOrDefault(),
                Rating        = rating.GetValueOrDefault(),
                Type          = mangaType.GetValueOrDefault(),
                OrderBy       = orderBy.GetValueOrDefault(),
                SortDirection = sortDirection.GetValueOrDefault(),
                Genres        = genreSearch.HasValue ? new[] { genreSearch.Value } : Array.Empty <AnimeGenreSearch>()
            };

            // When
            var func = _jikan.Awaiting(x => x.SearchAnimeAsync(searchConfig));

            // Then
            await func.Should().ThrowExactlyAsync <JikanValidationException>();
        }
Ejemplo n.º 2
0
        public async Task SearchAnime_BlameMechaConfig_ShouldFilterBleachMecha()
        {
            var searchConfig = new AnimeSearchConfig();

            searchConfig.Genres.Add(GenreSearch.Mecha);

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("Blame", searchConfig);

            Assert.Contains("Blame! Movie", returnedAnime.Results.Select(x => x.Title));
        }
Ejemplo n.º 3
0
        public async Task SearchAnime_OnePieceAiringQuery_ShouldReturnAiringOnePieceAnime()
        {
            AnimeSearchConfig searchConfig = new AnimeSearchConfig()
            {
                Status = AiringStatus.Airing
            };

            AnimeSearchResult onePieceAnime = await jikan.SearchAnime("one p", searchConfig);

            Assert.Equal("One Piece", onePieceAnime.Results.First().Title);
        }
Ejemplo n.º 4
0
        public async Task SearchAnime_TVConfig_ShouldReturnNotNullSearchAnime(string query)
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime(query, searchConfig);

            Assert.NotNull(returnedAnime);
        }
Ejemplo n.º 5
0
        public async Task SearchAnime_DanganronpaTVConfig_ShouldReturnDanganronpaAnime()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            AnimeSearchResult danganronpaAnime = await jikan.SearchAnime("danganronpa", searchConfig);

            Assert.Equal(1, danganronpaAnime.ResultLastPage);
        }
Ejemplo n.º 6
0
        public async Task SearchAnime_OneSortByIdConfig_ShouldSortByIdHachimitsuFirst()
        {
            var searchConfig = new AnimeSearchConfig
            {
                OrderBy       = AnimeSearchSortable.Id,
                SortDirection = SortDirection.Ascending
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("one", searchConfig);

            Assert.Equal("Hachimitsu to Clover", returnedAnime.Results.First().Title);
        }
Ejemplo n.º 7
0
        public async Task SearchAnime_VioletIncorrectProducerConfig_ShouldNotFilter()
        {
            var searchConfig = new AnimeSearchConfig
            {
                ProducerId = -1
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("violet", searchConfig);

            Assert.Contains("Violence Jack: Jigoku Gai-hen", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Violet Evergarden", returnedAnime.Results.Select(x => x.Title));
        }
Ejemplo n.º 8
0
        public async Task SearchAnimeAsync_NonEmptyQuery_ShouldReturnNotNullSearchAnime(string query)
        {
            // Given
            var config = new AnimeSearchConfig {
                Query = query
            };

            // When
            var returnedAnime = await _jikan.SearchAnimeAsync(query);

            // Then
            returnedAnime.Should().NotBeNull();
        }
Ejemplo n.º 9
0
        public async Task SearchAnime_BlameMechaConfig_ShouldFilterBleachMecha()
        {
            // Given
            var searchConfig = new AnimeSearchConfig();

            searchConfig.Genres.Add(GenreSearch.Mecha);

            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime("Blame", searchConfig);

            // Then
            returnedAnime.Results.Select(x => x.Title).Should().Contain("Blame! Movie");
        }
Ejemplo n.º 10
0
        public async Task SearchAnimeAsync_InvalidPageSize_ShouldThrowValidationException(int pageSize)
        {
            // Given
            var config = new AnimeSearchConfig {
                PageSize = pageSize
            };

            // When
            var func = _jikan.Awaiting(x => x.SearchAnimeAsync(config));

            // Then
            await func.Should().ThrowExactlyAsync <JikanValidationException>();
        }
Ejemplo n.º 11
0
        public async Task SearchAnime_FairyTailTVAbove8Config_ShouldFilterFairyTailAnimeScore()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type  = AnimeType.TV,
                Score = 8
            };

            AnimeSearchResult fairyTailAnime = await jikan.SearchAnime("Fairy Tail", searchConfig);

            Assert.Equal("Fairy Tail (2014)", fairyTailAnime.Results.First().Title);
            Assert.Equal("Fairy Tail: Final Series", fairyTailAnime.Results.Skip(1).First().Title);
        }
Ejemplo n.º 12
0
        public async Task SearchAnime_VioletProducerKyotoAnimationConfig_ShouldReturnVEGAsTop3()
        {
            var searchConfig = new AnimeSearchConfig
            {
                ProducerId = 2
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("violet", searchConfig);

            Assert.Contains("Evergarden", returnedAnime.Results.First().Title);
            Assert.Contains("Evergarden", returnedAnime.Results.Skip(1).First().Title);
            Assert.Contains("Evergarden", returnedAnime.Results.Skip(2).First().Title);
        }
Ejemplo n.º 13
0
        public async Task SearchAnime_BleachAfter2017Config_ShouldFilterBleachAfter2017()
        {
            System.DateTime configDate   = new System.DateTime(2018, 1, 1);
            var             searchConfig = new AnimeSearchConfig
            {
                StartDate = configDate
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("Bleach", searchConfig);

            Assert.Contains("Full Metal Panic! Invisible Victory", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Beatless", returnedAnime.Results.Select(x => x.Title));
        }
Ejemplo n.º 14
0
        public async Task SearchAnime_BlameMechaMovieConfig_ShouldFilterBleachMechaMovie()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.Movie
            };

            searchConfig.Genres.Add(GenreSearch.Mecha);

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("Blame", searchConfig);

            Assert.Equal("Blame! Movie", returnedAnime.Results.First().Title);
        }
Ejemplo n.º 15
0
        public async Task SearchAnime_InvalidQueryWithConfig_ShouldThrowValidationException(string query)
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            // When
            Func <Task <AnimeSearchResult> > func = _jikan.Awaiting(x => x.SearchAnime(query, searchConfig));

            // Then
            await func.Should().ThrowExactlyAsync <JikanValidationException>();
        }
Ejemplo n.º 16
0
        public async Task SearchAnimeAsync_IncorrectProducerConfig_ShouldReturnEmpty()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                ProducerIds = { -1 }
            };

            // When
            var returnedAnime = await _jikan.SearchAnimeAsync(searchConfig);

            // Then
            returnedAnime.Data.Should().BeEmpty();
        }
Ejemplo n.º 17
0
        public async Task SearchAnime_TVConfig_ShouldReturnNotNullSearchAnime(string query)
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime(query, searchConfig);

            // Then
            returnedAnime.Should().Be(returnedAnime);
        }
Ejemplo n.º 18
0
        public async Task SearchAnime_DanganronpaTVConfig_ShouldReturnDanganronpaAnime()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                Type = AnimeType.TV
            };

            // When
            AnimeSearchResult danganronpaAnime = await _jikan.SearchAnime("danganronpa", searchConfig);

            // Then
            danganronpaAnime.ResultLastPage.Should().Be(2);
        }
Ejemplo n.º 19
0
        public async Task SearchAnime_OnePieceAiringQuery_ShouldReturnAiringOnePieceAnime()
        {
            // Given
            AnimeSearchConfig searchConfig = new AnimeSearchConfig()
            {
                Status = AiringStatus.Airing
            };

            // When
            AnimeSearchResult onePieceAnime = await _jikan.SearchAnime("one p", searchConfig);

            // Then
            onePieceAnime.Results.First().Title.Should().Be("One Piece");
        }
Ejemplo n.º 20
0
        public async Task SearchAnime_OneSortByMembersConfig_ShouldSortByPopularityOPMFirst()
        {
            var searchConfig = new AnimeSearchConfig
            {
                OrderBy       = AnimeSearchSortable.Members,
                SortDirection = SortDirection.Descending
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("one", searchConfig);

            Assert.Contains("One Piece", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("One Punch Man", returnedAnime.Results.Select(x => x.Title));
            Assert.Equal("One Punch Man", returnedAnime.Results.First().Title);
        }
Ejemplo n.º 21
0
        public async Task SearchAnime_OneSortByIdConfig_ShouldSortByIdHachimitsuFirst()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                OrderBy       = AnimeSearchSortable.Id,
                SortDirection = SortDirection.Ascending
            };

            // When
            AnimeSearchResult returnedAnime = await _jikan.SearchAnime("one", searchConfig);

            // Then
            returnedAnime.Results.First().Title.Should().Be("Hachimitsu to Clover");
        }
Ejemplo n.º 22
0
        public async Task SearchAnimeAsync_BlameSciFiConfig_ShouldFilterBleachSciFi()
        {
            // Given
            var searchConfig = new AnimeSearchConfig {
                Query = "Blame"
            };

            searchConfig.Genres.Add(AnimeGenreSearch.SciFi);

            // When
            var anime = await _jikan.SearchAnimeAsync(searchConfig);

            // Then
            anime.Data.Select(x => x.Title).Should().Contain("Blame! Movie");
        }
Ejemplo n.º 23
0
        public async Task SearchAnimeAsync_TVConfig_ShouldReturnNotNullSearchAnime(string query)
        {
            // Given
            var config = new AnimeSearchConfig
            {
                Query = query,
                Type  = AnimeType.TV
            };

            // When
            var returnedAnime = await _jikan.SearchAnimeAsync(config);

            // Then
            returnedAnime.Should().NotBeNull();
        }
Ejemplo n.º 24
0
        public async Task SearchAnime_EmptyQueryActionTvAnimeFirstPage_ShouldFindAfroSamuraiAndAjin()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type   = AnimeType.TV,
                Genres = new List <GenreSearch> {
                    GenreSearch.Action
                }
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime(searchConfig, 1);

            Assert.Contains("Ajin", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Afro Samurai", returnedAnime.Results.Select(x => x.Title));
        }
Ejemplo n.º 25
0
        public async Task SearchAnimeAsync_ProducerKyotoAnimationConfig_ShouldReturnFMPAndLuckyStar()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                ProducerIds = { 2 }
            };

            // When
            var returnedAnime = await _jikan.SearchAnimeAsync(searchConfig);

            // Then
            returnedAnime.Data.Should().Contain(x => x.Title.Contains("Full Metal Panic? Fumoffu"));
            returnedAnime.Data.Should().Contain(x => x.Title.Contains("Lucky☆Star"));
        }
Ejemplo n.º 26
0
        public async Task SearchAnimeAsync_DanganronpaTVConfig_ShouldReturnDanganronpaAnime()
        {
            // Given
            var config = new AnimeSearchConfig
            {
                Query = "danganronpa",
                Type  = AnimeType.TV
            };

            // When
            var anime = await _jikan.SearchAnimeAsync(config);

            // Then
            anime.Pagination.LastVisiblePage.Should().Be(1);
        }
Ejemplo n.º 27
0
        public async Task SearchAnime_OneQueryActionCompletedAnimeSecondPage_ShouldReturnNotEmptyCollection()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Status = AiringStatus.Completed,
                Genres = new List <GenreSearch> {
                    GenreSearch.Action
                }
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime("one", 2, searchConfig);

            Assert.NotNull(returnedAnime);
            Assert.NotEmpty(returnedAnime.Results);
        }
Ejemplo n.º 28
0
        public async Task SearchAnime_EmptyQueryActionTvAnimeSecondPage_ShouldFindAzurLaneAndBaccano()
        {
            var searchConfig = new AnimeSearchConfig
            {
                Type   = AnimeType.TV,
                Genres = new List <GenreSearch> {
                    GenreSearch.Action
                }
            };

            AnimeSearchResult returnedAnime = await jikan.SearchAnime(searchConfig, 2);

            Assert.Contains("Azur Lane", returnedAnime.Results.Select(x => x.Title));
            Assert.Contains("Baccano!", returnedAnime.Results.Select(x => x.Title));
        }
Ejemplo n.º 29
0
        public async Task SearchAnimeAsync_OneSortByIdConfig_ShouldSortByIdHachimitsuFirst()
        {
            // Given
            var searchConfig = new AnimeSearchConfig
            {
                Query         = "one",
                OrderBy       = AnimeSearchOrderBy.Id,
                SortDirection = SortDirection.Ascending
            };

            // When
            var returnedAnime = await _jikan.SearchAnimeAsync(searchConfig);

            // Then
            returnedAnime.Data.First().Title.Should().Be("Hachimitsu to Clover");
        }
Ejemplo n.º 30
0
        public async Task SearchAnimeAsync_OnePieceAiringQuery_ShouldReturnAiringOnePieceAnime()
        {
            // Given
            var config = new AnimeSearchConfig()
            {
                Query  = "one p",
                Status = AiringStatus.Airing,
                Type   = AnimeType.TV
            };

            // When
            var onePieceAnime = await _jikan.SearchAnimeAsync(config);

            // Then
            onePieceAnime.Data.First().Title.Should().Be("One Piece");
        }