コード例 #1
0
        public void ViewEditPorId()
        {
            //Arrange
            var mockRepo = new Mock <IRepositorioPropietario>();

            //los métodos que se hagan mock, deben ser virtuales
            mockRepo.Setup(x => x.GetById(1)).Returns(
                new Propietario {
                IdPropietario = 1,
                Nombre        = "Pepe",
                Apellido      = "Perez"
            });
            var mockConfig  = new Mock <IConfiguration>();
            var controlador = new PropietariosController(mockRepo.Object);
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());

            controlador.TempData = tempData;

            //Act
            var res = controlador.Edit(1) as ViewResult;

            //Assert
            Assert.NotNull(res);
            mockRepo.Verify(x => x.GetById(1), Times.Exactly(1), "No se llamó a GetById exactamente 1 vez");
            Assert.NotNull(res.Model);
            Assert.IsType <Propietario>(res.Model);
            Propietario p = res.Model as Propietario;

            Assert.Equal(1, p.IdPropietario);
        }
コード例 #2
0
        public void ViewEditPorId()
        {
            //Arrange
            var mockRepo = new Mock <IRepositorioPropietario>();

            //los métodos que se hagan mock, deben ser virtuales
            mockRepo.Setup(x => x.ObtenerPorId(1)).Returns(new Propietario {
                IdPropietario = 1
            });
            var mockConfig  = new Mock <IConfiguration>();
            var controlador = new PropietariosController(mockRepo.Object, mockConfig.Object);
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());

            controlador.TempData = tempData;

            //Act
            var res = controlador.Edit(1) as ViewResult;

            //Assert
            Assert.NotNull(res);
            mockRepo.Verify(x => x.ObtenerPorId(1), Times.Exactly(1), "No se llamó a repo.ObtenerPorId(id)");
            Assert.NotNull(res.Model);
            Assert.IsType <Propietario>(res.Model);
            Propietario p = res.Model as Propietario;

            Assert.Equal(1, p.IdPropietario);
            //Assert.Equal("Edit", res.ViewName);//no se puede porque devuelve View() sin parámetro
        }
コード例 #3
0
        public void Obtener_Propietario_Por_Id_Cuando_No_Existe_DebeRetornarNotFound()
        {
            var       repoFake      = new RepositorioFake();
            var       controller    = new PropietariosController(repoFake);
            const int idInexistente = 1050;
            var       result        = controller.Get(idInexistente);

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
            Assert.AreEqual(true, repoFake.ObtenerPorIdLlamado);
        }
コード例 #4
0
        public void Puedo_Obtener_Propietario_Por_Id()
        {
            var       repoFake    = new RepositorioFake();
            var       controller  = new PropietariosController(repoFake);
            const int idExistente = 1;
            var       result      = controller.Get(idExistente) as OkNegotiatedContentResult <Propietario>;

            Assert.IsNotNull(result);
            Assert.AreEqual(true, repoFake.ObtenerPorIdLlamado);
            Assert.AreEqual(1, result.Content.Id); // chequeo que el primer item
            Assert.AreEqual("Prop1", result.Content.Nombre);
            Assert.AreEqual("Ape1", result.Content.Apellido);
        }
コード例 #5
0
        public void Crear_Propietario_Cuando_Es_Invalido_Retorna_BadRequest()
        {
            //Arrange (preparar)
            var repoFake   = new RepositorioFake();
            var controller = new PropietariosController(repoFake);
            var prop       = new Propietario();

            controller.ModelState.AddModelError("Nombre", "El nombre es requerido");

            //Act (actuar)
            var result = controller.Post(prop) as InvalidModelStateResult;

            //Assert (asertar)
            Assert.IsNotNull(result);
            //Como el modelo es invalido no se llamo al metodo crear del repo.
            Assert.AreEqual(false, repoFake.CrearLlamado);
        }
コード例 #6
0
        public void Actualizar_Propietario_Cuando_El_Id_No_Existe_Devuelve_NotFound()
        {
            //Arrange
            const int idNoExistente = 10;
            var       repo          = new RepositorioFake();
            var       controller    = new PropietariosController(repo);

            //Act
            var result = controller.Put(idNoExistente, new Propietario());

            //Assert
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
            //Como el id resulto ser de un propietario que no existe
            //no se llamo a al metodo Actualizar pero si al obtenerPorid.
            Assert.AreEqual(true, repo.ObtenerPorIdLlamado);
            Assert.AreEqual(false, repo.ActualizarLlamado);
        }
コード例 #7
0
        public void Eliminar_Propietario_Cuando_Tiene_Vehiculos_Devuelve_Conflict()
        {
            //Arrange
            const int idConVehiculos = 3;
            var       repo           = new RepositorioFake();
            var       controller     = new PropietariosController(repo);

            //Act
            var result = controller.Delete(idConVehiculos);

            //Assert
            Assert.IsInstanceOfType(result, typeof(ConflictResult));
            Assert.AreEqual(idConVehiculos, repo.PropietarioId);
            Assert.AreEqual(true, repo.ObtenerPorIdLlamado);
            //Como tiene vehiculos no llamamos a Eliminar del repo.
            Assert.AreEqual(false, repo.EliminarLlamado);
        }
コード例 #8
0
        public void Eliminar_Propietario_Cuando_No_Existe_Devuelve_NotFound()
        {
            //Arrange
            const int idNoExistente = 10;
            var       repo          = new RepositorioFake();
            var       controller    = new PropietariosController(repo);

            //Act
            var result = controller.Delete(idNoExistente);

            //Assert
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
            Assert.AreEqual(idNoExistente, repo.PropietarioId);
            Assert.AreEqual(true, repo.ObtenerPorIdLlamado);
            //Como el propietario no existe no llamamos a Eliminar del repo.
            Assert.AreEqual(false, repo.EliminarLlamado);
        }
コード例 #9
0
        public void Puedo_Eliminar_Propietario()
        {
            //Arrange
            const int idExistenteSinVehiculos = 1;
            var       repo       = new RepositorioFake();
            var       controller = new PropietariosController(repo);

            //Act
            var result = controller.Delete(idExistenteSinVehiculos);

            //Assert
            Assert.IsInstanceOfType(result, typeof(OkResult));
            Assert.AreEqual(idExistenteSinVehiculos, repo.PropietarioId);
            Assert.AreEqual(true, repo.ObtenerPorIdLlamado);
            //Como esta todo ok si llamamos a Eliminar del repo.
            Assert.AreEqual(true, repo.EliminarLlamado);
        }
コード例 #10
0
        public void Eliminar_Propietario_Cuando_El_Id_No_Es_Valido_Devuelve_BadRequest()
        {
            //Arrange
            int[] idsNoValidos = { -1, 0 };
            var   repo         = new RepositorioFake();
            var   controller   = new PropietariosController(repo);

            //Act
            foreach (var id in idsNoValidos)
            {
                var result = controller.Delete(id) as BadRequestErrorMessageResult;

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual("El id no es válido.", result.Message);
                Assert.AreEqual(false, repo.EliminarLlamado);
            }
        }
コード例 #11
0
        public void Puedo_Crear_Propietario()
        {
            //Arrange (preparar)
            var repoFake   = new RepositorioFake();
            var controller = new PropietariosController(repoFake);
            var prop       = new Propietario {
                Nombre = "PropNuevo", Apellido = "ApeNuevo"
            };

            //Act (actuar)
            var result = controller.Post(prop) as CreatedAtRouteNegotiatedContentResult <Propietario>;

            //Assert (asertar)
            Assert.IsNotNull(result); // si es nulo es porque no dio Created
            Assert.AreEqual(true, repoFake.CrearLlamado);
            Assert.AreEqual(10, result.Content.Id);
            Assert.AreEqual("PropNuevo", result.Content.Nombre);
            Assert.AreEqual("ApeNuevo", result.Content.Apellido);
        }
コード例 #12
0
        public void Puedo_Obtener_Propietarios()
        {
            //Arrange (preparar)
            var repoFake   = new RepositorioFake();
            var controller = new PropietariosController(repoFake);

            //Act (actuar)
            var result = controller.Get() as OkNegotiatedContentResult <IEnumerable <Propietario> >;

            //Assert (asertar)
            Assert.IsNotNull(result);                      // si es nulo es porque no dio Ok
            Assert.AreEqual(true, repoFake.ObtenerTodosLLamado);
            Assert.AreEqual(3, result.Content.Count());    //aserto que la lista tenga 3 items
            Assert.AreEqual(1, result.Content.First().Id); // chequeo que el primer item
            Assert.AreEqual("Prop1", result.Content.First().Nombre);
            Assert.AreEqual("Ape1", result.Content.First().Apellido);
            //si se desea comprobar un usuario dentro del listado en este caso fue el primero pero si quiero saber si el segundo o x propietario sus datos son
            // nombre=x,apellido=x,y el id se puede
        }
コード例 #13
0
        public void Actualizar_Propietario_Cuando_El_Id_No_Es_Valido_Devuelve_BadRequest()
        {
            //Arrange
            int[] ids        = { -1, 0 };
            var   repo       = new RepositorioFake();
            var   controller = new PropietariosController(repo);

            //Act
            foreach (var id in ids)
            {
                var result = controller.Put(id, new Propietario()) as BadRequestErrorMessageResult;

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual("El id no es válido.", result.Message);
                //Como el id no es valido no llamamos a ninguno delos dos metodos del repo
                Assert.AreEqual(false, repo.ObtenerPorIdLlamado);
                Assert.AreEqual(false, repo.ActualizarLlamado);
            }
        }
コード例 #14
0
        public void Actualizar_Propietario_Cuando_El_Modelo_No_Es_Valido_Devuelve_BadRequest()
        {
            //Arrange
            var prop = new Propietario {
                Id = 1, Nombre = "", Apellido = "Ape1"
            };
            var repo       = new RepositorioFake();
            var controller = new PropietariosController(repo);

            controller.ModelState.AddModelError("Nombre", "El nombre es requerido");

            //Act
            var result = controller.Put(prop.Id, prop) as InvalidModelStateResult;

            //Assert
            Assert.IsNotNull(result);
            //Como el modelo no es valido no se llamo a ninguno de los dos metodos del repositorio
            Assert.AreEqual(false, repo.ObtenerPorIdLlamado);
            Assert.AreEqual(false, repo.ActualizarLlamado);
        }
コード例 #15
0
        public void Puedo_Actualizar_Propietario()
        {
            //Arrange
            var prop = new Propietario {
                Id = 1, Nombre = "Modificado", Apellido = "Modificado"
            };
            var repo       = new RepositorioFake();
            var controller = new PropietariosController(repo);

            //Act
            var result = controller.Put(prop.Id, prop);

            //Assert
            Assert.IsInstanceOfType(result, typeof(OkResult));
            //Como esta todo Ok se llamo a los metodos del repo.
            Assert.AreEqual(true, repo.ObtenerPorIdLlamado);
            Assert.AreEqual(true, repo.ActualizarLlamado);
            Assert.IsNotNull(repo.Propietario);
            Assert.AreEqual(1, repo.Propietario.Id);
            Assert.AreEqual("Modificado", repo.Propietario.Nombre);
            Assert.AreEqual("Modificado", repo.Propietario.Apellido);
        }
コード例 #16
0
 public PropietariosControllerTest()
 {
     controller = new PropietariosController(helper.DataContext, helper.Config);
 }