|
1 | 1 | import test from "ava"; |
2 | 2 | import sinon from "sinon"; |
3 | | -import {createRequire} from "node:module"; |
4 | 3 | import esmock from "esmock"; |
5 | 4 |
|
6 | | -// Using CommonsJS require as importing json files causes an ExperimentalWarning |
7 | | -const require = createRequire(import.meta.url); |
8 | | -const packageJson = require("../../../package.json"); |
9 | | - |
10 | 5 | const sampleJS = `sap.ui.define([ |
11 | 6 | "sap/ui/core/mvc/Controller", |
12 | 7 | "sap/m/MessageToast" |
@@ -49,21 +44,30 @@ const middlewareUtil = { |
49 | 44 | }; |
50 | 45 |
|
51 | 46 | test.beforeEach(async (t) => { |
52 | | - t.context.instrumenterMiddleware = await esmock("../../../lib/middleware.js"); |
| 47 | + t.context.readJsonFile = sinon.stub().resolves({version: "0.0.0-test"}); |
| 48 | + t.context.instrumenterMiddleware = await esmock("../../../lib/middleware.js", { |
| 49 | + "../../../lib/util.js": { |
| 50 | + readJsonFile: t.context.readJsonFile |
| 51 | + } |
| 52 | + }); |
53 | 53 | }); |
54 | 54 |
|
55 | 55 | test("Ping request", async (t) => { |
56 | | - const {instrumenterMiddleware} = t.context; |
| 56 | + const {instrumenterMiddleware, readJsonFile} = t.context; |
57 | 57 | const middleware = await instrumenterMiddleware({resources}); |
58 | 58 |
|
59 | | - t.plan(3); |
| 59 | + t.plan(6); |
| 60 | + |
| 61 | + t.is(readJsonFile.callCount, 1, "package.json should be read once during middleware initialization"); |
| 62 | + t.deepEqual(readJsonFile.getCall(0).args, [new URL("../../../package.json", import.meta.url)]); |
60 | 63 |
|
61 | 64 | await new Promise((resolve) => { |
62 | 65 | const res = { |
63 | 66 | json: function(body) { |
64 | 67 | t.is(Object.keys(body).length, 1); |
65 | 68 | t.is(Object.keys(body)[0], "version"); |
66 | | - t.is(body.version, packageJson.version, "The version is returned"); |
| 69 | + t.is(body.version, "0.0.0-test", "The version is returned"); |
| 70 | + t.is(readJsonFile.callCount, 1, "package.json should not be read again per request"); |
67 | 71 | resolve(); |
68 | 72 | } |
69 | 73 | }; |
|
0 commit comments