Skip to content

Commit

Permalink
get native module mocking working (opt-in via CLI flag)
Browse files Browse the repository at this point in the history
  • Loading branch information
HugoDF committed Jul 28, 2024
1 parent 65c90cd commit 6ea7a4d
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 24 deletions.
13 changes: 7 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 7 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@
"private": true,
"type": "module",
"scripts": {
"test": "node --test ./src/*.test.js",
"dev": "node --test --watch ./src/*.test.js",
"test": "node --test --experimental-test-module-mocks ./src/*.test.js",
"dev": "node --test --watch --experimental-test-module-mocks ./src/*.test.js",
"test:all": "npm run test:coverage && npm run test:only && npm run test:seq && npm run test:par",
"test:coverage": "node --test --experimental-test-coverage ./src/*.test.js",
"test:coverage:file": "node --test --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info ./src/*.test.js",
"test:coverage": "node --test --experimental-test-coverage --experimental-test-module-mocks ./src/*.test.js",
"test:coverage:file": "node --test --experimental-test-coverage --experimental-test-module-mocks --test-reporter=lcov --test-reporter-destination=lcov.info ./src/*.test.js",
"report:html": "npx @lcov-viewer/cli lcov -o ./coverage ./lcov.info",
"test:seq": "node --test --test-concurrency=1 ./src/*.test.js",
"test:par": "node --test --test-concurrency=5 ./src/*.test.js",
"test:seq": "node --test --test-concurrency=1 --experimental-test-module-mocks ./src/*.test.js",
"test:par": "node --test --test-concurrency=5 --experimental-test-module-mocks ./src/*.test.js",
"test:only": "node --test --test-only src/*.only.js",
"test:failing": "node --test src/*.failing.js && echo 'Error: test run should fail' && exit 1 || echo 'Success: test run failed as expected' && exit 0",
"lint": "biome lint --apply ./src",
"format": "biome format --write ."
},
"license": "MIT",
"dependencies": {
"@types/node": "20.14.12",
"axios": "1.6.8",
"bcrypt": "5.1.1",
"express": "4.19.2",
Expand Down
30 changes: 18 additions & 12 deletions src/02.04-model-mock-native.test.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,32 @@
import { describe, test, mock, before } from "node:test";
import { describe, test, mock, before, after } from "node:test";
import assert from "node:assert/strict";

let Model;
/**
* mock.module() was added in 22.3.0
*/
const isNode22Point3OrLower = (() => {
const [major, minor, _patch] = process.versions.node.split(".");
return !(parseInt(major, 10) >= 22 && parseInt(minor, 10) >= 3);
})();
describe('Class extends Mock - native', {skip: isNode22Point3OrLower }, () => {
test("It should not throw when passed a model containing an empty list of meetings", async () => {
mock.module('sequelize', {

let Model;
/** @type {ReturnType<typeof mock['module']>}*/
let modelMock;
describe("Class extends Mock - native", { skip: isNode22Point3OrLower }, () => {
before(async () => {
modelMock = mock.module("sequelize", {
namedExports: {
Model: class { }
}
Model: class {},
},
});

const { default: _model } = await import(`./02.04-model.js?ts=${Date.now()}`);
Model = _model;

const { default: model } = await import("./02.04-model.js");
Model = model;
});
after(() => {
modelMock.restore();
});
test("It should not throw when passed a model containing an empty list of meetings", async (t) => {
const model = new Model();
model.meetings = [];
assert.doesNotThrow(model.isAvailable.bind(model, new Date(Date.now())));
Expand All @@ -31,5 +38,4 @@ describe('Class extends Mock - native', {skip: isNode22Point3OrLower }, () => {
});
assert.doesNotThrow(model.isAvailable.bind(model, new Date(Date.now())));
});

})
});

0 comments on commit 6ea7a4d

Please sign in to comment.