vidly-api-node
vidly-api-node copied to clipboard
npm test fail
Unfortunately I can't finish the course "Mastering React" because I can't get "npm test" to run in the "Section 8 Calling Backend Services". It always aborts with the error message. (see below)
- I installed user dataset manually
- I installed bcrypt manually
but it didn't help.
at Object.close (tests/integration/returns.test.js:55:18)
● /api/returns › should return 200 if we have a valid request
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/returns › should return 200 if we have a valid request
TypeError: app.address is not a function
16 | const exec = () => {
17 | return request(server)
> 18 | .post('/api/returns')
| ^
19 | .set('x-auth-token', token)
20 | .send({ customerId, movieId });
21 | };
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/returns.test.js:18:8)
at Object.exec (tests/integration/returns.test.js:102:23)
● /api/returns › should return 200 if we have a valid request
TypeError: server.close is not a function
53 |
54 | afterEach(async () => {
> 55 | await server.close();
| ^
56 | await Rental.remove({});
57 | await Movie.remove({});
58 | });
at Object.close (tests/integration/returns.test.js:55:18)
● /api/returns › should set the returnDate if input is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/returns › should set the returnDate if input is valid
TypeError: app.address is not a function
16 | const exec = () => {
17 | return request(server)
> 18 | .post('/api/returns')
| ^
19 | .set('x-auth-token', token)
20 | .send({ customerId, movieId });
21 | };
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/returns.test.js:18:8)
at Object.exec (tests/integration/returns.test.js:108:23)
● /api/returns › should set the returnDate if input is valid
TypeError: server.close is not a function
53 |
54 | afterEach(async () => {
> 55 | await server.close();
| ^
56 | await Rental.remove({});
57 | await Movie.remove({});
58 | });
at Object.close (tests/integration/returns.test.js:55:18)
● /api/returns › should set the rentalFee if input is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/returns › should set the rentalFee if input is valid
TypeError: Cannot set property 'dateOut' of undefined
114 |
115 | it('should set the rentalFee if input is valid', async () => {
> 116 | rental.dateOut = moment().add(-7, 'days').toDate();
| ^
117 | await rental.save();
118 |
119 | const res = await exec();
at Object.<anonymous> (tests/integration/returns.test.js:116:5)
● /api/returns › should set the rentalFee if input is valid
TypeError: server.close is not a function
53 |
54 | afterEach(async () => {
> 55 | await server.close();
| ^
56 | await Rental.remove({});
57 | await Movie.remove({});
58 | });
at Object.close (tests/integration/returns.test.js:55:18)
● /api/returns › should increase the movie stock if input is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/returns › should increase the movie stock if input is valid
TypeError: app.address is not a function
16 | const exec = () => {
17 | return request(server)
> 18 | .post('/api/returns')
| ^
19 | .set('x-auth-token', token)
20 | .send({ customerId, movieId });
21 | };
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/returns.test.js:18:8)
at Object.exec (tests/integration/returns.test.js:126:23)
● /api/returns › should increase the movie stock if input is valid
TypeError: server.close is not a function
53 |
54 | afterEach(async () => {
> 55 | await server.close();
| ^
56 | await Rental.remove({});
57 | await Movie.remove({});
58 | });
at Object.close (tests/integration/returns.test.js:55:18)
● /api/returns › should return the rental if input is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/returns › should return the rental if input is valid
TypeError: app.address is not a function
16 | const exec = () => {
17 | return request(server)
> 18 | .post('/api/returns')
| ^
19 | .set('x-auth-token', token)
20 | .send({ customerId, movieId });
21 | };
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/returns.test.js:18:8)
at Object.exec (tests/integration/returns.test.js:133:23)
● /api/returns › should return the rental if input is valid
TypeError: server.close is not a function
53 |
54 | afterEach(async () => {
> 55 | await server.close();
| ^
56 | await Rental.remove({});
57 | await Movie.remove({});
58 | });
at Object.close (tests/integration/returns.test.js:55:18)
FAIL tests/integration/genres.test.js (81.21s) /api/genres GET / × should return all genres (5997ms) GET /:id × should return a genre if valid id is passed (5013ms) × should return 404 if invalid id is passed (4ms) × should return 404 if no genre with the given id exists (7ms) POST / × should return 401 if client is not logged in (39ms) × should return 400 if genre is less than 5 characters (11ms) × should return 400 if genre is more than 50 characters (22ms) × should save the genre if it is valid (8ms) × should return the genre if it is valid (10ms) PUT /:id × should return 401 if client is not logged in (5006ms) × should return 400 if genre is less than 5 characters (5004ms) × should return 400 if genre is more than 50 characters (5005ms) × should return 404 if id is invalid (5006ms) × should return 404 if genre with the given id was not found (5009ms) × should update the genre if input is valid (5002ms) × should return the updated genre if it is valid (5003ms) DELETE /:id × should return 401 if client is not logged in (5002ms) × should return 403 if the user is not an admin (5004ms) × should return 404 if id is invalid (5003ms) × should return 404 if no genre with the given id was found (5001ms) × should delete the genre if input is valid (5003ms) × should return the removed genre (5006ms)
● /api/genres › GET / › should return all genres
Cannot find module 'bcrypt' from 'users.js'
However, Jest was able to find:
'../routes/users.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'ts', 'tsx', 'node'].
See https://jestjs.io/docs/en/configuration#modulefileextensions-array-string
However, Jest was able to find:
'startup/routes.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'ts', 'tsx', 'node'].
See https://jestjs.io/docs/en/configuration#modulefileextensions-array-string
However, Jest was able to find:
'../../index.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'ts', 'tsx', 'node'].
See https://jestjs.io/docs/en/configuration#modulefileextensions-array-string
1 | const auth = require("../middleware/auth");
> 2 | const bcrypt = require("bcrypt");
| ^
3 | const _ = require("lodash");
4 | const { User, validate } = require("../models/user");
5 | const express = require("express");
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:230:17)
at Object.require (routes/users.js:2:16)
● /api/genres › GET / › should return all genres
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error:
14 |
15 | describe('GET /', () => {
> 16 | it('should return all genres', async () => {
| ^
17 | const genres = [
18 | { name: 'genre1' },
19 | { name: 'genre2' },
at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
at Suite.it (tests/integration/genres.test.js:16:5)
at Suite.describe (tests/integration/genres.test.js:15:3)
at Object.describe (tests/integration/genres.test.js:8:1)
● /api/genres › GET / › should return all genres
TypeError: Cannot read property 'close' of undefined
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › GET /:id › should return a genre if valid id is passed
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error:
32 |
33 | describe('GET /:id', () => {
> 34 | it('should return a genre if valid id is passed', async () => {
| ^
35 | const genre = new Genre({ name: 'genre1' });
36 | await genre.save();
37 |
at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
at Suite.it (tests/integration/genres.test.js:34:5)
at Suite.describe (tests/integration/genres.test.js:33:3)
at Object.describe (tests/integration/genres.test.js:8:1)
● /api/genres › GET /:id › should return a genre if valid id is passed
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › GET /:id › should return 404 if invalid id is passed
TypeError: app.address is not a function
43 |
44 | it('should return 404 if invalid id is passed', async () => {
> 45 | const res = await request(server).get('/api/genres/1');
| ^
46 |
47 | expect(res.status).toBe(404);
48 | });
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as get] (node_modules/supertest/index.js:25:14)
at Object.get (tests/integration/genres.test.js:45:41)
● /api/genres › GET /:id › should return 404 if invalid id is passed
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › GET /:id › should return 404 if no genre with the given id exists
TypeError: app.address is not a function
50 | it('should return 404 if no genre with the given id exists', async () => {
51 | const id = mongoose.Types.ObjectId();
> 52 | const res = await request(server).get('/api/genres/' + id);
| ^
53 |
54 | expect(res.status).toBe(404);
55 | });
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as get] (node_modules/supertest/index.js:25:14)
at Object.get (tests/integration/genres.test.js:52:41)
● /api/genres › GET /:id › should return 404 if no genre with the given id exists
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › POST / › should return 401 if client is not logged in
TypeError: app.address is not a function
66 | const exec = async () => {
67 | return await request(server)
> 68 | .post('/api/genres')
| ^
69 | .set('x-auth-token', token)
70 | .send({ name });
71 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/genres.test.js:68:10)
at Object.exec (tests/integration/genres.test.js:81:25)
● /api/genres › POST / › should return 401 if client is not logged in
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › POST / › should return 400 if genre is less than 5 characters
TypeError: app.address is not a function
66 | const exec = async () => {
67 | return await request(server)
> 68 | .post('/api/genres')
| ^
69 | .set('x-auth-token', token)
70 | .send({ name });
71 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/genres.test.js:68:10)
at Object.exec (tests/integration/genres.test.js:89:25)
● /api/genres › POST / › should return 400 if genre is less than 5 characters
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › POST / › should return 400 if genre is more than 50 characters
TypeError: app.address is not a function
66 | const exec = async () => {
67 | return await request(server)
> 68 | .post('/api/genres')
| ^
69 | .set('x-auth-token', token)
70 | .send({ name });
71 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/genres.test.js:68:10)
at Object.exec (tests/integration/genres.test.js:97:25)
● /api/genres › POST / › should return 400 if genre is more than 50 characters
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › POST / › should save the genre if it is valid
TypeError: app.address is not a function
66 | const exec = async () => {
67 | return await request(server)
> 68 | .post('/api/genres')
| ^
69 | .set('x-auth-token', token)
70 | .send({ name });
71 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/genres.test.js:68:10)
at Object.exec (tests/integration/genres.test.js:103:13)
● /api/genres › POST / › should save the genre if it is valid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › POST / › should return the genre if it is valid
TypeError: app.address is not a function
66 | const exec = async () => {
67 | return await request(server)
> 68 | .post('/api/genres')
| ^
69 | .set('x-auth-token', token)
70 | .send({ name });
71 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as post] (node_modules/supertest/index.js:25:14)
at post (tests/integration/genres.test.js:68:10)
at Object.exec (tests/integration/genres.test.js:111:25)
● /api/genres › POST / › should return the genre if it is valid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should return 401 if client is not logged in
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should return 401 if client is not logged in
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:145:25)
● /api/genres › PUT /:id › should return 401 if client is not logged in
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should return 400 if genre is less than 5 characters
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should return 400 if genre is less than 5 characters
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:153:25)
● /api/genres › PUT /:id › should return 400 if genre is less than 5 characters
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should return 400 if genre is more than 50 characters
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should return 400 if genre is more than 50 characters
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:161:25)
● /api/genres › PUT /:id › should return 400 if genre is more than 50 characters
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should return 404 if id is invalid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should return 404 if id is invalid
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:169:25)
● /api/genres › PUT /:id › should return 404 if id is invalid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should return 404 if genre with the given id was not found
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should return 404 if genre with the given id was not found
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:177:25)
● /api/genres › PUT /:id › should return 404 if genre with the given id was not found
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should update the genre if input is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should update the genre if input is valid
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:183:13)
● /api/genres › PUT /:id › should update the genre if input is valid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › PUT /:id › should return the updated genre if it is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › PUT /:id › should return the updated genre if it is valid
TypeError: app.address is not a function
124 | const exec = async () => {
125 | return await request(server)
> 126 | .put('/api/genres/' + id)
| ^
127 | .set('x-auth-token', token)
128 | .send({ name: newName });
129 | }
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> [as put] (node_modules/supertest/index.js:25:14)
at put (tests/integration/genres.test.js:126:10)
at Object.exec (tests/integration/genres.test.js:191:25)
● /api/genres › PUT /:id › should return the updated genre if it is valid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › DELETE /:id › should return 401 if client is not logged in
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › DELETE /:id › should return 401 if client is not logged in
TypeError: app.address is not a function
202 |
203 | const exec = async () => {
> 204 | return await request(server)
| ^
205 | .delete('/api/genres/' + id)
206 | .set('x-auth-token', token)
207 | .send();
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> (node_modules/supertest/index.js:25:14)
at exec (tests/integration/genres.test.js:204:20)
at Object.exec (tests/integration/genres.test.js:223:25)
● /api/genres › DELETE /:id › should return 401 if client is not logged in
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › DELETE /:id › should return 403 if the user is not an admin
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › DELETE /:id › should return 403 if the user is not an admin
TypeError: app.address is not a function
202 |
203 | const exec = async () => {
> 204 | return await request(server)
| ^
205 | .delete('/api/genres/' + id)
206 | .set('x-auth-token', token)
207 | .send();
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> (node_modules/supertest/index.js:25:14)
at exec (tests/integration/genres.test.js:204:20)
at Object.exec (tests/integration/genres.test.js:231:25)
● /api/genres › DELETE /:id › should return 403 if the user is not an admin
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › DELETE /:id › should return 404 if id is invalid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › DELETE /:id › should return 404 if id is invalid
TypeError: app.address is not a function
202 |
203 | const exec = async () => {
> 204 | return await request(server)
| ^
205 | .delete('/api/genres/' + id)
206 | .set('x-auth-token', token)
207 | .send();
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> (node_modules/supertest/index.js:25:14)
at exec (tests/integration/genres.test.js:204:20)
at Object.exec (tests/integration/genres.test.js:239:25)
● /api/genres › DELETE /:id › should return 404 if id is invalid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › DELETE /:id › should return 404 if no genre with the given id was found
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › DELETE /:id › should return 404 if no genre with the given id was found
TypeError: app.address is not a function
202 |
203 | const exec = async () => {
> 204 | return await request(server)
| ^
205 | .delete('/api/genres/' + id)
206 | .set('x-auth-token', token)
207 | .send();
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> (node_modules/supertest/index.js:25:14)
at exec (tests/integration/genres.test.js:204:20)
at Object.exec (tests/integration/genres.test.js:247:25)
● /api/genres › DELETE /:id › should return 404 if no genre with the given id was found
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › DELETE /:id › should delete the genre if input is valid
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › DELETE /:id › should delete the genre if input is valid
TypeError: app.address is not a function
202 |
203 | const exec = async () => {
> 204 | return await request(server)
| ^
205 | .delete('/api/genres/' + id)
206 | .set('x-auth-token', token)
207 | .send();
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> (node_modules/supertest/index.js:25:14)
at exec (tests/integration/genres.test.js:204:20)
at Object.exec (tests/integration/genres.test.js:253:13)
● /api/genres › DELETE /:id › should delete the genre if input is valid
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
● /api/genres › DELETE /:id › should return the removed genre
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
● /api/genres › DELETE /:id › should return the removed genre
TypeError: app.address is not a function
202 |
203 | const exec = async () => {
> 204 | return await request(server)
| ^
205 | .delete('/api/genres/' + id)
206 | .set('x-auth-token', token)
207 | .send();
at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
at new Test (node_modules/supertest/lib/test.js:36:12)
at Object.obj.<computed> (node_modules/supertest/index.js:25:14)
at exec (tests/integration/genres.test.js:204:20)
at Object.exec (tests/integration/genres.test.js:261:25)
● /api/genres › DELETE /:id › should return the removed genre
TypeError: server.close is not a function
9 | beforeEach(() => { server = require('../../index'); })
10 | afterEach(async () => {
> 11 | await server.close();
| ^
12 | await Genre.remove({});
13 | });
14 |
at Object.close (tests/integration/genres.test.js:11:18)
Test Suites: 3 failed, 2 passed, 5 total Tests: 35 failed, 2 passed, 37 total Snapshots: 0 total Time: 84.325s Ran all test suites.
Watch Usage › Press f to run only failed tests. › Press o to only run tests related to changed files. › Press p to filter by a filename regex pattern. › Press t to filter by a test name regex pattern. › Press q to quit watch mode. › Press Enter to trigger a test run.
I have the same issue :(
same issues here
Same issue here also
Edit: It seems a solution was provided in #1. Here's the comment with the solution.