Skip to content

Commit 402a389

Browse files
Merge pull request #10228 from nathanArseneau/test/sample-02-gateways
test(sample-02): added unit tests
2 parents c885a89 + 9b6b00f commit 402a389

File tree

6 files changed

+162
-4
lines changed

6 files changed

+162
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { INestApplication } from '@nestjs/common';
2+
import { Test } from '@nestjs/testing';
3+
import { AppModule } from '../../src/app.module';
4+
import { io, Socket } from 'socket.io-client';
5+
6+
describe('EventsGateway', () => {
7+
let app: INestApplication;
8+
let socket: Socket;
9+
10+
beforeAll(async () => {
11+
const moduleRef = await Test.createTestingModule({
12+
imports: [AppModule],
13+
}).compile();
14+
15+
app = moduleRef.createNestApplication();
16+
await app.listen(3000);
17+
});
18+
19+
beforeEach(() => {
20+
socket = io('http://localhost:3000');
21+
socket.connect();
22+
});
23+
24+
describe('findAll', () => {
25+
it('should receive 3 numbers', done => {
26+
let eventCount = 1;
27+
socket.emit('events', { test: 'test' });
28+
socket.on('events', data => {
29+
expect(data).toBe(eventCount);
30+
if (++eventCount > 3) {
31+
done();
32+
}
33+
});
34+
});
35+
});
36+
37+
describe('identity', () => {
38+
it('should return the same number has what was sent', done => {
39+
socket.emit('identity', 0, response => {
40+
expect(response).toBe(0);
41+
done();
42+
});
43+
});
44+
});
45+
46+
afterEach(() => {
47+
socket.disconnect();
48+
});
49+
50+
afterAll(async () => {
51+
await app.close();
52+
});
53+
});

sample/02-gateways/e2e/jest-e2e.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"moduleFileExtensions": [
3+
"ts",
4+
"tsx",
5+
"js",
6+
"json"
7+
],
8+
"transform": {
9+
"^.+\\.tsx?$": "ts-jest"
10+
},
11+
"testRegex": "/e2e/.*\\.(e2e-test|e2e-spec).(ts|tsx|js)$",
12+
"collectCoverageFrom" : ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"],
13+
"coverageReporters": ["json", "lcov"]
14+
}

sample/02-gateways/jest.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"moduleFileExtensions": [
3+
"ts",
4+
"tsx",
5+
"js",
6+
"json"
7+
],
8+
"transform": {
9+
"^.+\\.tsx?$": "ts-jest"
10+
},
11+
"testRegex": "/src/.*\\.(test|spec).(ts|tsx|js)$",
12+
"collectCoverageFrom" : ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"],
13+
"coverageReporters": ["json", "lcov"]
14+
}

sample/02-gateways/package-lock.json

+22-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sample/02-gateways/package.json

+19-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"test:watch": "jest --watch",
1717
"test:cov": "jest --coverage",
1818
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
19-
"test:e2e": "echo 'No e2e tests implemented yet.'"
19+
"test:e2e": "jest --config ./e2e/jest-e2e.json"
2020
},
2121
"dependencies": {
2222
"@nestjs/common": "9.3.12",
@@ -37,6 +37,7 @@
3737
"@nestjs/schematics": "9.0.4",
3838
"@nestjs/testing": "9.3.12",
3939
"@types/express": "4.17.13",
40+
"@types/jest": "28.1.4",
4041
"@types/node": "18.0.3",
4142
"@types/supertest": "2.0.12",
4243
"@types/ws": "8.5.3",
@@ -54,5 +55,22 @@
5455
"ts-node": "10.8.2",
5556
"tsconfig-paths": "4.0.0",
5657
"typescript": "4.9.5"
58+
},
59+
"jest": {
60+
"moduleFileExtensions": [
61+
"js",
62+
"json",
63+
"ts"
64+
],
65+
"rootDir": "src",
66+
"testRegex": ".*\\.spec\\.ts$",
67+
"transform": {
68+
"^.+\\.(t|j)s$": "ts-jest"
69+
},
70+
"collectCoverageFrom": [
71+
"**/*.(t|j)s"
72+
],
73+
"coverageDirectory": "../coverage",
74+
"testEnvironment": "node"
5775
}
5876
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
import { reduce } from 'rxjs/operators';
3+
import { EventsGateway } from './events.gateway';
4+
5+
describe('EventsGateway', () => {
6+
let gateway: EventsGateway;
7+
8+
beforeEach(async () => {
9+
const module: TestingModule = await Test.createTestingModule({
10+
providers: [EventsGateway],
11+
}).compile();
12+
13+
gateway = module.get<EventsGateway>(EventsGateway);
14+
});
15+
16+
it('should be defined', () => {
17+
expect(gateway).toBeDefined();
18+
});
19+
20+
describe('findAll', () => {
21+
it('should return 3 numbers', done => {
22+
gateway
23+
.findAll({})
24+
.pipe(reduce((acc, item) => [...acc, item], []))
25+
.subscribe(results => {
26+
expect(results.length).toBe(3);
27+
results.forEach((result, index) =>
28+
expect(result.data).toBe(index + 1),
29+
);
30+
done();
31+
});
32+
});
33+
});
34+
35+
describe('identity', () => {
36+
it('should return the same number has what was sent', async () => {
37+
await expect(gateway.identity(1)).resolves.toBe(1);
38+
});
39+
});
40+
});

0 commit comments

Comments
 (0)