public ResponseMessage <ObtenerDetallePlatoResponse> GetDetallePlato(int idPlato)
        {
            ObtenerDetallePlatoRequest request = new ObtenerDetallePlatoRequest()
            {
                idPlato = idPlato
            };
            var data = _IPlatoBiz.ObtenerDetallePlato(request);

            return(ReturnData <ObtenerDetallePlatoResponse> .ReturnResponse(data));
        }
示例#2
0
        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();
        }