Initial commit

This commit is contained in:
Lance
2026-01-16 15:33:40 +08:00
committed by GitHub
commit 037e36f4f4
67 changed files with 5589 additions and 0 deletions

View 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);
});
});