Skip to content

Commit 7e3ffcb

Browse files
SharpDevOps10thebladehit
authored andcommitted
testing: added tests for finding users without approve
1 parent e418a7d commit 7e3ffcb

File tree

3 files changed

+89
-7
lines changed

3 files changed

+89
-7
lines changed

.github/actions/install/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ runs:
55
using: composite
66
steps:
77
- name: Use Node.js 20.x
8-
uses: actions/setup-node@v3
8+
uses: actions/setup-node@v4
99
with:
1010
node-version: '20.x'
1111
- name: Install dependencies

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Checkout
14-
uses: actions/checkout@v3
14+
uses: actions/checkout@v4
1515
- name: Install Node and dependencies
1616
uses: ./.github/actions/install
1717
- name: Start PostgreSQL Database

src/users/users.service.spec.ts

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,102 @@ import { UsersRepository } from '../repositories/users.repository';
44
import { MailModule } from '../mail/mail.module';
55
import { PrismaModule } from '../prisma/prisma.module';
66
import { AuthModule } from '../auth/auth.module';
7+
import { PrismaService } from '../prisma/prisma.service';
8+
import { Request } from 'express';
9+
import { ForbiddenException } from '@nestjs/common';
710

811
describe('UsersService', () => {
9-
let service: UsersService;
12+
let usersService: UsersService;
13+
let prismaService: PrismaService;
1014

11-
beforeEach(async () => {
15+
beforeAll(async () => {
1216
const module: TestingModule = await Test.createTestingModule({
1317
providers: [UsersService, UsersRepository],
1418
imports: [MailModule, PrismaModule, AuthModule],
1519
}).compile();
1620

17-
service = module.get<UsersService>(UsersService);
21+
usersService = module.get<UsersService>(UsersService);
22+
prismaService = module.get<PrismaService>(PrismaService);
23+
24+
});
25+
26+
afterAll(async () => {
27+
await prismaService.$disconnect();
1828
});
1929

20-
it('should be defined', () => {
21-
expect(service).toBeDefined();
30+
beforeEach(async () => {
31+
await prismaService.queue.deleteMany();
32+
await prismaService.user.deleteMany();
33+
});
34+
35+
describe('getNotApprovedUsers', () => {
36+
it('should return a list of not approved users if the requester is an admin', async () => {
37+
const admin = await prismaService.user.create({
38+
data: {
39+
40+
password: '123456',
41+
firstName: 'John',
42+
lastName: 'Doe',
43+
admin: true,
44+
approved: true,
45+
},
46+
});
47+
48+
49+
await prismaService.user.createMany({
50+
data: [
51+
{
52+
53+
password: '123456',
54+
firstName: 'John',
55+
lastName: 'Doe',
56+
admin: false,
57+
approved: false,
58+
},
59+
{
60+
61+
password: '123456',
62+
firstName: 'Andrew',
63+
lastName: 'Doe',
64+
admin: false,
65+
approved: false,
66+
},
67+
],
68+
});
69+
70+
const notApprovedUsers = await prismaService.user.findMany({
71+
where: { approved: false },
72+
});
73+
74+
const req = {
75+
user: {
76+
userId: admin.id,
77+
},
78+
} as unknown as Request;
79+
80+
const result = await usersService.getNotApprovedUsers(req);
81+
expect(result).toStrictEqual(notApprovedUsers);
82+
});
83+
84+
it('should throw ForbiddenException if the requester is not an admin', async () => {
85+
const user = await prismaService.user.create({
86+
data: {
87+
88+
password: 'anon1234',
89+
firstName: 'Alex',
90+
lastName: 'Bond',
91+
admin: false,
92+
approved: true,
93+
},
94+
});
95+
96+
const req = {
97+
user: {
98+
userId: user.id,
99+
},
100+
} as unknown as Request;
101+
102+
await expect(usersService.getNotApprovedUsers(req)).rejects.toThrow(ForbiddenException);
103+
});
22104
});
23105
});

0 commit comments

Comments
 (0)