File: /var/www/api-management/test/permisos/permiso.controller.delete.e2e-spec.ts
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { PermisoModule } from '../../src/app/permisos/permiso.module';
import { PermisoSchema } from '../../src/app/permisos/schemas/permiso.schema';
import mongoose from 'mongoose';
import { MongoMemoryServer } from 'mongodb-memory-server';
import { MongooseModule } from '@nestjs/mongoose';
jest.setTimeout(30000);
describe('PermisoController (e2e)', () => {
let app: INestApplication;
let mongoServer;
let permisoModel = mongoose.model('Permiso', PermisoSchema);
let permiso;
const seederPermiso = {
codigo: 'permiso-test',
nombre: 'Permiso test',
descripcion: 'Descripción de permiso test',
slug: 'permiso-test-slug',
modulo: {
_id: new mongoose.Types.ObjectId().toHexString(),
codigo: 'modulo-test',
nombre: 'Módulo test',
icon: { codigo: 'icon-test' },
posicion: 1,
showMenu: true,
},
area: {
_id: new mongoose.Types.ObjectId().toHexString(),
codigo: 'area-test',
nombre: 'Área test',
icon: { codigo: 'icon-area-test' },
posicion: 1,
showMenu: true,
},
};
beforeAll(async () => {
mongoServer = await MongoMemoryServer.create();
const uri = mongoServer.getUri();
await mongoose.connect(uri);
permisoModel = mongoose.model('Permiso', PermisoSchema);
});
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,
}),
}),
PermisoModule,
],
}).compile();
permiso = await permisoModel.create(seederPermiso);
app = moduleRef.createNestApplication();
await app.init();
});
afterEach(async () => {
await permisoModel.deleteMany({});
if (app) await app.close();
});
describe('DELETE /permisos/:id', () => {
it('debe eliminar un permiso correctamente', async () => {
const response = await request(app.getHttpServer())
.delete(`/permisos/${permiso._id}`)
.set({
'Content-Type': 'application/json',
Accept: 'application/json',
})
.expect(200);
const data = response.body.data;
expect(data._id).toEqual(permiso._id.toString());
expect(data.nombre).toEqual(permiso.nombre);
expect(data.descripcion).toEqual(permiso.descripcion);
expect(data.slug).toEqual(permiso.slug);
expect(data.deletedAt).toEqual(null);
expect(data.createdAt).toEqual(permiso['createdAt'].toISOString());
expect(response.body.message).toEqual('Registro eliminado');
expect(response.body.summary).toEqual('El elemento fue eliminado');
});
});
});