Initial commit
This commit is contained in:
126
src/modules/users/domain/users.entity.spec.ts
Normal file
126
src/modules/users/domain/users.entity.spec.ts
Normal file
@@ -0,0 +1,126 @@
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
import { InvalidEmailFormat } from "./errors/InvalidEmailFormat.js";
|
||||
import { InvalidPassword } from "./errors/InvalidPassword.js";
|
||||
import { NewPasswordMustBeDifferent } from "./errors/NewPasswordMustBeDifferent.js";
|
||||
import { UserEntity } from "./users.entity.js";
|
||||
|
||||
describe("Users - UserEntity", () => {
|
||||
test("should create a user entity", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
expect(user).toBeDefined();
|
||||
expect(user.id).toBe("1");
|
||||
expect(user.email).toBe("test@example.com");
|
||||
expect(user.password).toBe("password");
|
||||
expect(user.isVerified).toBe(false);
|
||||
expect(user.createdAt).toBeInstanceOf(Date);
|
||||
});
|
||||
|
||||
test("should throw an error if the email is invalid", () => {
|
||||
expect(() => {
|
||||
new UserEntity("1", "test", "password", false, new Date());
|
||||
}).toThrowError(InvalidEmailFormat);
|
||||
});
|
||||
|
||||
test("should throw an error if the password is invalid", () => {
|
||||
expect(() => {
|
||||
new UserEntity("1", "test@example.com", "", false, new Date());
|
||||
}).toThrowError(InvalidPassword);
|
||||
});
|
||||
|
||||
test("should get account age in seconds", () => {
|
||||
vi.useFakeTimers();
|
||||
vi.setSystemTime(new Date(2000, 1, 1, 13, 0, 0));
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
// advance time by 5 seconds
|
||||
vi.setSystemTime(new Date(2000, 1, 1, 13, 0, 5));
|
||||
expect(user.getAccountAge()).toBe(5);
|
||||
vi.useRealTimers();
|
||||
});
|
||||
|
||||
test("should change email successfully", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
user.changeEmail("test2@example.com");
|
||||
expect(user.email).toBe("test2@example.com");
|
||||
});
|
||||
|
||||
test("should throw an error if the new email is invalid", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
expect(() => {
|
||||
user.changeEmail("test");
|
||||
}).toThrowError(InvalidEmailFormat);
|
||||
});
|
||||
|
||||
test("should change password successfully", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
user.changePassword("password2");
|
||||
expect(user.password).toBe("password2");
|
||||
});
|
||||
|
||||
test("should throw an error if the new password is the same as the old password", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
expect(() => {
|
||||
user.changePassword("password");
|
||||
}).toThrowError(NewPasswordMustBeDifferent);
|
||||
});
|
||||
|
||||
test("should throw an error if the new password is invalid", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
expect(() => {
|
||||
user.changePassword("");
|
||||
}).toThrowError(InvalidPassword);
|
||||
});
|
||||
|
||||
test("should set verified status successfully", () => {
|
||||
const user = new UserEntity(
|
||||
"1",
|
||||
"test@example.com",
|
||||
"password",
|
||||
false,
|
||||
new Date(),
|
||||
);
|
||||
user.setVerifiedStatus(true);
|
||||
expect(user.isVerified).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user