public void TestPromedioFormulario() //Comprueba que el promedio retornado no es nulo
        {
            ResultadosFormularioController controller = new ResultadosFormularioController();
            String resultado = controller.getPromedio("00000001", "CI0128", 1, 2, 2019, DateTime.Parse("31/10/2019"), DateTime.Parse("02/11/2019"), "00000001", "00000001") as String; //Metodo en el controlador y sus respectivos parametros

            Assert.IsNotNull(resultado);                                                                                                                                               //Comprobacion de que no es null
        }
        public void TestTituloJustificacion()
        {
            // Se crea el mock de la base de datos
            var mockDb = new Mock <DataIntegradorEntities>();

            // Se instancia el controlador y se le pasa el mock
            ResultadosFormularioController controller = new ResultadosFormularioController(mockDb.Object);

            // Se crea una lista de titulos de justificaciones dummys
            var TitulosDummy = new List <Pregunta_con_opciones>
            {
                new Pregunta_con_opciones {
                    Codigo = "01", TituloCampoObservacion = "Justificacion 1"
                },
                new Pregunta_con_opciones {
                    Codigo = "02", TituloCampoObservacion = "Justificacion 2"
                },
                new Pregunta_con_opciones {
                    Codigo = "03", TituloCampoObservacion = "Justificacion 3"
                }
            }.AsQueryable();

            // Se hace el mock de la tabla Pregunta_con_opciones
            var mockPreguntasOpciones = new Mock <DbSet <Pregunta_con_opciones> >();

            // Se "settean" las propiedades del mock
            this.SetProperties(ref mockPreguntasOpciones, ref TitulosDummy);

            //Se hace setup del mock de la base de datos
            mockDb.Setup(x => x.Pregunta_con_opciones).Returns(mockPreguntasOpciones.Object);

            //Se hace el llamado al controler

            var listaTitulosDummy      = TitulosDummy.ToList();
            var listaTitulosController = new List <string>();

            for (var i = 0; i < listaTitulosDummy.Count(); ++i)
            {
                listaTitulosController.Add(controller.getTituloJustificacion(listaTitulosDummy[i].Codigo));
            }

            //Se verifica si la cantidad de titulos obtenidos es la misma
            bool resultado = listaTitulosDummy.Count() == listaTitulosController.Count();

            int indice = 0;

            //Mientras los titulos sean los mismos y no se acabe la lista
            while (resultado && indice < listaTitulosDummy.Count())
            {
                //Compara cada titulo de cada justificación
                resultado = (listaTitulosDummy[indice].TituloCampoObservacion).Equals(listaTitulosController[indice]);

                ++indice;
            }

            //Assert
            Assert.IsTrue(resultado);
        }
        public void TestSeccionesFormulario()
        {
            // Arrange
            ResultadosFormularioController controller = new ResultadosFormularioController();
            //Act
            IEnumerable <SelectListItem> result = controller.ObtenerSeccionesDropDown("00000001");

            // Assert
            Assert.IsNotNull(result);
        }
        public void TestJustificacionNotNULL()
        {
            // Arrange
            ResultadosFormularioController controller = new ResultadosFormularioController();
            // Act
            String result = controller.getJustificacionPregunta("00000001", "CI0128", 1, 2, 2019, DateTime.Parse("31/10/2019"), DateTime.Parse("02/11/2019"), "00000001", "00000001");

            // Assert
            Assert.IsNotNull(result);
        }
        public void TestDesviacionFormulario()
        {
            // Arrange
            ResultadosFormularioController controlador = new ResultadosFormularioController();
            // Act
            String resultado = controlador.obtenerDesviacionEstandar("00000001", "CI0128", 1, 2, 2019, DateTime.Parse("31/10/2019"), DateTime.Parse("02/11/2019"), "00000001", "00000001") as String; //Metodo en el controlador y sus respectivos parametros

            // Assert
            Assert.IsNotNull(resultado); //Comprobacion de que no es null
        }
        public void TestOpcionesSeleccionadasPreguntaSeleccion()
        {
            // Arrange
            ResultadosFormularioController controller = new ResultadosFormularioController();
            //Act
            string result = controller.ObtenerOpcionesSeleccionadasPreguntasSeleccion("00000001", "CI0128", 1, 2, 2019, DateTime.Parse("31/10/2019"), DateTime.Parse("02/11/2019"), "00000001", "00000001", 3);

            // Assert
            Assert.IsNotNull(result);
        }
        public void TestJustificacionParametrosInvalidos()
        {
            // Arrange
            ResultadosFormularioController controller = new ResultadosFormularioController();

            // Act
            string justificacionesJson = controller.getJustificacionPregunta("0A500W01", "CI0128", 1, 2, 2019, DateTime.Parse("01/03/2019"), DateTime.Parse("02/03/2019"), null, "00000001");
            var    justificaciones     = JsonConvert.DeserializeObject <List <SelectListItem> >(justificacionesJson);

            // Assert
            Assert.IsTrue(justificaciones.Count() == 0);
        }
        //Este test tiene como propósito corroborar que las respuestas de texto abierto que retorna el controlador se serializan correctamente.
        public void TestObtenerRespuestasTextoAbierto()
        {
            //Arrange

            //Se crea el mock de la base de datos
            var mockDb = new Mock <DataIntegradorEntities>();

            //Se instancia el controlador y se le pasa como parámetro el mock
            ResultadosFormularioController controller = new ResultadosFormularioController(mockDb.Object);

            //Se crea una lista de respuestas como dummy data

            var respuestasFormularioDummy = new List <Respuestas_a_formulario>
            {
                new Respuestas_a_formulario()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), Finalizado = true
                },
                new Respuestas_a_formulario()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), Finalizado = true
                },
                new Respuestas_a_formulario()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), Finalizado = true
                },
                new Respuestas_a_formulario()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), Finalizado = true
                },
                new Respuestas_a_formulario()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), Finalizado = true
                }
            }.AsQueryable();

            var respuestasDummy = new List <Responde_respuesta_libre>
            {
                new Responde_respuesta_libre()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), PCodigo = "01", SCodigo = "01", Observacion = "Respuesta1"
                },
                new Responde_respuesta_libre()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), PCodigo = "01", SCodigo = "01", Observacion = "Respuesta1"
                },
                new Responde_respuesta_libre()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), PCodigo = "01", SCodigo = "01", Observacion = "Respuesta1"
                },
                new Responde_respuesta_libre()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), PCodigo = "01", SCodigo = "01", Observacion = "Respuesta1"
                },
                new Responde_respuesta_libre()
                {
                    FCodigo = "01", Correo = "*****@*****.**", CSigla = "CI0128", GNumero = 1, GSemestre = 2, GAnno = 2019, Fecha = DateTime.Parse("01/11/2019"), PCodigo = "01", SCodigo = "01", Observacion = "Respuesta1"
                }
            }.AsQueryable();

            //Se hace mock del modelo de la tabla
            var mockDbSetRespuestasFormulario = new Mock <DbSet <Respuestas_a_formulario> >();
            var mockDbSet = new Mock <DbSet <Responde_respuesta_libre> >();

            this.SetProperties(ref mockDbSetRespuestasFormulario, ref respuestasFormularioDummy);
            this.SetProperties(ref mockDbSet, ref respuestasDummy);

            //Se hace setup del mock de la base de datos
            mockDb.Setup(x => x.Respuestas_a_formulario).Returns(mockDbSetRespuestasFormulario.Object);
            mockDb.Setup(x => x.Responde_respuesta_libre).Returns(mockDbSet.Object);

            //Act

            //Se convierte el querable de respuestas dummy a una lista para compararla más fácilmente con lo que retorna el controller
            var listaRespuestasDummy = respuestasDummy.ToList();

            //Se hace el llamado al controller
            string respuestasJson = controller.ObtenerRespuestasTextoAbierto("01", "CI0128", 1, 2, 2019, DateTime.Parse("01/11/2019"), DateTime.Parse("02/11/2019"), "01", "01");

            //Se deserializa el JSON que retorna el controller
            var respuestasController = JsonConvert.DeserializeObject <List <SelectListItem> >(respuestasJson);

            //Se inicia una comparación para verificar si las respuestas de texto abierto retornadas por el controller son iguales a las del mock.

            //Se verifica si la cantidad de respuestas distintas es la misma
            bool resultado = respuestasDummy.Count() == respuestasController.Count();
            int  indice    = 0;

            //Mientras las respuestas sean las mismas y no se acabe la lista
            while (resultado && indice < respuestasDummy.Count())
            {
                //Compara cada respuesta
                resultado = listaRespuestasDummy[indice].Observacion.Equals(respuestasController[indice].Value);
                ++indice;
            }

            //Assert
            Assert.IsTrue(resultado);
        }
        public void TestGetTipoPregunta()
        {
            //Arrange

            //Se crea el mock de la base de datos
            var mockDb = new Mock <DataIntegradorEntities>();

            //Se instancia el controlador y se le pasa como parámetro el mock
            ResultadosFormularioController controller = new ResultadosFormularioController(mockDb.Object);

            //Se crea una lista de preguntas como dummy de la tabla Pregunta
            var preguntasDummy = new List <Pregunta>
            {
                new Pregunta {
                    Codigo = "01", Enunciado = "Primera pregunta", Tipo = "M"
                },
                new Pregunta {
                    Codigo = "02", Enunciado = "Segunda pregunta", Tipo = "L"
                },
                new Pregunta {
                    Codigo = "03", Enunciado = "Tercera pregunta", Tipo = "U"
                },
                new Pregunta {
                    Codigo = "04", Enunciado = "Cuarta pregunta", Tipo = "E"
                },
                new Pregunta {
                    Codigo = "05", Enunciado = "Quinta pregunta", Tipo = "S"
                }
            }.AsQueryable();

            //Se hace mock de la tabla Pregunta
            var mockPreguntas = new Mock <DbSet <Pregunta> >();

            //Se settean las propiedades del mock
            this.SetProperties(ref mockPreguntas, ref preguntasDummy);

            //Se hace setup del mock de la base de datos
            mockDb.Setup(x => x.Pregunta).Returns(mockPreguntas.Object);

            //Act

            //Se hace el llamado al controler

            var listaPreguntasDummy  = preguntasDummy.ToList();
            var listaTiposController = new List <string>();

            for (var i = 0; i < listaPreguntasDummy.Count(); ++i)
            {
                listaTiposController.Add(controller.GetTipoPregunta(listaPreguntasDummy[i].Codigo));
            }

            //Se verifica si la cantidad de preguntas es la misma
            bool resultado = listaPreguntasDummy.Count() == listaTiposController.Count();
            int  indice    = 0;

            //Mientras las respuestas sean las mismas y no se acabe la lista
            while (resultado && indice < listaPreguntasDummy.Count())
            {
                //Compara cada tipo de pregunta
                resultado = this.SwitchTipo(listaPreguntasDummy[indice].Tipo).Equals(listaTiposController[indice]);

                ++indice;
            }

            //Assert
            Assert.IsTrue(resultado);
        }
        public void TestObtenerPreguntas()
        {
            //Arrange

            //Se crea el mock de la base de datos
            var mockDb = new Mock <DataIntegradorEntities>();

            //Se instancia el controlador y se le pasa como parámetro el mock
            ResultadosFormularioController controller = new ResultadosFormularioController(mockDb.Object);

            //Se crea una lista de preguntas como dummy
            var listaPreguntasDummy = new List <Preguntas>
            {
                new Preguntas {
                    codigoPregunta = "01", codigoSeccion = "01", textoPregunta = "Primera pregunta", tipoPregunta = "U"
                },
                new Preguntas {
                    codigoPregunta = "02", codigoSeccion = "01", textoPregunta = "Segunda pregunta", tipoPregunta = "M"
                },
                new Preguntas {
                    codigoPregunta = "03", codigoSeccion = "01", textoPregunta = "Tercera pregunta", tipoPregunta = "L"
                },
                new Preguntas {
                    codigoPregunta = "04", codigoSeccion = "01", textoPregunta = "Cuarta pregunta", tipoPregunta = "S"
                },
                new Preguntas {
                    codigoPregunta = "05", codigoSeccion = "01", textoPregunta = "Quinta pregunta", tipoPregunta = "E"
                }
            };

            //Se crea una lista como dummy de la tabla Formulario
            var formulariosDummy = new List <Formulario> {
                new Formulario {
                    Codigo = "01", Nombre = "Formulario de prueba"
                }
            }.AsQueryable();

            //Se crea una como dummy de la tabla Seccion
            var seccionesDummy = new List <Seccion> {
                new Seccion {
                    Codigo = "01", Nombre = "Sección de prueba"
                }
            }.AsQueryable();

            //Se crea una lista a partir del dummy creado al principio como dummy de la tabla Pregunta
            var preguntasDummy = new List <Pregunta>
            {
                new Pregunta {
                    Codigo = listaPreguntasDummy[0].codigoPregunta, Enunciado = listaPreguntasDummy[0].textoPregunta, Tipo = listaPreguntasDummy[0].tipoPregunta
                },
                new Pregunta {
                    Codigo = listaPreguntasDummy[1].codigoPregunta, Enunciado = listaPreguntasDummy[1].textoPregunta, Tipo = listaPreguntasDummy[1].tipoPregunta
                },
                new Pregunta {
                    Codigo = listaPreguntasDummy[2].codigoPregunta, Enunciado = listaPreguntasDummy[2].textoPregunta, Tipo = listaPreguntasDummy[2].tipoPregunta
                },
                new Pregunta {
                    Codigo = listaPreguntasDummy[3].codigoPregunta, Enunciado = listaPreguntasDummy[3].textoPregunta, Tipo = listaPreguntasDummy[3].tipoPregunta
                },
                new Pregunta {
                    Codigo = listaPreguntasDummy[4].codigoPregunta, Enunciado = listaPreguntasDummy[4].textoPregunta, Tipo = listaPreguntasDummy[4].tipoPregunta
                }
            }.AsQueryable();

            //Se crea una lista como dummy de la tabla Formulario_tiene_seccion
            var formularioTieneSeccionDummy = new List <Formulario_tiene_seccion> {
                new Formulario_tiene_seccion {
                    FCodigo = "01", SCodigo = "01", Orden = 0
                }
            }.AsQueryable();

            //Se crea una lista como dummy de la tabla Seccion_tiene_pregunta
            var seccionTienePreguntaDummy = new List <Seccion_tiene_pregunta>
            {
                new Seccion_tiene_pregunta {
                    SCodigo = listaPreguntasDummy[0].codigoSeccion, PCodigo = listaPreguntasDummy[0].codigoPregunta, Orden = 0
                },
                new Seccion_tiene_pregunta {
                    SCodigo = listaPreguntasDummy[1].codigoSeccion, PCodigo = listaPreguntasDummy[1].codigoPregunta, Orden = 1
                },
                new Seccion_tiene_pregunta {
                    SCodigo = listaPreguntasDummy[2].codigoSeccion, PCodigo = listaPreguntasDummy[2].codigoPregunta, Orden = 2
                },
                new Seccion_tiene_pregunta {
                    SCodigo = listaPreguntasDummy[3].codigoSeccion, PCodigo = listaPreguntasDummy[3].codigoPregunta, Orden = 3
                },
                new Seccion_tiene_pregunta {
                    SCodigo = listaPreguntasDummy[4].codigoSeccion, PCodigo = listaPreguntasDummy[4].codigoPregunta, Orden = 4
                }
            }.AsQueryable();

            //Se hace mock de los modelos de las tablas
            var mockFormularios            = new Mock <DbSet <Formulario> >();
            var mockSecciones              = new Mock <DbSet <Seccion> >();
            var mockPreguntas              = new Mock <DbSet <Pregunta> >();
            var mockFormularioTieneSeccion = new Mock <DbSet <Formulario_tiene_seccion> >();
            var mockSeccionTienePregunta   = new Mock <DbSet <Seccion_tiene_pregunta> >();

            //Se settean las propiedades del mock
            this.SetProperties(ref mockFormularios, ref formulariosDummy);
            this.SetProperties(ref mockSecciones, ref seccionesDummy);
            this.SetProperties(ref mockPreguntas, ref preguntasDummy);
            this.SetProperties(ref mockFormularioTieneSeccion, ref formularioTieneSeccionDummy);
            this.SetProperties(ref mockSeccionTienePregunta, ref seccionTienePreguntaDummy);

            //Se hace setup del mock de la base de datos
            mockDb.Setup(x => x.Formulario).Returns(mockFormularios.Object);
            mockDb.Setup(x => x.Seccion).Returns(mockSecciones.Object);
            mockDb.Setup(x => x.Pregunta).Returns(mockPreguntas.Object);
            mockDb.Setup(x => x.Formulario_tiene_seccion).Returns(mockFormularioTieneSeccion.Object);
            mockDb.Setup(x => x.Seccion_tiene_pregunta).Returns(mockSeccionTienePregunta.Object);

            //Act

            //Se hace el llamado al controller
            var listaPreguntasController = controller.ObtenerPreguntas("01");

            //Se inicia una comparación para verificar si la lista de preguntas retornada por el controller es igual al dummy

            //Se verifica si la cantidad de preguntas es la misma
            bool resultado = listaPreguntasDummy.Count() == listaPreguntasController.Count();
            int  indice    = 0;

            //Mientras las respuestas sean las mismas y no se acabe la lista
            while (resultado && indice < listaPreguntasDummy.Count())
            {
                //Compara cada pregunta
                resultado = listaPreguntasDummy[indice].codigoPregunta.Equals(listaPreguntasController[indice].codigoPregunta) &&
                            listaPreguntasDummy[indice].codigoSeccion.Equals(listaPreguntasController[indice].codigoSeccion) &&
                            listaPreguntasDummy[indice].textoPregunta.Equals(listaPreguntasController[indice].textoPregunta) &&
                            this.SwitchTipo(listaPreguntasDummy[indice].tipoPregunta).Equals(listaPreguntasController[indice].tipoPregunta);

                ++indice;
            }

            //Assert
            Assert.IsTrue(resultado);
        }