diff --git a/util/tests/User.test.js b/util/tests/User.test.js
new file mode 100644
index 00000000..c0852ebc
--- /dev/null
+++ b/util/tests/User.test.js
@@ -0,0 +1,43 @@
+const { initDatabase, closeDatabase } = require("../dist/util/Database");
+const { User } = require("../dist/entities/User");
+jest.setTimeout(20000);
+
+beforeAll((done) => {
+ initDatabase().then(() => {
+ done();
+ });
+});
+
+afterAll(() => {
+ closeDatabase();
+});
+
+describe("User", () => {
+ test("valid discriminator: 1", async () => {
+ new User({ discriminator: "1" }).validate();
+ });
+ test("invalid discriminator: test", async () => {
+ expect(() => {
+ new User({ discriminator: "test" }).validate();
+ }).toThrow();
+ });
+
+ test("invalid discriminator: 0", async () => {
+ expect(() => {
+ new User({ discriminator: "0" }).validate();
+ }).toThrow();
+ });
+
+ test("add guild", async () => {
+ try {
+ await new User({ guilds: [], discriminator: "1" }, { id: "0" }).save();
+ const user = await User.find("0");
+
+ user.guilds.push(new Guild({ name: "test" }));
+
+ user.save();
+ } catch (error) {
+ console.error(error);
+ }
+ });
+});
diff --git a/util/tests/setupJest.js b/util/tests/setupJest.js
new file mode 100644
index 00000000..35a3cb52
--- /dev/null
+++ b/util/tests/setupJest.js
@@ -0,0 +1,23 @@
+const { performance } = require("perf_hooks");
+const fs = require("fs");
+const path = require("path");
+
+// fs.unlinkSync(path.join(__dirname, "..", "database.db"));
+
+global.expect.extend({
+ toBeFasterThan: async (func, target) => {
+ const start = performance.now();
+ var error;
+ try {
+ await func();
+ } catch (e) {
+ error = e.toString();
+ }
+ const time = performance.now() - start;
+
+ return {
+ pass: time < target && !error,
+ message: () => error || `${func.name} took ${time}ms of maximum ${target}`,
+ };
+ },
+});
|