mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-17 19:37:02 +00:00
chore: added users service unit tests
This commit is contained in:
@@ -8,7 +8,7 @@ module.exports = {
|
||||
// automock: false,
|
||||
|
||||
// Stop running tests after `n` failures
|
||||
// bail: 0,
|
||||
bail: 1,
|
||||
|
||||
// The directory where Jest should store its cached dependency information
|
||||
// cacheDirectory: "/tmp/jest_rs",
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
import { disconnect, truncate } from "../utils/database";
|
||||
// import User from "../../models/User";
|
||||
// import app from "../../app";
|
||||
import CreateUserService from "../../services/UserServices/CreateUserService";
|
||||
import AppError from "../../errors/AppError";
|
||||
|
||||
describe("User", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be able to create a new user", async () => {
|
||||
const user = await CreateUserService({
|
||||
name: "dasdas",
|
||||
email: "tesssst@test.com",
|
||||
password: "passwo22221131rd"
|
||||
});
|
||||
|
||||
expect(user).toHaveProperty("id");
|
||||
});
|
||||
|
||||
it("should not be able to create a user with duplicated email", async () => {
|
||||
await CreateUserService({
|
||||
name: "dasdas",
|
||||
email: "tesssst@test.com",
|
||||
password: "passwo22221131rd"
|
||||
});
|
||||
|
||||
expect(
|
||||
CreateUserService({
|
||||
name: "dasdas",
|
||||
email: "tesssst@test.com",
|
||||
password: "passwo22221131rd"
|
||||
})
|
||||
).rejects.toBeInstanceOf(AppError);
|
||||
});
|
||||
});
|
||||
66
backend/src/__tests__/unit/User/AuthUserService.spec.ts
Normal file
66
backend/src/__tests__/unit/User/AuthUserService.spec.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import faker from "faker";
|
||||
import AppError from "../../../errors/AppError";
|
||||
import AuthUserService from "../../../services/UserServices/AuthUserSerice";
|
||||
import CreateUserService from "../../../services/UserServices/CreateUserService";
|
||||
import { disconnect, truncate } from "../../utils/database";
|
||||
|
||||
describe("Auth", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be able to login with an existing user", async () => {
|
||||
await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: "mail@test.com",
|
||||
password: "hardpassword"
|
||||
});
|
||||
|
||||
const response = await AuthUserService({
|
||||
email: "mail@test.com",
|
||||
password: "hardpassword"
|
||||
});
|
||||
|
||||
expect(response).toHaveProperty("token");
|
||||
});
|
||||
|
||||
it("should not be able to login with not registered email", async () => {
|
||||
try {
|
||||
await AuthUserService({
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
} catch (err) {
|
||||
expect(err).toBeInstanceOf(AppError);
|
||||
expect(err.statusCode).toBe(401);
|
||||
expect(err.message).toBe("ERR_INVALID_CREDENTIALS");
|
||||
}
|
||||
});
|
||||
|
||||
it("should not be able to login with incorret password", async () => {
|
||||
await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: "mail@test.com",
|
||||
password: "hardpassword"
|
||||
});
|
||||
|
||||
try {
|
||||
await AuthUserService({
|
||||
email: "mail@test.com",
|
||||
password: faker.internet.password()
|
||||
});
|
||||
} catch (err) {
|
||||
expect(err).toBeInstanceOf(AppError);
|
||||
expect(err.statusCode).toBe(401);
|
||||
expect(err.message).toBe("ERR_INVALID_CREDENTIALS");
|
||||
}
|
||||
});
|
||||
});
|
||||
47
backend/src/__tests__/unit/User/CreateUserService.spec.ts
Normal file
47
backend/src/__tests__/unit/User/CreateUserService.spec.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import faker from "faker";
|
||||
import AppError from "../../../errors/AppError";
|
||||
import CreateUserService from "../../../services/UserServices/CreateUserService";
|
||||
import { disconnect, truncate } from "../../utils/database";
|
||||
|
||||
describe("User", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be able to create a new user", async () => {
|
||||
const user = await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
expect(user).toHaveProperty("id");
|
||||
});
|
||||
|
||||
it("should not be able to create a user with duplicated email", async () => {
|
||||
await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: "teste@sameemail.com",
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
try {
|
||||
await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: "teste@sameemail.com",
|
||||
password: faker.internet.password()
|
||||
});
|
||||
} catch (err) {
|
||||
expect(err).toBeInstanceOf(AppError);
|
||||
expect(err.statusCode).toBe(400);
|
||||
}
|
||||
});
|
||||
});
|
||||
35
backend/src/__tests__/unit/User/DeleteUserService.spec.ts
Normal file
35
backend/src/__tests__/unit/User/DeleteUserService.spec.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import faker from "faker";
|
||||
import AppError from "../../../errors/AppError";
|
||||
import CreateUserService from "../../../services/UserServices/CreateUserService";
|
||||
import DeleteUserService from "../../../services/UserServices/DeleteUserService";
|
||||
import { disconnect, truncate } from "../../utils/database";
|
||||
|
||||
describe("User", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be delete a existing user", async () => {
|
||||
const { id } = await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
expect(DeleteUserService(id)).resolves.not.toThrow();
|
||||
});
|
||||
|
||||
it("to throw an error if tries to delete a non existing user", async () => {
|
||||
expect(DeleteUserService(faker.random.number())).rejects.toBeInstanceOf(
|
||||
AppError
|
||||
);
|
||||
});
|
||||
});
|
||||
34
backend/src/__tests__/unit/User/ListUserService.spec.ts
Normal file
34
backend/src/__tests__/unit/User/ListUserService.spec.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import faker from "faker";
|
||||
import User from "../../../models/User";
|
||||
import CreateUserService from "../../../services/UserServices/CreateUserService";
|
||||
import ListUsersService from "../../../services/UserServices/ListUsersService";
|
||||
import { disconnect, truncate } from "../../utils/database";
|
||||
|
||||
describe("User", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be able to list users", async () => {
|
||||
await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
const response = await ListUsersService({
|
||||
pageNumber: 1
|
||||
});
|
||||
|
||||
expect(response).toHaveProperty("users");
|
||||
expect(response.users[0]).toBeInstanceOf(User);
|
||||
});
|
||||
});
|
||||
39
backend/src/__tests__/unit/User/ShowUserService.spec.ts
Normal file
39
backend/src/__tests__/unit/User/ShowUserService.spec.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import faker from "faker";
|
||||
import AppError from "../../../errors/AppError";
|
||||
import User from "../../../models/User";
|
||||
import CreateUserService from "../../../services/UserServices/CreateUserService";
|
||||
import ShowUserService from "../../../services/UserServices/ShowUserService";
|
||||
import { disconnect, truncate } from "../../utils/database";
|
||||
|
||||
describe("User", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be able to find a user", async () => {
|
||||
const newUser = await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
const user = await ShowUserService(newUser.id);
|
||||
|
||||
expect(user).toHaveProperty("id");
|
||||
expect(user).toBeInstanceOf(User);
|
||||
});
|
||||
|
||||
it("should not be able to find a inexisting user", async () => {
|
||||
expect(ShowUserService(faker.random.number())).rejects.toBeInstanceOf(
|
||||
AppError
|
||||
);
|
||||
});
|
||||
});
|
||||
68
backend/src/__tests__/unit/User/UpdateUserService.spec.ts
Normal file
68
backend/src/__tests__/unit/User/UpdateUserService.spec.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import faker from "faker";
|
||||
import AppError from "../../../errors/AppError";
|
||||
import CreateUserService from "../../../services/UserServices/CreateUserService";
|
||||
import UpdateUserService from "../../../services/UserServices/UpdateUserService";
|
||||
import { disconnect, truncate } from "../../utils/database";
|
||||
|
||||
describe("User", () => {
|
||||
beforeEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await truncate();
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await disconnect();
|
||||
});
|
||||
|
||||
it("should be able to find a user", async () => {
|
||||
const newUser = await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
const updatedUser = await UpdateUserService({
|
||||
userId: newUser.id,
|
||||
userData: {
|
||||
name: "New name",
|
||||
email: "newmail@email.com"
|
||||
}
|
||||
});
|
||||
|
||||
expect(updatedUser).toHaveProperty("name", "New name");
|
||||
expect(updatedUser).toHaveProperty("email", "newmail@email.com");
|
||||
});
|
||||
|
||||
it("should not be able to updated a inexisting user", async () => {
|
||||
const userId = faker.random.number();
|
||||
const userData = {
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email()
|
||||
};
|
||||
|
||||
expect(UpdateUserService({ userId, userData })).rejects.toBeInstanceOf(
|
||||
AppError
|
||||
);
|
||||
});
|
||||
|
||||
it("should not be able to updated an user with invalid data", async () => {
|
||||
const newUser = await CreateUserService({
|
||||
name: faker.name.findName(),
|
||||
email: faker.internet.email(),
|
||||
password: faker.internet.password()
|
||||
});
|
||||
|
||||
const userId = newUser.id;
|
||||
const userData = {
|
||||
name: faker.name.findName(),
|
||||
email: "test.worgn.email"
|
||||
};
|
||||
|
||||
expect(UpdateUserService({ userId, userData })).rejects.toBeInstanceOf(
|
||||
AppError
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
import database from "../../database";
|
||||
|
||||
const truncate = async (): Promise<void> => {
|
||||
await database.sync({ force: true });
|
||||
await database.truncate({ force: true, cascade: true });
|
||||
};
|
||||
|
||||
const disconnect = async (): Promise<void> => {
|
||||
|
||||
@@ -3,7 +3,7 @@ import AppError from "../../errors/AppError";
|
||||
import Ticket from "../../models/Ticket";
|
||||
import UpdateDeletedUserOpenTicketsStatus from "../../helpers/UpdateDeletedUserOpenTicketsStatus";
|
||||
|
||||
const DeleteUserService = async (id: string): Promise<void> => {
|
||||
const DeleteUserService = async (id: string | number): Promise<void> => {
|
||||
const user = await User.findOne({
|
||||
where: { id }
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@ import User from "../../models/User";
|
||||
|
||||
interface Request {
|
||||
searchParam?: string;
|
||||
pageNumber?: string;
|
||||
pageNumber?: string | number;
|
||||
}
|
||||
|
||||
interface Response {
|
||||
|
||||
@@ -12,7 +12,7 @@ interface UserData {
|
||||
|
||||
interface Request {
|
||||
userData: UserData;
|
||||
userId: string;
|
||||
userId: string | number;
|
||||
}
|
||||
|
||||
interface Response {
|
||||
|
||||
Reference in New Issue
Block a user