frlp-utn-ingsoft / filmster

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

Test de modelo #43

Open fedeglggg opened 5 years ago

fedeglggg commented 5 years ago

Hola, necesitaría el código para un test que pruebe que el modelo de películas permite obtener todas las películas. Saludos

RodrigoJacznik commented 5 years ago

Hola Fede. Pasame un poco mas de datos, que tipo de test es? Pudiste avanzar algo?

Saludos.

fedeglggg commented 5 years ago

No entiendo bien el enunciado, al principio pensé en algo como que el modelo iguale la tabla de la DB pero no estoy seguro ni sabría cómo se hace tampoco. Si pudiera ver el código sabría mejor donde ubicarlo

RodrigoJacznik commented 5 years ago

Lo que tenes que probar es el modelo. Esto no involucra la interfaz de usuario ni la API. Si el test lo transcribo en pasos seria:

  1. Crear película mediante modelo
  2. Obtener todas las películas
  3. Controlar que la película creada en 1 este entre las películas que se obtienen en 2

Cuando digo modelo me refiero al archivo server/src/models/movie.js. Fíjate algún test que use ese archivo.

Se que prometí pasar el código pero espero hacerlo en ultimas instancias. Saludos.

fedeglggg commented 5 years ago

Traté con el siguiente codigo:

test('Modelo que permite obtener todas las películas', async () => {
    const movieData = {
        title: 'Jurassic Park',
        description: 'During a preview tour, a theme park suffers a major power breakdown that allows its cloned dinosaur exhibits to run amok.',
        year: 1993,
        runtime: 127,
        country: 'United States',
        language: 'English',
        genres: ['Adventure', 'Sci-Fi', 'Thriller'],
        directors: ['Steven Spielberg'],
        writers: ['Michael Crichton', 'Michael Crichton', 'David Koepp']
    };

    const movie = await MovieModels.create(movieData)
    const recivedMovies = await MovieModels.getAll()
    expect(recivedMovies).toContainEqual(movie)
});

Pero me tira el siguiente error:

toContainEqual1

Debería usar algo distinto a toContainEqual ? parece muy estricto en los atributos

RodrigoJacznik commented 5 years ago

Si, usa toBe en cada propiedad del modelo

fedeglggg commented 5 years ago

No sabría como usar toBe para que recorra el array y encuentre la pelicula, lo plantie distinto, estaría bien así?


test('Modelo que permite obtener todas las películas', async () => {
    const movieData = {
        title: 'Jurassic Park',
        description: 'During a preview tour, a theme park suffers a major power breakdown that allows its cloned dinosaur exhibits to run amok.',
        year: 1993,
        runtime: 127,
        country: 'United States',
        language: 'English',
        genres: ['Adventure', 'Sci-Fi', 'Thriller'],
        directors: ['Steven Spielberg'],
        writers: ['Michael Crichton', 'Michael Crichton', 'David Koepp']
    };

    const movie = await MovieModels.create(movieData)
    const recivedMovies = await MovieModels.getAll()

    expect(recivedMovies).toEqual(
        expect.arrayContaining([
            expect.objectContaining({
                title: 'Jurassic Park',
                description: 'During a preview tour, a theme park suffers a major power breakdown that allows its cloned dinosaur exhibits to run amok.',
                year: 1993,
                runtime: 127,
                country: 'United States',
                language: 'English',
                genres: ['Adventure', 'Sci-Fi', 'Thriller'],
                directors: ['Steven Spielberg'],
                writers: ['Michael Crichton', 'Michael Crichton', 'David Koepp']
            })
        ])
    )
});

El test finaliza sin errores:

passTest3

RodrigoJacznik commented 5 years ago

No, deberías checkear todas las propiedades de las películas. Algo asi:

    expect(recivedMovies.title).toEqual(movieData.title)
    expect(recivedMovies.description).toEqual(movieDate.description)

Así con todas las propiedades.

No pongas el test completo :police_car: :policeman:. Cualquier cosa escribie a jacznik.rodrigo@gmail.com