public async Task Put_deverá_atualizar_a_empresa_e_retornar_NoContent()
        {
            //Arrange
            var repo       = new EmpresaRepositorioStub();
            var controller = new EmpresasController(repo);
            var empresa    = repo.ObterPorId(3);

            empresa.Nome = "empresa atualizada";

            //Action
            var result = await controller.Put(empresa.Id, empresa) as StatusCodeResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(StatusCodeResult));
            Assert.AreEqual(HttpStatusCode.NoContent, result.StatusCode);
            Assert.AreEqual("empresa atualizada", repo.ObterPorId(3).Nome);
            controller.Dispose();
            repo.Dispose();
        }
        public async Task Delete_deverá_excluir_a_empresa_e_retornar_Ok()
        {
            //Arrange
            var id         = 1;
            var repo       = new EmpresaRepositorioStub();
            var empresa    = repo.ObterPorId(id);
            var controller = new EmpresasController(repo);

            //Action
            var result = await controller.Delete(id) as OkNegotiatedContentResult <Empresa>;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNull(repo.ObterPorId(id));
            Assert.AreEqual(id, result.Content.Id);
            Assert.AreEqual(empresa, result.Content);

            controller.Dispose();
            repo.Dispose();
        }
        public async Task Get_com_id_deverá_retornar_a_empresa_desejada()
        {
            //Arrange
            var id         = 1;
            var repo       = new EmpresaRepositorioStub();
            var controller = new EmpresasController(repo);

            //Action
            var result = await controller.Get(id) as OkNegotiatedContentResult <Empresa>;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(repo.ObterPorId(id), result.Content);

            controller.Dispose();
            repo.Dispose();
        }
        public async Task Get_com_id_deverá_retornar_a_empresa_desejada()
        {
            //Arrange
            var id = 1;
            var repo = new EmpresaRepositorioStub();
            var controller = new EmpresasController(repo);

            //Action
            var result = await controller.Get(id) as OkNegotiatedContentResult<Empresa>;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(repo.ObterPorId(id), result.Content);

            controller.Dispose();
            repo.Dispose();
        }
        public async Task Put_deverá_falhar_qdo_o_param_id_for_diferente_da_empresa_id()
        {
            //Arrange
            var id         = 1;
            var repo       = new EmpresaRepositorioStub();
            var empresa    = repo.ObterPorId(3);
            var controller = new EmpresasController(repo);

            //Action
            var result = await controller.Put(id, empresa) as BadRequestErrorMessageResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("Os id's não conferem", result.Message);

            controller.Dispose();
            repo.Dispose();
        }
        public async Task Delete_deverá_excluir_a_empresa_e_retornar_Ok()
        {
            //Arrange
            var id = 1;
            var repo = new EmpresaRepositorioStub();
            var empresa = repo.ObterPorId(id);
            var controller = new EmpresasController(repo);

            //Action
            var result = await controller.Delete(id) as OkNegotiatedContentResult<Empresa>;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNull(repo.ObterPorId(id));
            Assert.AreEqual(id, result.Content.Id);
            Assert.AreEqual(empresa, result.Content);

            controller.Dispose();
            repo.Dispose();
        }
        public async Task Put_deverá_falhar_qdo_o_param_id_for_diferente_da_empresa_id()
        {
            //Arrange
            var id = 1;
            var repo = new EmpresaRepositorioStub();
            var empresa = repo.ObterPorId(3);
            var controller = new EmpresasController(repo);

            //Action
            var result = await controller.Put(id, empresa) as BadRequestErrorMessageResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("Os id's não conferem", result.Message);

            controller.Dispose();
            repo.Dispose();
        }
        public async Task Put_deverá_atualizar_a_empresa_e_retornar_NoContent()
        {
            //Arrange
            var repo = new EmpresaRepositorioStub();
            var controller = new EmpresasController(repo);
            var empresa = repo.ObterPorId(3);
            empresa.Nome = "empresa atualizada";

            //Action
            var result = await controller.Put(empresa.Id, empresa) as StatusCodeResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(StatusCodeResult));
            Assert.AreEqual(HttpStatusCode.NoContent, result.StatusCode);
            Assert.AreEqual("empresa atualizada", repo.ObterPorId(3).Nome);
            controller.Dispose();
            repo.Dispose();
        }