mirror of
https://github.com/vector-im/element-web.git
synced 2026-05-04 11:51:36 +02:00
Iterate
This commit is contained in:
parent
0a2f311cc8
commit
8d05c5329e
@ -7,15 +7,14 @@ Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { expect, test } from "vitest";
|
||||
|
||||
import { Api, isModule } from "./api.js";
|
||||
import { Api } from ".";
|
||||
import { isModule } from "./api.js";
|
||||
|
||||
const TestModule = {
|
||||
default: class TestModule {
|
||||
public static moduleApiVersion = "1.0.0";
|
||||
public constructor(private readonly api: Api) {}
|
||||
public async load(): Promise<void> {
|
||||
console.log("TestModule loaded");
|
||||
}
|
||||
public async load(): Promise<void> {}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
58
packages/element-web-module-api/src/loader.spec.ts
Normal file
58
packages/element-web-module-api/src/loader.spec.ts
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
Copyright 2025 New Vector Ltd.
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
import { expect, test, describe, vi, beforeEach, afterEach } from "vitest";
|
||||
|
||||
import { Api, ModuleIncompatibleError, ModuleLoader } from ".";
|
||||
|
||||
describe("ModuleIncompatibleError", () => {
|
||||
test("should extend Error", () => {
|
||||
expect(new ModuleIncompatibleError("1.0.0")).toBeInstanceOf(Error);
|
||||
});
|
||||
});
|
||||
|
||||
describe("ModuleLoader", () => {
|
||||
const mockApi = {} as Api;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.stubGlobal("__VERSION__", "1.0.1");
|
||||
});
|
||||
|
||||
test("should load a module", async () => {
|
||||
const TestModule = {
|
||||
default: class TestModule {
|
||||
public static moduleApiVersion = "^1.0.0";
|
||||
public constructor(private readonly api: Api) {}
|
||||
public async load(): Promise<void> {}
|
||||
},
|
||||
};
|
||||
|
||||
const spy = vi.spyOn(TestModule.default.prototype, "load");
|
||||
|
||||
const loader = new ModuleLoader(mockApi);
|
||||
await loader.load(TestModule);
|
||||
await loader.start();
|
||||
expect(spy).toHaveBeenCalledWith();
|
||||
});
|
||||
|
||||
test("should fail to load an incompatible module", async () => {
|
||||
const TestModule = {
|
||||
default: class TestModule {
|
||||
public static moduleApiVersion = "^2";
|
||||
public constructor(private readonly api: Api) {}
|
||||
public async load(): Promise<void> {}
|
||||
},
|
||||
};
|
||||
|
||||
const spy = vi.spyOn(TestModule.default.prototype, "load");
|
||||
|
||||
const loader = new ModuleLoader(mockApi);
|
||||
await expect(loader.load(TestModule)).rejects.toThrowError(ModuleIncompatibleError);
|
||||
await loader.start();
|
||||
expect(spy).not.toHaveBeenCalledWith();
|
||||
});
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user