public ResponseMessage <ObtenerDetallePlatoResponse> GetDetallePlato(int idPlato) { ObtenerDetallePlatoRequest request = new ObtenerDetallePlatoRequest() { idPlato = idPlato }; var data = _IPlatoBiz.ObtenerDetallePlato(request); return(ReturnData <ObtenerDetallePlatoResponse> .ReturnResponse(data)); }
public ObtenerDetallePlatoResponse ObtenerDetallePlato(ObtenerDetallePlatoRequest request) { using (var context = GetContext()) { var plato = context.Platos .Where(x => x.Id == request.idPlato) .Select(x => new { x.Id, x.Nombres, x.Descripcion, x.Imagen, x.Precio, x.Etiqueta, comentarios = context.Comentarios .Join(context.Usuarios, comment => comment.IdUsuario, user => user.Id, (comment, user) => new { comment.Id, comment.IdPlato, comment.Puntaje, comentario = comment.Comentario1, comment.Fecha, usuario = new { IdUsuario = user.Id, user.NombreCompleto, user.Correo } }) .Where(d => d.IdPlato == request.idPlato).ToList() }).SingleOrDefault(); if (plato != null) { var response = new ObtenerDetallePlatoResponse() { detallePlato = { plato = { id = plato.Id, nombre = plato.Nombres, descripcion = plato.Descripcion, imagen = plato.Imagen, precio = plato.Precio, comentarios = plato.comentarios.Select(x => new ComentarioModel { idComentario = x.Id, idPlato = x.IdPlato, usuario = new UsuarioModel { id = x.usuario.IdUsuario, correo = x.usuario.Correo, nombreCompleto = x.usuario.NombreCompleto }, comentario = x.comentario, fecha = x.Fecha, puntaje = x.Puntaje }).ToList() } } }; return(response); } return(null); } }
public void ObtenerDetallePlatoTest() { var request = new ObtenerDetallePlatoRequest() { idPlato = 1 }; var data = new List <Plato>() { new Plato { Id = 1, Nombres = "Anticucho", Descripcion = "anticuchos de corazón", Imagen = "imagen", Precio = 50, Etiqueta = "nuevo", IdTipo = 3, Destacado = false, Favoritos = null, TipoPlato = null } }.AsQueryable(); var Comentarios = new List <Comentario> { new Comentario { Id = 1, Fecha = DateTime.Now, Comentario1 = "good dish!", IdPlato = 1, Puntaje = 5, IdUsuario = 6 }, new Comentario { Id = 2, Fecha = DateTime.Now, Comentario1 = "muy rico!", IdPlato = 1, Puntaje = 4, IdUsuario = 8 } }.AsQueryable(); var usuario = new List <Usuario> { new Usuario { Id = 6, NombreCompleto = "Marco Paredes", Correo = "*****@*****.**" }, new Usuario { Id = 8, NombreCompleto = "Micaela", Correo = "*****@*****.**" } }.AsQueryable(); var mockSet = new Mock <DbSet <Plato> >(); mockSet.As <IQueryable <Plato> >().Setup(x => x.Provider).Returns(data.Provider); mockSet.As <IQueryable <Plato> >().Setup(x => x.Expression).Returns(data.Expression); mockContext.Setup(x => x.Platos).Returns(mockSet.Object); var mockSetComentarios = new Mock <DbSet <Comentario> >(); mockSetComentarios.As <IQueryable <Comentario> >().Setup(x => x.Provider).Returns(Comentarios.Provider); mockSetComentarios.As <IQueryable <Comentario> >().Setup(x => x.Expression).Returns(Comentarios.Expression); mockContext.SetupGet(x => x.Comentarios).Returns(mockSetComentarios.Object); var mockSetUsuario = new Mock <DbSet <Usuario> >(); mockSetUsuario.As <IQueryable <Comentario> >().Setup(x => x.Provider).Returns(usuario.Provider); mockSetUsuario.As <IQueryable <Comentario> >().Setup(x => x.Expression).Returns(usuario.Expression); mockContext.SetupGet(x => x.Usuarios).Returns(mockSetUsuario.Object); var response = _mockBiz.ObtenerDetallePlato(request); Assert.IsNotNull(response); Assert.AreEqual(1, response.detallePlato.plato.id); Assert.AreEqual(2, response.detallePlato.plato.comentarios.Count); mockContext.VerifyAll(); }