// failure path
        public async Task WhenCalledOnInvalidPerson_Return404NotFound()
        {
            GetPersonsMovieCreditsResult response = await _client.GetPersonsMovieCredits(personId : _invalidActor, language : null, retryCount : 0, delayMilliseconds : 1000);

            _output.WriteLine(response.HttpStatusCode.ToString());
            Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.NotFound);
        }
        // happy path
        public async Task WhenCalledOnActor_ReturnsPersonsCredits()
        {
            GetPersonsMovieCreditsResult response = await _client.GetPersonsMovieCredits(personId : _actor, language : null, retryCount : 0, delayMilliseconds : 1000);

            Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.OK);

            PersonsMovieCreditsModel personsCredits = JsonConvert.DeserializeObject <PersonsMovieCreditsModel>(response.Json);

            PrintActorsCredits(personsCredits.MoviesAsActor);

            Assert.True(personsCredits.MoviesAsActor.Length >= 32);
            Assert.True(personsCredits.MoviesAsActor.SingleOrDefault(m => m.Id == _movie) != null);
        }
        // happy path
        public async Task WhenCalledOnDirector_ReturnsPersonsCredits()
        {
            GetPersonsMovieCreditsResult response = await _client.GetPersonsMovieCredits(personId : _director, language : null, retryCount : 0, delayMilliseconds : 1000);

            Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.OK);

            PersonsMovieCreditsModel personsCredits = JsonConvert.DeserializeObject <PersonsMovieCreditsModel>(response.Json);

            PrintCrewMembersCredits(personsCredits.MoviesAsCrewMember);

            Assert.True(personsCredits.MoviesAsCrewMember.Length >= 1);
            Assert.True(personsCredits.MoviesAsCrewMember.Where(m => m.Id == _movie).Count() > 0);
        }
        // happy path
        public async Task WhenCalledWithLanguageOption_ReturnsResultInSetLanguage()
        {
            string language       = "hu";
            string hungarianTitle = "Vérző olaj";
            GetPersonsMovieCreditsResult response = await _client.GetPersonsMovieCredits(personId : _actor, language : language, retryCount : 0, delayMilliseconds : 1000);

            Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.OK);

            PersonsMovieCreditsModel personsCredits = JsonConvert.DeserializeObject <PersonsMovieCreditsModel>(response.Json);

            PrintActorsCredits(personsCredits.MoviesAsActor);

            Assert.Contains(hungarianTitle, response.Json, System.StringComparison.OrdinalIgnoreCase);
        }
        public async Task <GetPersonsMovieCreditsResult> GetPersonsMovieCredits(int personId, string language = null, int retryCount = 0, int delayMilliseconds = 1000)
        {
            string baseUrl = BASE_Address + BASE_Path + PERSON_Path + "/" + personId + MOVIE_CREDITS_Path;

            var query = new Dictionary <string, string>();

            query.Add(API_KEY_Key, ApiKey);

            if (!string.IsNullOrEmpty(language))
            {
                query.Add(LANGUAGE_Key, language);
            }

            string requestUri = QueryHelpers.AddQueryString(baseUrl, query);

            GetPersonsMovieCreditsResult result = await GetResponse <GetPersonsMovieCreditsResult>(retryCount, delayMilliseconds, requestUri);

            return(result);
        }