summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-24 16:35:39 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-24 16:35:39 +0200
commit271e439b1a1e756f2410e25766d587479c668a7d (patch)
treee1584ef22d21a366830861392444f354ce6ab9ee
parent:construction: gateway (diff)
downloadserver-271e439b1a1e756f2410e25766d587479c668a7d.tar.xz
:white_check_mark: util unit tests
-rw-r--r--util/package.json11
-rw-r--r--util/tests/validate.test.js27
2 files changed, 36 insertions, 2 deletions
diff --git a/util/package.json b/util/package.json
index 870c9344..397eb47f 100644
--- a/util/package.json
+++ b/util/package.json
@@ -5,10 +5,11 @@
 	"main": "dist/index.js",
 	"types": "dist/index.d.ts",
 	"scripts": {
-		"test": "jest",
+		"start": "npm run build && node dist/",
+		"test": "npm run build && jest",
 		"postinstall": "npm run build",
 		"build": "npx tsc -b .",
-		"generate:schema": "npx typescript-json-schema tsconfig.json '*' -o src/models/schema.json"
+		"generate:schema": "npx typescript-json-schema tsconfig.json '*' -o src/entities/schema.json"
 	},
 	"repository": {
 		"type": "git",
@@ -41,6 +42,7 @@
 		"class-validator": "^0.13.1",
 		"dot-prop": "^6.0.1",
 		"env-paths": "^2.2.1",
+		"jest-test-performance": "^1.0.1",
 		"jsonwebtoken": "^8.5.1",
 		"missing-native-js-functions": "^1.2.10",
 		"node-fetch": "^2.6.1",
@@ -50,5 +52,10 @@
 		"typeorm": "^0.2.37",
 		"typescript": "^4.3.5",
 		"typescript-json-schema": "github:fosscord/typescript-json-schema"
+	},
+	"jest": {
+		"setupFilesAfterEnv": [
+			"jest-test-performance"
+		]
 	}
 }
diff --git a/util/tests/validate.test.js b/util/tests/validate.test.js
new file mode 100644
index 00000000..629c864f
--- /dev/null
+++ b/util/tests/validate.test.js
@@ -0,0 +1,27 @@
+const { initDatabase } = require("../dist/util/Database");
+const { User } = require("../dist/entities/User");
+
+beforeAll(async () => {
+	await initDatabase();
+
+	new User().validate(); // initalize schema validator
+});
+
+describe("Validate model class properties", () => {
+	describe("validation should be faster than 20ms", () => {
+		expect(() => new User().validate()).toBeFasterThan(20);
+	});
+
+	describe("User", () => {
+		test("object instead of string", () => {
+			expect(() => {
+				new User({ username: {} }).validate();
+			}).toThrow();
+		});
+	});
+
+	test("should not set opts", () => {
+		const user = new User({ opts: { id: 0 } });
+		expect(user.opts.id).not.toBe(0);
+	});
+});