File: /var/www/api-parametros/test/parametros/parametro.controller.findAll.e2e-spec.ts
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { ParametroModule } from '../../src/app/parametros/parametro.module';
import { ParametroSchema } from '../../src/app/parametros/schemas/parametro.schema';
import mongoose from 'mongoose';
import { MongoMemoryServer } from 'mongodb-memory-server';
import { MongooseModule } from '@nestjs/mongoose';
jest.setTimeout(30000);
describe('ParametroController (e2e)', () => {
let app: INestApplication;
let mongoServer;
let parametroModel = mongoose.model('Parametro', ParametroSchema);
let parametro;
const seederParametro = {
codigo: 'codigo test',
nombre: 'Parametro test',
idTipoParametro: new mongoose.Types.ObjectId().toHexString(),
};
beforeAll(async () => {
mongoServer = await MongoMemoryServer.create();
const uri = mongoServer.getUri();
await mongoose.connect(uri);
parametroModel = mongoose.model('Parametro', ParametroSchema);
});
afterAll(async () => {
await mongoose.disconnect();
await mongoServer.stop();
});
beforeEach(async () => {
const moduleRef = await Test.createTestingModule({
imports: [
MongooseModule.forRootAsync({
useFactory: () => ({
uri: mongoServer.getUri(),
useNewUrlParser: true,
useUnifiedTopology: true,
}),
}),
ParametroModule,
],
}).compile();
parametro = await parametroModel.create(seederParametro);
app = moduleRef.createNestApplication();
await app.init();
});
afterEach(async () => {
await parametroModel.deleteMany({});
if (app) await app.close();
});
describe('GET /parametros', () => {
it('debe retornar una lista de parĂ¡metros', async () => {
const page: number = 1;
const pageSize: number = 5;
const expectResponse = {
data: [
{
_id: parametro._id.toString(),
codigo: parametro.codigo,
nombre: parametro.nombre,
padre: null,
createdAt: parametro['createdAt'].toISOString(),
},
],
message: 'Consulta exitosa',
summary: 'Los elementos fueron encontrados',
totalRecords: 1,
rows: 1,
};
const response = await request(app.getHttpServer())
.get(`/parametros?page=${page}&pageSize=${pageSize}`)
.set({
'Content-Type': 'application/json',
Accept: 'application/json',
})
.expect(200);
expect(response.body).toEqual(expectResponse);
});
});
});