frlp-utn-ingsoft / filmster

Aplicación utilizada en la cursada 2019 de Ingenieria de Software. UTN-FRLP
0 stars 11 forks source link

Dudas sobre Test #36

Open juanpablomoscoloni opened 5 years ago

juanpablomoscoloni commented 5 years ago

Hola, como andan? Les traigo una consulta! Me estuve rompiendo un poco la cabeza y buscando pero la verdad no consigo bien saber como encarar el test, nose si tienen algún ejemplo parecido o algo por el estilo, como para orientarme ya que el que pusieron me resulta muy distinto a lo que tengo que hacer. Les paso mi enunciado. Hacer un test que pruebe que, luego de crear una película por API, exista la nueva película en la base de datos. Considero que es un test de integración. Más que nada me gustaria saber como hacer para detectar que una pelicula fue creada, y luego como matchear la info de esa pelicula con la de la base de datos. Un saludo!

RodrigoJacznik commented 5 years ago

Hola, los pasos para este test serian:

  1. Crear una película mediante la API. Para este punto tenes que hacer un fetch, podes usar el código similar al que hicieron en el create del archivo client/src/api/movie.mjs
  2. Obtener todas las películas y controlar que la que te retorne fue la que creaste, podes usar el código similar al que hicieron en el getAll del archivo client/src/api/movie.mjs
  3. Para controlar que los datos sean similares podes usar toBe o toMatchObject. Por ejemplo: expect(movie.title).toBe(receivedMovie.title), donde receivedMovie es la película del punto 2.

Cualquier cosa avísame y te doy otra mano. Saludos

pessotanoariel commented 5 years ago

Como están? Me toco el mismo punto. Siguiendo esos pasos, seria algo así?

test('Despues de crear una pelicula, exista esta en la BD', async () => {

    const movieData = {
        title: 'Back to the Future',
        description: 'Marty McFly, a 17-year-old high school student, is accidentally sent thirty years into the past in a time-traveling DeLorean invented by his close friend, the maverick scientist Doc Brown.',
        year: 1985,
        runtime: 116,
        country: 'United States',
        language: 'English',
        genres: ['Adventure', 'Comedy', 'Science Fiction'],
        directors: ['Robert Zemeckis'],
        writers: ['Robert Zemeckis', 'Bob Gale']
    };

    function create(movieData){
        return fetch(`/api/v1/movies`, {
        method: 'POST', 
        body: JSON.stringify(movieData), 
        headers:{
          'Content-Type': 'application/json'
        }
      })

    }

    function getAll() {
        return fetch(`/api/v1/movies`)
            .then(result => result.json())
    }

    const movie = await create(movieData)
    const recivedMovie = await getAll(movie);

    expect(movie.title).toBe(recivedMovie.title);

})

Necesito una mano porque estoy medio perdido. Saludos!

RodrigoJacznik commented 5 years ago

Te paso el test? Me parece que la URL que usas en el fetch esta incompleta, ademas te faltaría controlar el resto de los campos de la película.

Un comentario aparte, no deberías copiar toda la función create y getAll. Podes usar los fetch directamente.

Para la próxima mándame el código por mail a jacznik.rodrigo@gmail.com y lo controlo :policeman:

juanpablomoscoloni commented 5 years ago

Hola rodri, sisi me pasó de todos modos, hablando con los chicos me dijieron que era posible reutilizar esas funciones ya creadas, asi que pensaba hacer una segunda versión un poco mas "optimizada", lo que no sabía es si hacerlo sobre la misma branch o que, porque lo que tengo no es un bug. Tema aparte los test no me andaban, fui a los de integración y habia algunas lineas de las que hicieron que les faltaba ; lo agregue y me anduvieron. Eso por si a alguno le pasa lo mismo. Un saludo!

En 17 de mayo de 2019 1:07:15 Rodrigo Jacznik notifications@github.com escribió:

Te paso el test? Me parece que la URL que usas en el fetch esta incompleta, ademas te faltaría controlar el resto de los campos de la película. Un comentario aparte, no deberías copiar toda la función create y getAll. Podes usar los fetch directamente. Para la próxima mándame el código por mail a jacznik.rodrigo@gmail.com y lo controlo 👮 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

Enviado con AquaMail para Android https://www.mobisystems.com/aqua-mail

RodrigoJacznik commented 5 years ago

Genial. Si no borraste el branch en el que hiciste el test podes volver a trabajar sobre eso. Saludos