Esempio n. 1
0
        public async Task CopaMundoControllerTests_Dado_Solicitacao_Para_Obter_Filmes_Disponiveis_Para_Disputa_Quando_Consumir_Endpoint_Filmes_Retorna_Lista_Filmes()
        {
            var catalogo   = Substitute.For <ICatalogoFilmes>();
            var controller = new CopaMundoController(catalogo);

            catalogo.ObterTodos().Returns(new List <Filme>());

            var resultadoAcao = await controller.Get();

            var resultadoOk = resultadoAcao as OkObjectResult;
            var filmes      = resultadoOk?.Value as IReadOnlyCollection <Filme>;

            _ = catalogo.Received().ObterTodos();

            Assert.IsNotNull(resultadoOk, "há uma instância da classe OkObjectResult.");
            Assert.AreEqual(expected: 200, actual: resultadoOk.StatusCode, message: "o código de status de resposta é 200.");
            Assert.IsNotNull(filmes, "há uma instância no corpo da resposta da classe CopaMundo.");
        }
Esempio n. 2
0
        public async Task CopaMundoControllerTests_Dado_Request_Nao_Possua_Oito_Ids_de_Filmes_Para_Jogar_A_Copa_Quando_Consumir_Endpoint_Retorna_Bad_Request()
        {
            var catalogo   = Substitute.For <ICatalogoFilmes>();
            var controller = new CopaMundoController(catalogo);

            var resultadoAcao = await controller.Get(string.Empty);

            var resultadoBadRequest = resultadoAcao as BadRequestObjectResult;
            var resultadoMensagem   = resultadoBadRequest?.Value as string;

            _ = catalogo.DidNotReceive().ObterPorIds(Arg.Any <List <string> >());

            Assert.IsNotNull(resultadoBadRequest, "há uma instância da classe BadRequestObjectResult.");
            Assert.AreEqual(expected: 400, actual: resultadoBadRequest.StatusCode, message: "o código de status de resposta é 400.");
            Assert.AreEqual(expected: "Requisição incorreta pois não foi identificado 8 ids de filmes para o torneio.",
                            actual: resultadoMensagem,
                            message: "a mensagem de resposta do Bad Request está correta.");
        }
Esempio n. 3
0
        public async Task CopaMundoControllerTests_Dado_Request_Oito_Ids_De_Filmes_Para_Jogar_A_Copa_Quando_Consumir_Endpoint_Jogar_Retorna_Campeao_E_Vice()
        {
            var filmes     = ObterFilmesParaCenarioTestes();
            var catalogo   = Substitute.For <ICatalogoFilmes>();
            var controller = new CopaMundoController(catalogo);
            var ids        = "tt3606756,tt4881806,tt5164214,tt7784604,tt4154756,tt5463162,tt3778644,tt3501632";

            _ = catalogo.ObterPorIds(Arg.Any <List <string> >()).Returns(filmes);

            var resultadoAcao = await controller.Get(ids);

            var resultadoOk   = resultadoAcao as OkObjectResult;
            var resultadoCopa = resultadoOk?.Value as CopaMundo;

            _ = catalogo.Received().ObterPorIds(Arg.Any <List <string> >());

            Assert.IsNotNull(resultadoOk, "há uma instância da classe OkObjectResult.");
            Assert.AreEqual(expected: 200, actual: resultadoOk.StatusCode, "o código de status de resposta é 200.");
            Assert.IsNotNull(resultadoCopa, "há uma instância no corpo da resposta da classe CopaMundo.");
            Assert.IsNotNull(resultadoCopa.Campeao, "há uma instância da classe Filme como campeão do objeto CopaMundo.");
            Assert.IsNotNull(resultadoCopa.ViceCampeao, "há uma instância da classe Filme como vice-campeão do objeto CopaMundo.");
        }
Esempio n. 4
0
        public async Task CopaMundoControllerTests_Dado_Request_Com_Oito_Ids_Mas_Que_O_Catalogo_Retorne_Quantidade_Diferente_de_Oito_Para_Jogar_A_Copa_Quando_Consumir_Retorna_Not_Found()
        {
            var filmes     = ObterFilmesParaCenarioTestes();
            var catalogo   = Substitute.For <ICatalogoFilmes>();
            var controller = new CopaMundoController(catalogo);
            var ids        = "tt3606756,tt4881806,tt5164214,tt7784604,tt4154756,tt5463162,tt3778644,tt3501632";

            filmes.RemoveAt(filmes.Count - 1);
            _ = catalogo.ObterPorIds(Arg.Any <List <string> >()).Returns(filmes);

            var resultadoAcao = await controller.Get(ids);

            var resultadoNotFound = resultadoAcao as NotFoundObjectResult;
            var resultadoMensagem = resultadoNotFound?.Value as string;

            _ = catalogo.Received().ObterPorIds(Arg.Any <List <string> >());

            Assert.IsNotNull(resultadoNotFound, "há uma instância da classe NotFoundObjectResult.");
            Assert.AreEqual(expected: 404, actual: resultadoNotFound.StatusCode, "o código de status de resposta é 404.");
            Assert.AreEqual(expected: "Requisição inválida pois um ou mais filmes dentre os Ids informados não consta(m) no catálogo de filmes.",
                            actual: resultadoMensagem,
                            message: "a mensagem de resposta do Not Found está correta.");
        }