public void QuandoOcorrerErroAoAtualizarUmaListaDeProdutosDeveRetornarStatusDeErro()
        {
            var cadastroFornecedorMock = new Mock <ICadastroFornecedor>(MockBehavior.Strict);

            cadastroFornecedorMock.Setup(x => x.AtualizarFornecedores(It.IsAny <IList <FornecedorCadastroVm> >()))
            .Throws(new Exception("Ocorreu um erro ao atualizar os fornecedores"));
            var produtoApiController = new FornecedorApiController(cadastroFornecedorMock.Object);
            var fornecedorCadastroVm = new FornecedorCadastroVm()
            {
                Codigo = "FORNEC0001",
                Nome   = "FORNECEDOR 0001",
                Email  = "*****@*****.**"
            };

            produtoApiController.Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/FornecedorApi/PostMultiplo");
            produtoApiController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());

            var resposta = produtoApiController.PostMultiplo(new ListaFornecedores()
            {
                fornecedorCadastroVm
            });
            var apiResponseMessage = (ApiResponseMessage)((ObjectContent)(resposta.Content)).Value;

            Assert.AreEqual(HttpStatusCode.OK, resposta.StatusCode);
            Assert.AreEqual("500", apiResponseMessage.Retorno.Codigo);
            cadastroFornecedorMock.Verify(x => x.AtualizarFornecedores(It.IsAny <IList <FornecedorCadastroVm> >()), Times.Once());
        }
        public void QuandoEnviarFornecedorSemNomeDeveProcessarOutrosFornecedores()
        {
            var cadastroFornecedorMock = new Mock <ICadastroFornecedor>(MockBehavior.Strict);

            cadastroFornecedorMock.Setup(x => x.AtualizarFornecedores(It.IsAny <IList <FornecedorCadastroVm> >()));
            var fornecedorApiController     = new FornecedorApiController(cadastroFornecedorMock.Object);
            var fornecedorCadastroVmComNome = new FornecedorCadastroVm()
            {
                Codigo = "FORNEC0001",
                Nome   = "PRODUTO 0001",
                Email  = "*****@*****.**"
            };
            var fornecedorCadastroVmSemNome = new FornecedorCadastroVm()
            {
                Codigo = "FORNEC0002",
                Email  = "*****@*****.**"
            };

            fornecedorApiController.Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/FornecedorApi/PostMultiplo");
            fornecedorApiController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());

            var resposta = fornecedorApiController.PostMultiplo(new ListaFornecedores()
            {
                fornecedorCadastroVmComNome, fornecedorCadastroVmSemNome
            });
            var apiResponseMessage = (ApiResponseMessage)((ObjectContent)(resposta.Content)).Value;

            Assert.AreEqual(HttpStatusCode.OK, resposta.StatusCode);
            Assert.AreEqual("200", apiResponseMessage.Retorno.Codigo);
            Assert.AreEqual("1 fornecedores atualizados.1 fornecedores não atualizados: FORNEC0002.", apiResponseMessage.Retorno.Texto);
            cadastroFornecedorMock.Verify(x => x.AtualizarFornecedores(It.IsAny <IList <FornecedorCadastroVm> >()), Times.Once());
        }
        public void QuandoAtualizarUmaListaDeFornecedoresComSucessoDeveRetornarStatusOk()
        {
            var cadastroFornecedorMock = new Mock <ICadastroFornecedor>(MockBehavior.Strict);

            cadastroFornecedorMock.Setup(x => x.AtualizarFornecedores(It.IsAny <IList <FornecedorCadastroVm> >()));
            var fornecedorApiController = new FornecedorApiController(cadastroFornecedorMock.Object);
            var fornecedorCadastroVm    = new FornecedorCadastroVm()
            {
                Codigo = "FORNEC0001",
                Nome   = "PRODUTO 0001",
                Email  = "*****@*****.**"
            };

            fornecedorApiController.Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/FornecedorApi/PostMultiplo");
            fornecedorApiController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());

            var resposta = fornecedorApiController.PostMultiplo(new ListaFornecedores()
            {
                fornecedorCadastroVm
            });

            Assert.AreEqual(HttpStatusCode.OK, resposta.StatusCode);
            cadastroFornecedorMock.Verify(x => x.AtualizarFornecedores(It.IsAny <IList <FornecedorCadastroVm> >()), Times.Once());
        }