improve the test with a single command only "npm test"

This commit is contained in:
LouisLam 2021-10-05 19:13:57 +08:00
parent e71f5bf314
commit 49720c709c
3 changed files with 32 additions and 9 deletions

View File

@ -20,8 +20,8 @@
"start-server": "node server/server.js", "start-server": "node server/server.js",
"start-server-dev": "cross-env NODE_ENV=development node server/server.js", "start-server-dev": "cross-env NODE_ENV=development node server/server.js",
"build": "vite build", "build": "vite build",
"prepare-test-server": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/", "test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --test",
"test": "node test/prepare-jest.js && jest", "jest": "node test/prepare-jest.js && jest",
"tsc": "tsc", "tsc": "tsc",
"vite-preview-dist": "vite preview --host", "vite-preview-dist": "vite preview --host",
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker": "npm run build-docker-debian && npm run build-docker-alpine",

View File

@ -37,7 +37,7 @@ console.log("Importing this project modules");
debug("Importing Monitor"); debug("Importing Monitor");
const Monitor = require("./model/monitor"); const Monitor = require("./model/monitor");
debug("Importing Settings"); debug("Importing Settings");
const { getSettings, setSettings, setting, initJWTSecret, checkLogin } = require("./util-server"); const { getSettings, setSettings, setting, initJWTSecret, checkLogin, startUnitTest } = require("./util-server");
debug("Importing Notification"); debug("Importing Notification");
const { Notification } = require("./notification"); const { Notification } = require("./notification");
@ -64,12 +64,11 @@ const port = parseInt(process.env.PORT || args.port || 3001);
const sslKey = process.env.SSL_KEY || args["ssl-key"] || undefined; const sslKey = process.env.SSL_KEY || args["ssl-key"] || undefined;
const sslCert = process.env.SSL_CERT || args["ssl-cert"] || undefined; const sslCert = process.env.SSL_CERT || args["ssl-cert"] || undefined;
// Demo Mode? /**
const demoMode = args["demo"] || false; * Run unit test after the server is ready
* @type {boolean}
if (demoMode) { */
console.log("==== Demo Mode ===="); const testMode = !!args["test"] || false;
}
console.log("Creating express and socket.io instance"); console.log("Creating express and socket.io instance");
const app = express(); const app = express();
@ -1223,6 +1222,10 @@ exports.entryPage = "dashboard";
} }
startMonitors(); startMonitors();
checkVersion.startInterval(); checkVersion.startInterval();
if (testMode) {
startUnitTest();
}
}); });
})(); })();

View File

@ -5,6 +5,7 @@ const { debug } = require("../src/util");
const passwordHash = require("./password-hash"); const passwordHash = require("./password-hash");
const dayjs = require("dayjs"); const dayjs = require("dayjs");
const { Resolver } = require("dns"); const { Resolver } = require("dns");
const child_process = require("child_process");
/** /**
* Init or reset JWT secret * Init or reset JWT secret
@ -292,3 +293,22 @@ exports.checkLogin = (socket) => {
throw new Error("You are not logged in."); throw new Error("You are not logged in.");
} }
}; };
exports.startUnitTest = async () => {
console.log("Starting unit test...");
const npm = /^win/.test(process.platform) ? "npm.cmd" : "npm";
const child = child_process.spawn(npm, ["run", "jest"]);
child.stdout.on("data", (data) => {
console.log(data.toString());
});
child.stderr.on("data", (data) => {
console.log(data.toString());
});
child.on("close", function (code) {
console.log("Jest exit code: " + code);
process.kill(process.pid, "SIGINT");
});
};