From aa1c031b7b5cde240bdc60ab980d08a2a20af6ff Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 25 May 2023 14:51:49 +0200 Subject: [PATCH] backend-app-api: added tests for plugin and module duplication Signed-off-by: Patrik Oldsberg --- .../src/wiring/BackendInitializer.test.ts | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts index a8b302b905..b05194f594 100644 --- a/packages/backend-app-api/src/wiring/BackendInitializer.test.ts +++ b/packages/backend-app-api/src/wiring/BackendInitializer.test.ts @@ -115,4 +115,64 @@ describe('BackendInitializer', () => { "Module 'mod' for plugin 'test' startup failed; caused by Error: NOPE", ); }); + + it('should reject duplicate plugins', async () => { + const init = new BackendInitializer(new ServiceRegistry([])); + init.add( + createBackendPlugin({ + pluginId: 'test', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + })(), + ); + init.add( + createBackendPlugin({ + pluginId: 'test', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + })(), + ); + await expect(init.start()).rejects.toThrow( + "Plugin 'test' is already registered", + ); + }); + + it('should reject duplicate modules', async () => { + const init = new BackendInitializer(new ServiceRegistry([])); + init.add( + createBackendModule({ + pluginId: 'test', + moduleId: 'mod', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + })(), + ); + init.add( + createBackendModule({ + pluginId: 'test', + moduleId: 'mod', + register(reg) { + reg.registerInit({ + deps: {}, + async init() {}, + }); + }, + })(), + ); + await expect(init.start()).rejects.toThrow( + "Module 'mod' for plugin 'test' is already registered", + ); + }); });