Skip to content

Commit a93b1de

Browse files
authored
Merge pull request #54 from hivetown/feat/testesNOVOS
feat: testes unitarios
2 parents 48062de + 7e8115d commit a93b1de

File tree

4 files changed

+178
-2
lines changed

4 files changed

+178
-2
lines changed

src/utils/paginate.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ export const paginate = (options: PaginatedOptions = { page: 1, size: 24 }, max
1010

1111
const offset = (page - 1) * size;
1212
const limit = size;
13-
1413
return { offset, limit };
1514
};

tests/hasPermissions.test.ts

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
import type { User } from '../src/entities/User';
2+
import { Permission } from '../src/enums/Permission';
3+
import { UserType } from '../src/enums/UserType';
4+
import { hasPermissions } from '../src/utils/hasPermission';
5+
6+
let user: User; // Variável para armazenar o usuário
7+
8+
beforeAll(() => {
9+
user = {
10+
id: 1,
11+
authId: '123',
12+
name: 'John Doe',
13+
14+
phone: '912345678',
15+
vat: '123456789',
16+
type: UserType.Consumer,
17+
disableEmails: false
18+
};
19+
20+
return user;
21+
});
22+
23+
test('no permissions user example', () => {
24+
const noPermissions = hasPermissions(user, Permission.READ_OTHER_CONSUMER);
25+
expect(noPermissions).toBe(false);
26+
});
27+
28+
test('read/write other consumer permission example', () => {
29+
const role = {
30+
id: 1,
31+
name: 'AccountManager',
32+
permissions: Permission.READ_OTHER_CONSUMER
33+
};
34+
35+
user.role = role;
36+
37+
const readOtherConsumer = hasPermissions(user, Permission.READ_OTHER_CONSUMER);
38+
const writeOtherConsumer = hasPermissions(user, Permission.WRITE_OTHER_CONSUMER);
39+
40+
const readOtherProducer = hasPermissions(user, Permission.READ_OTHER_PRODUCER);
41+
const writeOtherProducer = hasPermissions(user, Permission.WRITE_OTHER_PRODUCER);
42+
43+
expect(readOtherConsumer).toBe(true);
44+
expect(writeOtherConsumer).toBe(false);
45+
46+
expect(readOtherProducer).toBe(false);
47+
expect(writeOtherProducer).toBe(false);
48+
});
49+
50+
test('read/write other user (consumero or producer) permission example', () => {
51+
const role = {
52+
id: 2,
53+
name: 'AccountEditor',
54+
permissions:
55+
Permission.READ_OTHER_CONSUMER | Permission.WRITE_OTHER_CONSUMER | Permission.READ_OTHER_PRODUCER | Permission.WRITE_OTHER_PRODUCER
56+
};
57+
58+
user.role = role;
59+
60+
const readOtherConsumer = hasPermissions(user, Permission.READ_OTHER_CONSUMER);
61+
const writeOtherConsumer = hasPermissions(user, Permission.WRITE_OTHER_CONSUMER);
62+
63+
const readOtherProducer = hasPermissions(user, Permission.READ_OTHER_PRODUCER);
64+
const writeOtherProducer = hasPermissions(user, Permission.WRITE_OTHER_PRODUCER);
65+
66+
const writeCategory = hasPermissions(user, Permission.WRITE_CATEGORY);
67+
68+
expect(readOtherConsumer).toBe(true);
69+
expect(writeOtherConsumer).toBe(true);
70+
71+
expect(readOtherProducer).toBe(true);
72+
expect(writeOtherProducer).toBe(true);
73+
74+
expect(writeCategory).toBe(false);
75+
});
76+
77+
test('all permissions user example', () => {
78+
const role = {
79+
id: 3,
80+
name: 'Admin',
81+
permissions: Permission.ALL
82+
};
83+
84+
user.role = role;
85+
86+
const readOtherConsumer = hasPermissions(user, Permission.READ_OTHER_CONSUMER);
87+
const writeOtherConsumer = hasPermissions(user, Permission.WRITE_OTHER_CONSUMER);
88+
89+
const readOtherProducer = hasPermissions(user, Permission.READ_OTHER_PRODUCER);
90+
const writeOtherProducer = hasPermissions(user, Permission.WRITE_OTHER_PRODUCER);
91+
92+
const writeCategory = hasPermissions(user, Permission.WRITE_CATEGORY);
93+
const deleteCategory = hasPermissions(user, Permission.DELETE_CATEGORY);
94+
95+
const writeProduct = hasPermissions(user, Permission.WRITE_PRODUCT);
96+
const deleteProduct = hasPermissions(user, Permission.DELETE_PRODUCT);
97+
98+
const createAdmin = hasPermissions(user, Permission.CREATE_ADMIN);
99+
const deleteAdmin = hasPermissions(user, Permission.DELETE_ADMIN);
100+
101+
expect(readOtherConsumer).toBe(true);
102+
expect(writeOtherConsumer).toBe(true);
103+
104+
expect(readOtherProducer).toBe(true);
105+
expect(writeOtherProducer).toBe(true);
106+
107+
expect(writeCategory).toBe(true);
108+
expect(deleteCategory).toBe(true);
109+
110+
expect(writeProduct).toBe(true);
111+
expect(deleteProduct).toBe(true);
112+
113+
expect(createAdmin).toBe(true);
114+
expect(deleteAdmin).toBe(true);
115+
});

tests/paginate.test.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { paginate } from '../src/utils/paginate';
2+
import type { PaginatedOptions } from '../src/interfaces/PaginationOptions';
3+
4+
test('valid paginated example', () => {
5+
const options: PaginatedOptions = {
6+
page: 3,
7+
size: 10
8+
};
9+
10+
const result = paginate(options);
11+
12+
expect(result.limit).toEqual(10);
13+
expect(result.offset).toEqual(20);
14+
});
15+
16+
test('invalid paginated example - negative page', () => {
17+
const options: PaginatedOptions = {
18+
page: -3,
19+
size: 10
20+
};
21+
22+
const result = paginate(options);
23+
24+
expect(result.limit).toEqual(10);
25+
expect(result.offset).toEqual(0);
26+
});
27+
28+
test('invalid paginated example - negative size', () => {
29+
const options: PaginatedOptions = {
30+
page: 3,
31+
size: -10
32+
};
33+
34+
const result = paginate(options);
35+
36+
expect(result.limit).toEqual(1);
37+
expect(result.offset).toEqual(2);
38+
});
39+
40+
test('invalid paginated example - negative page and size', () => {
41+
const options: PaginatedOptions = {
42+
page: -3,
43+
size: -10
44+
};
45+
46+
const result = paginate(options);
47+
48+
expect(result.limit).toEqual(1);
49+
expect(result.offset).toEqual(0);
50+
});
51+
52+
test('invalid paginated example - size too big', () => {
53+
const options: PaginatedOptions = {
54+
page: 10,
55+
size: 1000
56+
};
57+
58+
const result = paginate(options);
59+
60+
expect(result.limit).toEqual(100);
61+
expect(result.offset).toEqual(900);
62+
});

tests/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"extends": "../tsconfig.base.json",
33
"compilerOptions": {
44
"outDir": "../dist/tests",
5-
"rootDir": ".",
5+
"rootDir": "../",
66
"types": ["node", "jest"]
77
}
88
}

0 commit comments

Comments
 (0)