Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test de modelo #43

Open
fedeglggg opened this issue May 17, 2019 · 7 comments
Open

Test de modelo #43

fedeglggg opened this issue May 17, 2019 · 7 comments
Labels
question Further information is requested

Comments

@fedeglggg
Copy link

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
Copy link
Contributor

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

Saludos.

@RodrigoJacznik RodrigoJacznik added the question Further information is requested label May 17, 2019
@fedeglggg
Copy link
Author

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
Copy link
Contributor

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
Copy link
Author

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
Copy link
Contributor

Si, usa toBe en cada propiedad del modelo

@fedeglggg
Copy link
Author

fedeglggg commented May 18, 2019

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
Copy link
Contributor

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 🚓 👮‍♂️. Cualquier cosa escribie a [email protected]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants