public async Task FiltrarOrdenaTituloDescendente()
        {
            var nombreBD = CrearDataPrueba();
            var mapper   = ConfigurarAutoMapper();
            var contexto = ConstruirContext(nombreBD);

            var controller = new PeliculasController(contexto, mapper, null, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filtroDTO = new FiltroPeliculasDTO()
            {
                CampoOrdenar    = "titulo",
                OrdenAscendente = false
            };

            var respuesta = await controller.filtrar(filtroDTO);

            var peliculas = respuesta.Value;

            var contexto2   = ConstruirContext(nombreBD);
            var peliculasDB = contexto2.Peliculas.OrderByDescending(x => x.Titulo).ToList();

            Assert.AreEqual(peliculasDB.Count, peliculas.Count);

            for (int i = 0; i < peliculasDB.Count; i++)
            {
                var peliculaDelControlador = peliculas[i];
                var peliculaDB             = peliculasDB[i];

                Assert.AreEqual(peliculaDB.Id, peliculaDelControlador.Id);
            }
        }
        public async Task FiltrarPorCampoIncorrectoDevuelvePeliculas()
        {
            var nombreBD = CrearDataPrueba();
            var mapper   = ConfigurarAutoMapper();
            var contexto = ConstruirContext(nombreBD);

            var mock = new Mock <ILogger <PeliculasController> >();

            var controller = new PeliculasController(contexto, mapper, null, mock.Object);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filtroDTO = new FiltroPeliculasDTO()
            {
                CampoOrdenar    = "abc",
                OrdenAscendente = true
            };

            var respuesta = await controller.filtrar(filtroDTO);

            var peliculas = respuesta.Value;

            var contexto2   = ConstruirContext(nombreBD);
            var peliculasDB = contexto2.Peliculas.ToList();

            Assert.AreEqual(peliculasDB.Count, peliculas.Count);
            Assert.AreEqual(1, mock.Invocations.Count);
        }
        public async Task FiltrarEnCines()
        {
            var nombreBD = CrearDataPrueba();
            var mapper   = ConfigurarAutoMapper();
            var contexto = ConstruirContext(nombreBD);

            var controller = new PeliculasController(contexto, mapper, null, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filtroDTO = new FiltroPeliculasDTO()
            {
                EnCines = true
            };


            var respuesta = await controller.filtrar(filtroDTO);

            var peliculas = respuesta.Value;

            Assert.AreEqual(1, peliculas.Count);
            Assert.AreEqual("Pelicula En Cines", peliculas[0].Titulo);
        }
        public async Task FiltrarPorTitulo()
        {
            var nombreBD = CrearDataPrueba();
            var mapper   = ConfigurarAutoMapper();
            var contexto = ConstruirContext(nombreBD);

            var controller     = new PeliculasController(contexto, mapper, null, null);
            var tituloPelicula = "Pelicula 1";

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filtroDTO = new FiltroPeliculasDTO()
            {
                Titulo = tituloPelicula,
                CantidadRegistrosPorPagina = 10
            };

            var respuesta = await controller.filtrar(filtroDTO);

            var peliculas = respuesta.Value;

            Assert.AreEqual(1, peliculas.Count);
            Assert.AreEqual(tituloPelicula, peliculas[0].Titulo);
        }
        public async Task FiltrarPorGenero()
        {
            var nombreBD = CrearDataPrueba();
            var mapper   = ConfigurarAutoMapper();
            var contexto = ConstruirContext(nombreBD);

            var controller = new PeliculasController(contexto, mapper, null, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var generoId = contexto.Generos.Select(x => x.Id).First();

            var filtroDTO = new FiltroPeliculasDTO()
            {
                GeneroID = generoId
            };

            var respuesta = await controller.filtrar(filtroDTO);

            var peliculas = respuesta.Value;

            Assert.AreEqual(1, peliculas.Count);
            Assert.AreEqual("Pelicula con genero", peliculas[0].Titulo);
        }