nestjs-express-cassandra
Version:
Express-cassandra module for Nest framework
112 lines (93 loc) • 2.75 kB
text/typescript
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { Server } from 'http';
import * as request from 'supertest';
import { FeaturesModule } from '../../src/sample/features.module';
describe('SyncModule', () => {
let server: Server;
let app: INestApplication;
const payload = {
postId: 1,
title: 'Express Cassandra',
content: 'A NestJS module',
};
beforeAll(async () => {
const moduleFixture = await Test.createTestingModule({
imports: [FeaturesModule],
}).compile();
app = moduleFixture.createNestApplication();
server = app.getHttpServer();
await app.init();
});
it(`CREATE: should return created entity`, () => {
return request(server)
.post('/posts')
.send(payload)
.then((res) => {
expect(res.body).toMatchObject(payload);
});
});
it(`CREATE: should throw 400 exception with invalid body`, () => {
const invalid = { content: 'A NestJS module' };
return request(server)
.post('/posts')
.send(invalid)
.then((res) => {
expect(res.body).toMatchObject({
statusCode: 400,
message: 'Could not save post',
error: 'Required Field: title must have a value',
});
});
});
it(`LIST: should return list of posts`, () => {
return request(server)
.get('/posts')
.then((res) => {
expect(res.body).toMatchObject([payload]);
});
});
it(`LIST: should throw 400 exception when query wrong field`, () => {
return request(server)
.get('/posts?content=foo')
.then((res) => {
expect(res.body).toMatchObject({
statusCode: 400,
message: 'Could not get posts',
});
});
});
it(`GET: should return correct post by postId`, () => {
return request(server)
.get('/posts/1')
.then((res) => {
expect(res.body).toMatchObject(payload);
});
});
it(`UPDATE: should return updated rows count when update valid post`, () => {
const updated = {
title: 'Express Cassandra',
content: 'A NestJS module (v2)',
};
return request(server)
.put('/posts/1')
.send(updated)
.expect(200, { updated: 1 });
});
it(`UPDATE: should return 0 updated rows when update invalid post`, () => {
const updated = {
title: 'Express Cassandra',
content: 'A NestJS module (v2)',
};
return request(server)
.put('/posts/2')
.send(updated)
.expect(200, { updated: 0 });
});
it(`DELETE: should delete post`, () => {
return request(server).delete('/posts/1').expect(200, { deleted: true });
});
afterAll(async () => {
await app.close();
});
});