Skip to content

Commit

Permalink
cache sqlite db for testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonatan Alama committed Aug 26, 2021
1 parent 1a6bc20 commit 7111fb7
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 37 deletions.
7 changes: 6 additions & 1 deletion packages/nota-server/package.json
Expand Up @@ -79,9 +79,14 @@
"collectCoverage": true,
"transform": {},
"maxConcurrency": 1,
"maxWorkers": 1,
"setupFilesAfterEnv": [
"./testSetup.js"
],
"clearMocks": true
"globalSetup": "./testGlobalSetup.js",
"clearMocks": true,
"roots": [
"./src"
]
}
}
29 changes: 17 additions & 12 deletions packages/nota-server/src/lib/testUtils.js
Expand Up @@ -14,22 +14,34 @@ const {
} = require("../models");
const authUtils = require("./authUtils");
const { spawn } = require("child-process-promise");
// const fs = require("fs");
// const config = require("../config");
const fs = require("fs");
const config = require("../config");
const DB_FILE = config.db.storage;
const DB_CLEAN_FILE = DB_FILE + ".tmp";
const DB_DATA_JSON = DB_FILE + ".tmp.json";

const resetTestDb = async () => {
const setupDb = async () => {
const options = { stdio: "inherit" };
const sequelize = "node_modules/.bin/sequelize";
try {
// fs.unlinkSync("./" + config.db.storage);
await spawn(sequelize, ["db:migrate:undo:all"]);
await spawn(sequelize, ["db:migrate"]);
const data = await generateTestData();
fs.writeFileSync(DB_DATA_JSON, JSON.stringify(data));
fs.copyFileSync(DB_FILE, DB_CLEAN_FILE);
} catch (error) {
console.error(error);
process.exit(1);
}
};

const resetTestDb = async () => {
fs.copyFileSync(DB_CLEAN_FILE, DB_FILE);
const data = require(DB_DATA_JSON);
return data;
};

const createProject = async ({
name = "sample project",
status = Project.STATUS.READY,
Expand Down Expand Up @@ -734,19 +746,12 @@ const generateTestData = async function() {

module.exports = {
db: {
setupDb,
resetTestDb,
createUser,
createProject,
createTaskTemplate,
createTask,
createMediaSource,
generateTestData: async () => {
try {
const data = await generateTestData();
return data;
} catch (error) {
console.error(error);
}
}
createMediaSource
}
};
9 changes: 3 additions & 6 deletions packages/nota-server/src/routes/projects.test.js
Expand Up @@ -8,8 +8,7 @@ const { Project } = require("../models");
let data;

beforeAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

describe("/api/projects", () => {
Expand Down Expand Up @@ -347,8 +346,7 @@ describe("/api/projects", () => {
};
});
afterAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

test("Should create project (app admin)", async () => {
Expand Down Expand Up @@ -441,8 +439,7 @@ describe("/api/projects", () => {

describe("PUT /:id", () => {
beforeEach(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});
test("Admin should be able to update project name", async () => {
const response = await request(app)
Expand Down
18 changes: 6 additions & 12 deletions packages/nota-server/src/routes/tasks.test.js
Expand Up @@ -12,8 +12,7 @@ const taskExportService = require("../services/taskExportService");
let data;

beforeAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

describe("/api/projects/:projectId/tasks", () => {
Expand Down Expand Up @@ -375,8 +374,7 @@ describe("/api/projects/:projectId/tasks", () => {
};
});
afterAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

test("Should queue task creation job (super admin)", async () => {
Expand Down Expand Up @@ -536,8 +534,7 @@ describe("/api/projects/:projectId/tasks", () => {
});
describe("PUT /:id", () => {
afterAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

test("Should be able to update name/description/status (super admin)", async () => {
Expand Down Expand Up @@ -768,8 +765,7 @@ describe("/api/projects/:projectId/tasks", () => {
});
describe("DELETE /:id", () => {
afterAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

test("Should be able to delete task (super admin)", async () => {
Expand Down Expand Up @@ -924,8 +920,7 @@ describe("/api/projects/:projectId/tasks", () => {
});
describe("POST /:id/refreshTaskItems", () => {
afterAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

test("Should queue task refresh job (super admin)", async () => {
Expand Down Expand Up @@ -1064,8 +1059,7 @@ describe("/api/projects/:projectId/tasks", () => {

describe("POST /:id/export", () => {
afterAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

test("Should queue task export job (super admin)", async () => {
Expand Down
3 changes: 1 addition & 2 deletions packages/nota-server/src/routes/templates.test.js
Expand Up @@ -8,8 +8,7 @@ const { TaskTemplate } = require("../models");
let data;

beforeAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
});

describe("/api/projects/:projectId/templates", () => {
Expand Down
3 changes: 1 addition & 2 deletions packages/nota-server/src/services/mediaSourceFetch.test.js
Expand Up @@ -34,8 +34,7 @@ const createMediaSource = async function() {
};

beforeAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
// @ts-ignore
ds()._resetFilesForTest();
mediaSource = await createMediaSource();
Expand Down
3 changes: 1 addition & 2 deletions packages/nota-server/src/services/taskInitialize.test.js
Expand Up @@ -25,8 +25,7 @@ const createTask = async function({
};

beforeAll(async () => {
await db.resetTestDb();
data = await db.generateTestData();
data = await db.resetTestDb();
// @ts-ignore
ds()._resetFilesForTest();
mediaSource = await db.createMediaSource({
Expand Down
5 changes: 5 additions & 0 deletions packages/nota-server/testGlobalSetup.js
@@ -0,0 +1,5 @@
const { db } = require("./src/lib/testUtils");

module.exports = async () => {
await db.setupDb();
};

0 comments on commit 7111fb7

Please sign in to comment.