public async Task SearchByNameAsync_Milla_Jovovich_Returns_SingleResult_WithExpectedValues()
        {
            const string millaJovovich = "Milla Jovovich";

            ApiSearchResponse <PersonInfo> response = await _api.SearchByNameAsync(millaJovovich);

            ApiResponseUtil.AssertErrorIsNull(response);

            Assert.AreEqual(1, response.TotalResults);
            Assert.AreEqual(1, response.Results.Count);

            PersonInfo person = response.Results.Single();

            Assert.AreEqual(PersonId_MillaJovovich, person.Id);
            Assert.AreEqual(millaJovovich, person.Name);
            Assert.IsFalse(person.IsAdultFilmStar);
            Assert.AreEqual(3, person.KnownFor.Count);

            string[] roles =
            {
                "The Fifth Element",
                "Resident Evil: Retribution",
                "Resident Evil",
            };

            foreach (string role in roles)
            {
                PersonInfoRole info = person.KnownFor.SingleOrDefault(x => x.MovieTitle == role);
                Assert.IsNotNull(info);
                Assert.AreEqual(MediaType.Movie, info.MediaType);
            }
        }
        public async Task GetCreditsAsync_ReturnsCastMembers()
        {
            const int movieIdRunLolaRun = 104;

            ApiQueryResponse <MovieCredit> response = await _api.GetCreditsAsync(movieIdRunLolaRun);

            ApiResponseUtil.AssertErrorIsNull(response);

            MovieCredit credit = response.Item;

            MovieCastMember lola = credit.CastMembers.Single(x => x.Character == "Lola");

            Assert.AreEqual(679, lola.PersonId);
            Assert.AreEqual(11, lola.CastId);
            Assert.AreEqual("52fe4218c3a36847f80038df", lola.CreditId);
            Assert.AreEqual("Franka Potente", lola.Name);

            foreach (MovieCastMember castMember in credit.CastMembers)
            {
                Assert.IsTrue(castMember.PersonId > 0);
                Assert.IsTrue(castMember.CastId > 0);
                Assert.IsFalse(string.IsNullOrWhiteSpace(castMember.CreditId));
                Assert.IsFalse(string.IsNullOrWhiteSpace(castMember.Name));
                Assert.IsFalse(string.IsNullOrWhiteSpace(castMember.Character));
            }
        }
        public async Task FindByIdAsync_KevinBacon_Returns_ExpectedValues()
        {
            const string expectedName         = "Kevin Bacon";
            const string expectedBiography    = "Kevin Norwood Bacon (born July 8, 1958) is an American film and theater actor"; // truncated
            DateTime     expectedBirthday     = DateTime.Parse("1958-07-08");
            const Gender expectedGender       = Gender.Male;
            const string expectedHomepage     = "http://www.baconbros.com";
            const string expectedImdbId       = "nm0000102";
            const string expectedPlaceOfBirth = "Philadelphia, Pennsylvania, USA";

            string[] alsoKnownAs =
            {
                "Kevin Norwood Bacon",
            };

            ApiQueryResponse <Person> response = await _api.FindByIdAsync(PersonId_KevinBacon);

            ApiResponseUtil.AssertErrorIsNull(response);

            Person person = response.Item;

            Assert.AreEqual(expectedName, person.Name);
            Assert.IsTrue(person.Biography.StartsWith(expectedBiography), $"Actual Biography: {person.Biography}");
            Assert.IsFalse(person.IsAdultFilmStar);
            Assert.AreEqual(expectedBirthday, person.Birthday);
            Assert.AreEqual(expectedGender, person.Gender);
            Assert.AreEqual(null, person.Deathday);
            Assert.AreEqual(expectedHomepage, person.Homepage);
            Assert.AreEqual(expectedImdbId, person.ImdbId);
            Assert.AreEqual(expectedPlaceOfBirth, person.PlaceOfBirth);
            Assert.IsTrue(person.Popularity > 3);
            Assert.IsNotNull(person.ProfilePath);

            CollectionAssert.AreEquivalent(alsoKnownAs, person.AlsoKnownAs.ToArray());
        }
        public async Task FindByIdAync_MillaJovovich_Returns_ExpectedValues()
        {
            const string expectedName         = "Milla Jovovich";
            const string expectedBiography    = "Milla Jovovich, born as Milica Natasha Jovovich, is an Ukrainian-born actress, an American supermodel, musician, and fashion designer."; // truncated
            DateTime     expectedBirthday     = DateTime.Parse("1975-12-17");
            const Gender expectedGender       = Gender.Female;
            const string expectedHomepage     = "http://www.millaj.com";
            const string expectedImdbId       = "nm0000170";
            const string expectedPlaceOfBirth = "Kiev, Ukraine";

            ApiQueryResponse <Person> response = await _api.FindByIdAsync(PersonId_MillaJovovich);

            ApiResponseUtil.AssertErrorIsNull(response);

            Person person = response.Item;

            Assert.AreEqual(expectedName, person.Name);
            Assert.IsTrue(person.Biography.StartsWith(expectedBiography));
            Assert.IsFalse(person.IsAdultFilmStar);
            Assert.AreEqual(0, person.AlsoKnownAs.Count);
            Assert.AreEqual(expectedBirthday, person.Birthday);
            Assert.AreEqual(expectedGender, person.Gender);
            Assert.AreEqual(null, person.Deathday);
            Assert.AreEqual(expectedHomepage, person.Homepage);
            Assert.AreEqual(expectedImdbId, person.ImdbId);
            Assert.AreEqual(expectedPlaceOfBirth, person.PlaceOfBirth);
            Assert.IsTrue(person.Popularity > 10);
            Assert.IsNotNull(person.ProfilePath);
        }
        public async Task GetCreditsAsync_ReturnsCrewMembers()
        {
            const int tvShowRunLolaRun = 106159;

            ApiQueryResponse <TVShowEpisodeCredit> response = await _api.GetCreditsAsync(tvShowRunLolaRun, 1, 1);


            ApiResponseUtil.AssertErrorIsNull(response);

            TVShowEpisodeCredit credit = response.Item;

            TVShowEpisodeCrewMember director = credit.CrewMembers.Single(x => x.Job == "Director");

            Assert.AreEqual(37948, director.PersonId);
            Assert.AreEqual("6041cbd4b77d4b004488e000", director.CreditId);
            Assert.AreEqual("Directing", director.Department);
            Assert.AreEqual("Brad Anderson", director.Name);

            foreach (TVShowEpisodeCrewMember crewMember in credit.CrewMembers)
            {
                Assert.IsTrue(crewMember.PersonId > 0);
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.CreditId));
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.Department));
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.Job));
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.Name));
            }
        }
        public async Task GetCreditsAsync_ReturnsCrewMembers()
        {
            const int movieIdRunLolaRun = 104;

            ApiQueryResponse <MovieCredit> response = await _api.GetCreditsAsync(movieIdRunLolaRun);

            ApiResponseUtil.AssertErrorIsNull(response);

            MovieCredit credit = response.Item;

            MovieCrewMember director = credit.CrewMembers.Single(x => x.Job == "Director");

            Assert.AreEqual(1071, director.PersonId);
            Assert.AreEqual("52fe4218c3a36847f80038ab", director.CreditId);
            Assert.AreEqual("Directing", director.Department);
            Assert.AreEqual("Tom Tykwer", director.Name);

            foreach (MovieCrewMember crewMember in credit.CrewMembers)
            {
                Assert.IsTrue(crewMember.PersonId > 0);
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.CreditId));
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.Department));
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.Job));
                Assert.IsFalse(string.IsNullOrWhiteSpace(crewMember.Name));
            }
        }
        public async Task GetCreditsAsync_ReturnsGuestStarsMembers()
        {
            const int tvShowRunLolaRun = 106159;

            ApiQueryResponse <TVShowEpisodeCredit> response = await _api.GetCreditsAsync(tvShowRunLolaRun, 1, 1);


            ApiResponseUtil.AssertErrorIsNull(response);

            TVShowEpisodeCredit credit = response.Item;

            TVShowEpisodeGuestStarsMember member = credit.GuestStarsMembers.Single(x => x.Character == "Isla Vandeberg");

            Assert.AreEqual(1272883, member.PersonId);
            Assert.AreEqual("041caaf5690b50045ea29ae", member.CreditId);
            Assert.AreEqual("Alisha Newton", member.Name);

            foreach (TVShowEpisodeGuestStarsMember guestStarsMember in credit.GuestStarsMembers)
            {
                Assert.IsTrue(guestStarsMember.PersonId > 0);
                Assert.IsFalse(string.IsNullOrWhiteSpace(guestStarsMember.CreditId));
                Assert.IsFalse(string.IsNullOrWhiteSpace(guestStarsMember.Name));
                Assert.IsFalse(string.IsNullOrWhiteSpace(guestStarsMember.Character));
            }
        }
        public async Task GetUpcomingAsync_Returns_ValidResults()
        {
            ApiSearchResponse <Movie> response = await _api.GetUpcomingAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            ApiResponseUtil.AssertMovieStructure(response.Results);
        }
        public async Task GetPopularAsync_CanPageResults()
        {
            const int minimumPageCount         = 2;
            const int minimumTotalResultsCount = 40;

            await ApiResponseUtil.AssertCanPageSearchResponse("unused", minimumPageCount, minimumTotalResultsCount,
                                                              (str, page) => _api.GetPopularAsync(page), x => x.Id);
        }
        public void TestInit()
        {
            ApiResponseUtil.ThrottleTests();

            _api = MovieDbFactory.Create <IApiPeopleRequest>().Value;

            Assert.IsInstanceOfType(_api, typeof(ApiPeopleRequest));
        }
Beispiel #11
0
        public async Task GetTopRatedAsync_CanPageResults()
        {
            const int minimumPageCount         = 5;
            const int minimumTotalResultsCount = 100;

            await ApiResponseUtil.AssertCanPageSearchResponse("none", minimumPageCount, minimumTotalResultsCount,
                                                              (str, page) => _api.GetTopRatedAsync(page), x => x.Id);
        }
        public async Task GetLatestAsync_Returns_ValidResult()
        {
            ApiQueryResponse <Movie> response = await _api.GetLatestAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            ApiResponseUtil.AssertMovieStructure(response.Item);
        }
        public async Task SearchByTitleAsync_CanPageResults()
        {
            const string query                    = "Harry";
            const int    minimumPageCount         = 8;
            const int    minimumTotalResultsCount = 140;

            await ApiResponseUtil.AssertCanPageSearchResponse(query, minimumPageCount, minimumTotalResultsCount,
                                                              (search, pageNumber) => _api.SearchByTitleAsync(search, pageNumber), x => x.Id);
        }
        public async Task GetNowPlayingAsync_CanPageResults()
        {
            // Now Playing typically has 25+ pages.
            const int minimumPageCount         = 5;
            const int minimumTotalResultsCount = 100; // 20 results per page x 5 pages = 100

            await ApiResponseUtil.AssertCanPageSearchResponse("unused", minimumPageCount, minimumTotalResultsCount,
                                                              (str, page) => _api.GetNowPlayingAsync(page), x => x.Id);
        }
        public async Task SearchByNameAsync_CanPageResults()
        {
            const string query                    = "Cox";
            const int    minimumPageCount         = 15;
            const int    minimumTotalResultsCount = 300;

            await ApiResponseUtil.AssertCanPageSearchResponse(query, minimumPageCount, minimumTotalResultsCount,
                                                              (search, pageNumber) => _api.SearchByNameAsync(search, pageNumber), null);
        }
Beispiel #16
0
        public async Task GetMoviesAsync_CanPageResults()
        {
            const int companyId                = 3;
            const int minimumPageCount         = 4;
            const int minimumTotalResultsCount = 75;

            await ApiResponseUtil.AssertCanPageSearchResponse(companyId, minimumPageCount, minimumTotalResultsCount,
                                                              (id, pageNumber) => _api.GetMoviesAsync(id, pageNumber), x => x.Id);
        }
Beispiel #17
0
        public async Task GetTopRatedAsync_Returns_ValidResult()
        {
            ApiSearchResponse <TVShowInfo> response = await _api.GetTopRatedAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            IReadOnlyList <TVShowInfo> results = response.Results;

            ApiResponseUtil.AssertTVShowInformationStructure(results);
        }
Beispiel #18
0
        public async Task SearchByNameAsync_The_Nanny_Returns_ExpectedResults_InGerman()
        {
            const string theNanny = "Die Nanny";

            ApiSearchResponse <TVShowInfo> response = await _api.SearchByNameAsync(theNanny, language : "de");

            ApiResponseUtil.AssertErrorIsNull(response);

            AssertTheNanny(response, theNanny);
        }
        public async Task FindMoviesByIdAsync_CanPageResults()
        {
            int genreId = GenreFactory.Comedy().Id;
            // Comedy has upwards of 2k pages.
            const int minimumPageCount         = 5;
            const int minimumTotalResultsCount = 100; // 20 results per page x 5 pages = 100

            await ApiResponseUtil.AssertCanPageSearchResponse(genreId, minimumPageCount, minimumTotalResultsCount,
                                                              (id, page) => _api.FindMoviesByIdAsync(id, page), x => x.Id);
        }
        public async Task GetAllAsync_Returns_Known_Genres()
        {
            ApiQueryResponse <IReadOnlyList <Genre> > response = await _api.GetAllAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            IReadOnlyList <Genre> knownGenres = GenreFactory.GetAll();

            CollectionAssert.AreEquivalent(knownGenres.ToList(), response.Item.ToList());
        }
        public async Task GetPopularAsync_Returns_ValidResults()
        {
            ApiSearchResponse <MovieInfo> response = await _api.GetPopularAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            IReadOnlyList <MovieInfo> results = response.Results;

            ApiResponseUtil.AssertMovieInformationStructure(results);
        }
        public async Task GetUpcomingAsync_CanPageResults()
        {
            // Now Playing typically has 5+ pages.
            // - intentionally setting minimumTotalResultsCount at 50; sometimes upcoming movies are scarce.
            const int minimumPageCount         = 3;
            const int minimumTotalResultsCount = 50; // 20 results per page x 3 pages = 60

            await ApiResponseUtil.AssertCanPageSearchResponse("unused", minimumPageCount, minimumTotalResultsCount,
                                                              (str, page) => _api.GetUpcomingAsync(page), x => x.Id);
        }
        public async Task GetTelevisionAsync_Returns_16_Results()
        {
            ApiQueryResponse <IReadOnlyList <Genre> > response = await _api.GetTelevisionAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            Assert.IsTrue(response.Item.Any());

            Assert.AreEqual(16, response.Item.Count);
        }
        public async Task GetCreditsAsync_Returns_ValidResults()
        {
            const int movieIdRunLolaRun = 104;

            ApiQueryResponse <MovieCredit> response = await _api.GetCreditsAsync(movieIdRunLolaRun);

            ApiResponseUtil.AssertErrorIsNull(response);

            Assert.AreEqual(movieIdRunLolaRun, response.Item.MovieId);
            Assert.AreEqual(23, response.Item.CastMembers.Count);
            Assert.AreEqual(37, response.Item.CrewMembers.Count);
        }
        private void AssertReponseIncludesJson(ApiResponseBase response)
        {
            string actualJson = $"Actual: {response.Json}";

            ApiResponseUtil.AssertErrorIsNull(response);

            Assert.IsTrue(response.Json.Contains("\"release_date\":\"1998-08-20\""), actualJson);
            Assert.IsTrue(response.Json.Contains("\"original_title\":\"Lola rennt\""), actualJson);
            Assert.IsTrue(response.Json.Contains("\"title\":\"Run Lola Run\""), actualJson);
            Assert.IsTrue(response.Json.Contains("\"original_language\":\"de\""), actualJson);
            Assert.IsTrue(response.Json.Contains("\"id\":104"), actualJson);
        }
        public async Task MovieWithLargeRevenue_Will_Deserialize()
        {
            const int    id            = 19995;
            const string expectedTitle = "Avatar";

            ApiQueryResponse <Movie> response = await _api.FindByIdAsync(id);

            ApiResponseUtil.AssertErrorIsNull(response);

            Assert.AreEqual(expectedTitle, response.Item.Title);
            Assert.IsTrue(response.Item.Revenue > int.MaxValue);
        }
Beispiel #27
0
        public async Task GetLatestAsync_Returns_ValidResult()
        {
            ApiQueryResponse <TVShow> response = await _api.GetLatestAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            TVShow show = response.Item;

            Assert.IsNotNull(show);

            Assert.IsTrue(show.Id > 0);
            Assert.IsFalse(string.IsNullOrEmpty(show.Name));
        }
        public async Task GetAllAsync_Returns_AllResults_With_Id_and_Name()
        {
            ApiQueryResponse <IReadOnlyList <Genre> > response = await _api.GetAllAsync();

            ApiResponseUtil.AssertErrorIsNull(response);

            foreach (Genre genre in response.Item)
            {
                Assert.IsTrue(genre.Id > 0, genre.ToString());
                Assert.IsNotNull(genre.Name, genre.ToString());
                Assert.IsTrue(genre.Name.Length >= 3, genre.ToString());
            }
        }
        public async Task FindByIdAsync_Returns_German_With_LanguageParameter()
        {
            const int    id            = 140607;
            const string language      = "de";
            const string expectedTitle = "Star Wars: Das Erwachen der Macht";

            ApiQueryResponse <Movie> response = await _api.FindByIdAsync(id, language);

            ApiResponseUtil.AssertErrorIsNull(response);

            Assert.AreEqual(id, response.Item.Id);
            Assert.AreEqual(expectedTitle, response.Item.Title);
        }
        public async Task GetCreditsAsync_Returns_ValidResults()
        {
            const int tvShowRunLolaRun = 106159;


            ApiQueryResponse <TVShowEpisodeCredit> response = await _api.GetCreditsAsync(tvShowRunLolaRun, 1, 1);

            ApiResponseUtil.AssertErrorIsNull(response);

            //Assert.AreEqual(tvShowRunLolaRun, response.Item.TVShowEpisodeId );
            Assert.AreEqual(4, response.Item.CastMembers.Count);
            Assert.AreEqual(11, response.Item.CrewMembers.Count);
            Assert.AreEqual(29, response.Item.GuestStarsMembers.Count);
        }