|
1 | 1 | const path = require("node:path"); |
2 | | -const { JSDOM } = require("jsdom"); |
| 2 | +const { pathToFileURL } = require("node:url"); |
3 | 3 |
|
4 | 4 | describe("File js/module (cloneObject)", () => { |
5 | 5 | describe("Test function cloneObject", () => { |
6 | 6 | let clone; |
7 | 7 | let Module; |
8 | | - let dom; |
9 | | - |
10 | | - beforeAll(() => { |
11 | | - return new Promise((done) => { |
12 | | - dom = new JSDOM( |
13 | | - `<script>var Log = {log: () => {}, info: () => {}, warn: () => {}, error: () => {}, debug: () => {}};</script>\ |
14 | | - <script src="file://${path.join(__dirname, "..", "..", "..", "js", "module.js")}">`, |
15 | | - { runScripts: "dangerously", resources: "usable" } |
16 | | - ); |
17 | | - dom.window.onload = () => { |
18 | | - const { cloneObject, Module: LoadedModule } = dom.window; |
19 | | - clone = cloneObject; |
20 | | - Module = LoadedModule; |
21 | | - done(); |
22 | | - }; |
23 | | - }); |
| 8 | + let originalWindow; |
| 9 | + let originalLog; |
| 10 | + let originalConfig; |
| 11 | + let originalMM; |
| 12 | + let originalTranslator; |
| 13 | + let originalNunjucks; |
| 14 | + |
| 15 | + beforeAll(async () => { |
| 16 | + originalWindow = global.window; |
| 17 | + originalLog = global.Log; |
| 18 | + originalConfig = global.config; |
| 19 | + originalMM = global.MM; |
| 20 | + originalTranslator = global.Translator; |
| 21 | + originalNunjucks = global.nunjucks; |
| 22 | + |
| 23 | + global.window = { mmVersion: "2.0.0" }; |
| 24 | + global.Log = { log: () => {}, info: () => {}, warn: () => {}, error: () => {}, debug: () => {} }; |
| 25 | + global.config = { language: "en" }; |
| 26 | + global.MM = { |
| 27 | + hideModule: () => {}, |
| 28 | + showModule: () => {}, |
| 29 | + sendNotification: () => {}, |
| 30 | + updateDom: () => {} |
| 31 | + }; |
| 32 | + global.Translator = { |
| 33 | + load: () => Promise.resolve(), |
| 34 | + translate: () => "" |
| 35 | + }; |
| 36 | + global.nunjucks = { |
| 37 | + Environment () { |
| 38 | + this.addFilter = () => {}; |
| 39 | + this.renderString = () => ""; |
| 40 | + this.render = (_template, _data, callback) => callback(null, ""); |
| 41 | + }, |
| 42 | + WebLoader () {}, |
| 43 | + runtime: { |
| 44 | + markSafe: (str) => str |
| 45 | + } |
| 46 | + }; |
| 47 | + |
| 48 | + const modulePath = pathToFileURL(path.join(__dirname, "..", "..", "..", "js", "module.js")).href; |
| 49 | + const loaded = await import(`${modulePath}?test=${Date.now()}`); |
| 50 | + |
| 51 | + clone = loaded.cloneObject; |
| 52 | + Module = loaded.Module; |
| 53 | + }); |
| 54 | + |
| 55 | + afterAll(() => { |
| 56 | + global.window = originalWindow; |
| 57 | + global.Log = originalLog; |
| 58 | + global.config = originalConfig; |
| 59 | + global.MM = originalMM; |
| 60 | + global.Translator = originalTranslator; |
| 61 | + global.nunjucks = originalNunjucks; |
24 | 62 | }); |
25 | 63 |
|
26 | 64 | it("should clone object", () => { |
@@ -137,11 +175,11 @@ describe("File js/module (cloneObject)", () => { |
137 | 175 | let info; |
138 | 176 |
|
139 | 177 | beforeEach(() => { |
140 | | - info = dom.window.Log.info; |
| 178 | + info = global.Log.info; |
141 | 179 | }); |
142 | 180 |
|
143 | 181 | afterEach(() => { |
144 | | - dom.window.Log.info = info; |
| 182 | + global.Log.info = info; |
145 | 183 | Module.definitions = {}; |
146 | 184 | }); |
147 | 185 |
|
@@ -181,7 +219,7 @@ describe("File js/module (cloneObject)", () => { |
181 | 219 | const moduleName = "MMM-TestSuperCall"; |
182 | 220 | let loggedMessage; |
183 | 221 |
|
184 | | - dom.window.Log.info = (message) => { |
| 222 | + global.Log.info = (message) => { |
185 | 223 | loggedMessage = message; |
186 | 224 | }; |
187 | 225 |
|
|
0 commit comments