From 8a05b65ff39e30f4c5b4f4a1c7b7ef08b0451f2c Mon Sep 17 00:00:00 2001 From: KernelDeimos <7225168+KernelDeimos@users.noreply.github.com> Date: Mon, 24 Nov 2025 21:46:22 -0500 Subject: [PATCH] dev(test): enable use of TestKernel in unit tests --- src/backend/src/services/TestService.js | 12 ++++++ src/backend/src/services/TestService.test.mts | 37 +++++++++++++++++++ src/backend/tools/test.mjs | 8 +++- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/backend/src/services/TestService.js create mode 100644 src/backend/src/services/TestService.test.mts diff --git a/src/backend/src/services/TestService.js b/src/backend/src/services/TestService.js new file mode 100644 index 000000000..3ead9a358 --- /dev/null +++ b/src/backend/src/services/TestService.js @@ -0,0 +1,12 @@ +const BaseService = require('./BaseService'); + +/** + * TestService is a service for testing in the sense that it is a service + * that exists for the purpose of being testing or to be used for testing + * purposes. However, TestService is not a service that's meant to hold + * utility functions for testing. + */ +class TestService extends BaseService { +} + +module.exports = { TestService }; diff --git a/src/backend/src/services/TestService.test.mts b/src/backend/src/services/TestService.test.mts new file mode 100644 index 000000000..bcbd4fba4 --- /dev/null +++ b/src/backend/src/services/TestService.test.mts @@ -0,0 +1,37 @@ +import { describe, expect, it } from 'vitest'; +import { TestKernel } from '../../tools/test.js'; +import { Core2Module } from '../modules/core/Core2Module.js'; +import { WebModule } from '../modules/web/WebModule.js'; +import { TestService } from './TestService.js'; + +describe('testing with TestKernel', () => { + it('can load TestService within TestKernel', () => { + const testKernel = new TestKernel(); + testKernel.add_module({ + install: (context) => { + const services = context.get('services'); + services.registerService('test', TestService); + }, + }); + + testKernel.boot(); + + const svc_test = testKernel.services?.get('test'); + + expect(svc_test).toBeInstanceOf(TestService); + }); + it('can load CoreModule within TestKernel', async () => { + const testKernel = new TestKernel(); + testKernel.add_module(new Core2Module()); + testKernel.add_module(new WebModule()); + testKernel.boot(); + + const { services } = testKernel; + await services.ready; + + const svc_webServer = services?.get('web-server'); + + expect(svc_webServer.constructor.name).toBe('WebServerService'); + }); +}); + diff --git a/src/backend/tools/test.mjs b/src/backend/tools/test.mjs index 62ef89439..4032737ed 100644 --- a/src/backend/tools/test.mjs +++ b/src/backend/tools/test.mjs @@ -264,4 +264,10 @@ const main = async () => { process.exit(total_failed ? 1 : 0); }; -main(); +if ( require.main === module ) { + main(); +} + +module.exports = { + TestKernel, +};