コード例 #1
0
        public void ComputadorAppService_InformarLiberacaoDoComputador_ComputadorNaoExiste()
        {
            // Arrange
            var vm = new LiberarComputadorViewModel();

            vm.DescricaoComputador = "C001";
            var computador = new Computador("C001", "A01");

            computador.Ocorrencias.Add(Ocorrencia.OcorrenciaFabrica.ComputadorEmUso());
            var repo = new Mock <IComputadorRepositorio>();

            repo.Setup(x => x.Atualizar(computador));
            var servico = new Mock <IComputadorServico>();

            servico.Setup(x => x.BuscarPorDescricao(vm.DescricaoComputador));
            servico.Setup(x => x.Atualizar(computador));
            var appServico = new ComputadorAppServico(servico.Object);

            // Act
            vm = appServico.LiberarComputador(vm);

            // Assert
            Assert.Equal(string.Format("O computador {0} não existe.", vm.DescricaoComputador), vm.Resultado);
            Assert.Equal("Computador não existe", appServico.BuscarPorDescricao(vm.DescricaoComputador).ResultadoTransacao);
        }
コード例 #2
0
        public void ComputadorAppService_InformarLiberacaoDoComputador_ComputadorLiberado()
        {
            // Arrange
            var vm = new LiberarComputadorViewModel();

            vm.DescricaoComputador = "C001";
            var computador = new Computador("C001", "A01");

            computador.Ocorrencias.Add(Ocorrencia.OcorrenciaFabrica.ComputadorEmUso());
            var repo = new Mock <IComputadorRepositorio>();

            repo.Setup(x => x.Atualizar(computador));
            var servico = new Mock <IComputadorServico>();

            servico.Setup(x => x.BuscarPorDescricao(vm.DescricaoComputador)).Returns(computador);
            servico.Setup(x => x.Atualizar(computador));
            var appServico = new ComputadorAppServico(servico.Object);

            // Act
            vm = appServico.LiberarComputador(vm);

            // Assert
            Assert.NotNull(vm);
            Assert.Equal(string.Format("O computador {0} foi liberado.", vm.DescricaoComputador), vm.Resultado);
            Assert.True(appServico.BuscarPorDescricao(vm.DescricaoComputador).PegarUltimaOcorrencia().Liberado);
        }
コード例 #3
0
        public LiberarComputadorViewModel LiberarComputador(LiberarComputadorViewModel viewModel)
        {
            var computador = _servico.BuscarPorDescricao(viewModel.DescricaoComputador);

            if (computador == null)
            {
                viewModel.Resultado = string.Format("O computador {0} não existe.", viewModel.DescricaoComputador);
            }
            else
            {
                computador.InformarLiberacao();
                _servico.Atualizar(computador);

                viewModel.Resultado = string.Format("O computador {0} foi liberado.", viewModel.DescricaoComputador);
            }

            return(viewModel);
        }
コード例 #4
0
        public void ComputadorController_LiberarComputador_ComputadorDesativado()
        {
            // Arrange
            var vm = new LiberarComputadorViewModel();

            vm.DescricaoComputador = "c001";
            var appServico = new Mock <IComputadorAppServico>();

            appServico.Setup(x => x.LiberarComputador(vm)).Throws(new ComputadorDesativadoException());

            // Act
            var response = new ComputadorController(appServico.Object)
                           .LiberarComputador(new HttpRequestMessage
            {
                Content = new ObjectContent <LiberarComputadorViewModel>(vm, new JsonMediaTypeFormatter())
            }).Content.ReadAsAsync <LiberarComputadorViewModel>().Result;

            // Assert
            Assert.NotNull(response);
            Assert.Equal(vm.DescricaoComputador, response.DescricaoComputador);
            Assert.Equal("Computador desativado. Não é possível utilizar este computador!", response.Resultado);
        }
コード例 #5
0
        public void ComputadorController_LiberarComputador_LiberacaoValida()
        {
            // Arrange
            var vm = new LiberarComputadorViewModel();

            vm.DescricaoComputador = "c001";
            vm.Resultado           = string.Format("O computador {0} foi liberado.", vm.DescricaoComputador);
            var appServico = new Mock <IComputadorAppServico>();

            appServico.Setup(x => x.LiberarComputador(vm)).Returns(vm);

            // Act
            var response = new ComputadorController(appServico.Object)
                           .LiberarComputador(new HttpRequestMessage
            {
                Content = new ObjectContent <LiberarComputadorViewModel>(vm, new JsonMediaTypeFormatter())
            }).Content.ReadAsAsync <LiberarComputadorViewModel>().Result;

            // Assert
            Assert.NotNull(response);
            Assert.Equal(vm.DescricaoComputador, response.DescricaoComputador);
            Assert.Equal(string.Format("O computador {0} foi liberado.", vm.DescricaoComputador), response.Resultado);
        }
コード例 #6
0
        public HttpResponseMessage LiberarComputador(HttpRequestMessage request)
        {
            LiberarComputadorViewModel vm = new LiberarComputadorViewModel();

            try
            {
                vm = request.Content.ReadAsAsync <LiberarComputadorViewModel>().Result;

                if (vm.EhValido())
                {
                    vm = _appServico.LiberarComputador(vm);

                    return(new HttpResponseMessage()
                    {
                        Content = new ObjectContent <LiberarComputadorViewModel>(vm, new JsonMediaTypeFormatter())
                    });
                }
                else
                {
                    vm.Resultado = "Os dados informados não são válidos.";

                    return(new HttpResponseMessage()
                    {
                        Content = new ObjectContent <LiberarComputadorViewModel>(vm, new JsonMediaTypeFormatter())
                    });
                }
            }
            catch (NullReferenceException)
            {
                return(new HttpResponseMessage
                {
                    StatusCode = HttpStatusCode.InternalServerError,
                    Content = new StringContent("Erro no corpo da requisição.")
                });
            }
            catch (ComputadorNaoExisteException ex)
            {
                vm.Resultado = ex.Message;

                return(new HttpResponseMessage
                {
                    StatusCode = HttpStatusCode.InternalServerError,
                    Content = new ObjectContent <LiberarComputadorViewModel>(vm, new JsonMediaTypeFormatter())
                });
            }
            catch (ComputadorDesativadoException ex)
            {
                vm.Resultado = ex.Message;

                return(new HttpResponseMessage
                {
                    StatusCode = HttpStatusCode.InternalServerError,
                    Content = new ObjectContent <LiberarComputadorViewModel>(vm, new JsonMediaTypeFormatter())
                });
            }
            catch (Exception)
            {
                return(new HttpResponseMessage
                {
                    StatusCode = HttpStatusCode.InternalServerError,
                    Content = new StringContent("Erro interno no servidor.")
                });
            }
        }