Skip to content

Commit

Permalink
feat: finish endpoint to list users
Browse files Browse the repository at this point in the history
  • Loading branch information
hdev14 committed Jan 18, 2024
1 parent a0c90ce commit bfb0fcb
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 33 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# top-most EditorConfig file
root = true

[*.{js, ts}]
[*.{js, ts, json}]
indent_style = space
indent_size = 2
end_of_line = lf
Expand Down
50 changes: 25 additions & 25 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
{
"env": {
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"settings": {
"import/resolver": {
"typescript": {
"project": "./tsconfig.json"
}
}
},
"rules": {
"@typescript-eslint/no-explicit-any": "off"
"env": {
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"settings": {
"import/resolver": {
"typescript": {
"project": "./tsconfig.json"
}
}
},
"rules": {
"@typescript-eslint/no-explicit-any": "off"
}
}
28 changes: 27 additions & 1 deletion src/api/routers/users.e2e.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { faker } from "@faker-js/faker/locale/pt_BR";

describe('Users endpoints', () => {
afterAll(async () => {
afterEach(async () => {
await globalThis.db_client.query('DELETE FROM users');
});

Expand Down Expand Up @@ -86,4 +86,30 @@ describe('Users endpoints', () => {
expect(response.body.message).toEqual('User not found');
});
});

describe('GET: /users', () => {
beforeAll(async () => {
await globalThis.db_client.query(
'INSERT INTO users (id, email, name, password, phone_number) VALUES ($1, $2, $3, $4, $5)',
[faker.string.uuid(), faker.internet.email(), faker.person.fullName(), faker.string.alphanumeric(10), faker.string.numeric(11)]
);

await globalThis.db_client.query(
'INSERT INTO users (id, email, name, password, phone_number) VALUES ($1, $2, $3, $4, $5)',
[faker.string.uuid(), faker.internet.email(), faker.person.fullName(), faker.string.alphanumeric(10), faker.string.numeric(11)]
);
});

it('returns an array of users', async () => {
expect.assertions(2);

const response = await globalThis.request
.get('/api/users')
.set('Content-Type', 'application/json')
.send();

expect(response.status).toEqual(200);
expect(response.body).toHaveLength(2);
});
});
});
14 changes: 8 additions & 6 deletions src/api/routers/users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import validator from '@api/middlewares/validator';
import BcryptEncryptor from '@b3_stock_alerts/BcryptEncryptor';
import PgUserRepository from '@b3_stock_alerts/PgUserRepository';
import UserService from '@b3_stock_alerts/UserService';
import NotFoundError from '@shared/NotFoundError';
import { NextFunction, Request, Response, Router } from 'express';
import { checkSchema } from 'express-validator';
import { create_user } from './validations';
import NotFoundError from '@shared/NotFoundError';

const router = Router();
const userService = new UserService(new PgUserRepository(), new BcryptEncryptor());
const user_service = new UserService(new PgUserRepository(), new BcryptEncryptor());

router.post('/users',
checkSchema(create_user),
Expand All @@ -22,7 +22,7 @@ router.post('/users',
password
} = request.body;

const result = await userService.createUser({ name, email, phone_number, password });
const result = await user_service.createUser({ name, email, phone_number, password });

if (result.data) {
return response.status(201).json(result.data);
Expand All @@ -35,7 +35,7 @@ router.post('/users',

router.get('/users/:id', async (request: Request, response: Response, next: NextFunction) => {
try {
const result = await userService.getUser(request.params.id);
const result = await user_service.getUser(request.params.id);
if (result.error instanceof NotFoundError) {
return response.status(404).json({ message: result.error.message });
}
Expand All @@ -46,9 +46,11 @@ router.get('/users/:id', async (request: Request, response: Response, next: Next
}
});

router.get('/users', (_request: Request, response: Response, next: NextFunction) => {
router.get('/users', async (_: Request, response: Response, next: NextFunction) => {
try {
return response.status(204).json();
const result = await user_service.listUsers();

return response.status(200).json(result.data);
} catch (e) {
return next(e);
}
Expand Down

0 comments on commit bfb0fcb

Please sign in to comment.