public async Task CatalogoFilmesWebAPITests_Dado_Solicitacao_Para_Obter_Todos_Filmes_Quando_Consultar_API_Valida_Serializacao_Dos_Filmes()
        {
            const int OS_INCRIVEIS = 0;

            var messageHandler = new MockHttpMessageHandler(ObterExemploJsonResposta(), HttpStatusCode.OK);
            var httpClient     = new HttpClient(messageHandler);
            var catalogo       = new CatalogoFilmesWebAPI(httpClient, ObterOpcoesCatalogoFilmes());

            var filmes = await catalogo.ObterTodos();

            Assert.AreEqual(expected: 16, filmes.Count, "obtido todos os 16 filmes do exemplo de JSON de resposta fornecido no teste.");

            Assert.AreEqual(expected: "tt3606756", filmes.ElementAt(OS_INCRIVEIS).Id, "o Id do filme \"Os Incríveis 2\" está correto.");
            Assert.AreEqual(expected: "Os Incríveis 2", filmes.ElementAt(OS_INCRIVEIS).Titulo, "o Id do filme \"Os Incríveis 2\" está correto.");
            Assert.AreEqual(expected: 2018, filmes.ElementAt(OS_INCRIVEIS).Ano, "o Id do filme \"Os Incríveis 2\" está correto.");
            Assert.IsTrue(filmes.ElementAt(OS_INCRIVEIS).PossuiNotaIgual(new FilmeTestBuilder().ComNota(8.5m).Build()), "o Id do filme \"Os Incríveis 2\" está correto.");
        }
        public async Task CatalogoFilmesWebAPITests_Dado_Conjunto_De_Ids_De_Filmes_Quando_Consultar_API_Retorna_Filmes_Relacionados_Aos_Ids()
        {
            var messageHandler = new MockHttpMessageHandler(ObterExemploJsonResposta(), HttpStatusCode.OK);
            var httpClient     = new HttpClient(messageHandler);
            var catalogo       = new CatalogoFilmesWebAPI(httpClient, ObterOpcoesCatalogoFilmes());

            var idsFilmes = new List <string> {
                "tt3606756", "tt4881806", "tt5164214", "tt7784604", "tt4154756", "tt5463162", "tt3778644", "tt3501632"
            };
            var filmes = await catalogo.ObterPorIds(idsFilmes);

            Assert.AreEqual(expected: 8, actual: filmes.Count, $"Quantidade de filmes esperados é 8 e a quantidade de filmes obtidos com filtro foi {filmes.Count}.");

            foreach (var id in idsFilmes)
            {
                Assert.IsTrue(filmes.Any(f => f.Id == id), $"O filme com Id {id} encontra-se entre os filmes retornados da busca.");
            }
        }