fixed format issues
This commit is contained in:
parent
a700818a06
commit
08f713d98b
55 changed files with 5680 additions and 5533 deletions
|
|
@ -1,7 +1,7 @@
|
|||
import { describe, it, expect, beforeEach, afterEach, mock } from 'bun:test';
|
||||
import { afterEach, beforeEach, describe, expect, it, mock } from 'bun:test';
|
||||
import type { BaseAppConfig } from '@stock-bot/config';
|
||||
import { ServiceApplication } from '../src/service-application';
|
||||
import type { ServiceApplicationConfig, ServiceLifecycleHooks } from '../src/service-application';
|
||||
import type { BaseAppConfig } from '@stock-bot/config';
|
||||
|
||||
// Mock logger module
|
||||
const mockLogger = {
|
||||
|
|
@ -18,7 +18,7 @@ mock.module('@stock-bot/logger', () => ({
|
|||
shutdownLoggers: mock(() => Promise.resolve()),
|
||||
}));
|
||||
|
||||
// Mock shutdown module
|
||||
// Mock shutdown module
|
||||
const mockShutdownInstance = {
|
||||
onShutdown: mock(() => {}),
|
||||
onShutdownHigh: mock(() => {}),
|
||||
|
|
@ -89,7 +89,7 @@ describe.skip('ServiceApplication', () => {
|
|||
mockShutdownInstance.registerAsync.mockReset();
|
||||
mockShutdownInstance.handleTermination.mockReset();
|
||||
mockShutdownInstance.executeCallbacks.mockReset();
|
||||
|
||||
|
||||
// Clean up app if it exists
|
||||
if (app) {
|
||||
app.stop().catch(() => {});
|
||||
|
|
@ -193,7 +193,6 @@ describe.skip('ServiceApplication', () => {
|
|||
app = new ServiceApplication(configWithoutServiceName as any, serviceConfig);
|
||||
expect(app).toBeDefined();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('start method', () => {
|
||||
|
|
@ -228,7 +227,7 @@ describe.skip('ServiceApplication', () => {
|
|||
const { Hono } = require('hono');
|
||||
const routes = new Hono();
|
||||
// Add a simple test route
|
||||
routes.get('/test', (c) => c.json({ test: true }));
|
||||
routes.get('/test', c => c.json({ test: true }));
|
||||
return routes;
|
||||
});
|
||||
const mockHandlerInitializer = mock(() => Promise.resolve());
|
||||
|
|
@ -240,12 +239,14 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig);
|
||||
|
||||
|
||||
await app.start(mockContainerFactory, mockRouteFactory);
|
||||
|
||||
expect(mockContainerFactory).toHaveBeenCalledWith(expect.objectContaining({
|
||||
service: expect.objectContaining({ serviceName: 'test-service' }),
|
||||
}));
|
||||
expect(mockContainerFactory).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
service: expect.objectContaining({ serviceName: 'test-service' }),
|
||||
})
|
||||
);
|
||||
expect(mockRouteFactory).toHaveBeenCalledWith({ test: 'container' });
|
||||
expect(mockLogger.info).toHaveBeenCalledWith('test-service service started on port 3000');
|
||||
});
|
||||
|
|
@ -257,13 +258,15 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig);
|
||||
|
||||
|
||||
await app.start(mockContainerFactory, mockRouteFactory, mockHandlerInitializer);
|
||||
|
||||
expect(mockHandlerInitializer).toHaveBeenCalledWith(expect.objectContaining({
|
||||
test: 'container',
|
||||
_diContainer: mockContainer,
|
||||
}));
|
||||
expect(mockHandlerInitializer).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
test: 'container',
|
||||
_diContainer: mockContainer,
|
||||
})
|
||||
);
|
||||
expect(mockLogger.info).toHaveBeenCalledWith('Handlers initialized');
|
||||
});
|
||||
|
||||
|
|
@ -280,7 +283,7 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig, hooks);
|
||||
|
||||
|
||||
await app.start(mockContainerFactory, mockRouteFactory);
|
||||
|
||||
expect(hooks.onContainerReady).toHaveBeenCalledWith({ test: 'container' });
|
||||
|
|
@ -299,8 +302,10 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig);
|
||||
|
||||
await expect(app.start(errorFactory, mockRouteFactory)).rejects.toThrow('Container creation failed');
|
||||
|
||||
await expect(app.start(errorFactory, mockRouteFactory)).rejects.toThrow(
|
||||
'Container creation failed'
|
||||
);
|
||||
expect(mockLogger.error).toHaveBeenCalledWith('DETAILED ERROR:', expect.any(Error));
|
||||
});
|
||||
|
||||
|
|
@ -311,17 +316,23 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
const mockHandlerRegistry = {
|
||||
getAllHandlersWithSchedule: () => new Map([
|
||||
['testHandler', {
|
||||
scheduledJobs: [{
|
||||
operation: 'processData',
|
||||
cronPattern: '0 * * * *',
|
||||
priority: 5,
|
||||
immediately: false,
|
||||
payload: { test: true },
|
||||
}],
|
||||
}],
|
||||
]),
|
||||
getAllHandlersWithSchedule: () =>
|
||||
new Map([
|
||||
[
|
||||
'testHandler',
|
||||
{
|
||||
scheduledJobs: [
|
||||
{
|
||||
operation: 'processData',
|
||||
cronPattern: '0 * * * *',
|
||||
priority: 5,
|
||||
immediately: false,
|
||||
payload: { test: true },
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
]),
|
||||
getHandlerService: () => 'test-service',
|
||||
getHandlerNames: () => ['testHandler'],
|
||||
getOperation: () => ({ name: 'processData' }),
|
||||
|
|
@ -339,9 +350,15 @@ describe.skip('ServiceApplication', () => {
|
|||
|
||||
const containerWithJobs = {
|
||||
resolve: mock((name: string) => {
|
||||
if (name === 'serviceContainer') {return { test: 'container' };}
|
||||
if (name === 'handlerRegistry') {return mockHandlerRegistry;}
|
||||
if (name === 'queueManager') {return mockQueueManager;}
|
||||
if (name === 'serviceContainer') {
|
||||
return { test: 'container' };
|
||||
}
|
||||
if (name === 'handlerRegistry') {
|
||||
return mockHandlerRegistry;
|
||||
}
|
||||
if (name === 'queueManager') {
|
||||
return mockQueueManager;
|
||||
}
|
||||
return null;
|
||||
}),
|
||||
};
|
||||
|
|
@ -349,7 +366,7 @@ describe.skip('ServiceApplication', () => {
|
|||
const jobContainerFactory = mock(async () => containerWithJobs);
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig);
|
||||
|
||||
|
||||
await app.start(jobContainerFactory, mockRouteFactory);
|
||||
|
||||
expect(mockQueueManager.getQueue).toHaveBeenCalledWith('testHandler', {
|
||||
|
|
@ -359,7 +376,7 @@ describe.skip('ServiceApplication', () => {
|
|||
'processData',
|
||||
{ handler: 'testHandler', operation: 'processData', payload: { test: true } },
|
||||
'0 * * * *',
|
||||
expect.objectContaining({ priority: 5, repeat: { immediately: false } }),
|
||||
expect.objectContaining({ priority: 5, repeat: { immediately: false } })
|
||||
);
|
||||
expect(mockQueueManager.startAllWorkers).toHaveBeenCalled();
|
||||
expect(mockLogger.info).toHaveBeenCalledWith('Scheduled jobs created', { totalJobs: 1 });
|
||||
|
|
@ -386,7 +403,7 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig);
|
||||
|
||||
|
||||
await app.stop();
|
||||
|
||||
expect(mockShutdownInstance.shutdown).toHaveBeenCalled();
|
||||
|
|
@ -401,7 +418,7 @@ describe.skip('ServiceApplication', () => {
|
|||
};
|
||||
|
||||
app = new ServiceApplication(mockConfig, serviceConfig);
|
||||
|
||||
|
||||
// Before start
|
||||
expect(app.getServiceContainer()).toBeNull();
|
||||
expect(app.getApp()).toBeNull();
|
||||
|
|
@ -451,18 +468,30 @@ describe.skip('ServiceApplication', () => {
|
|||
|
||||
const mockContainer = {
|
||||
resolve: mock((name: string) => {
|
||||
if (name === 'serviceContainer') {return { test: 'container' };}
|
||||
if (name === 'handlerRegistry') {return {
|
||||
getAllHandlersWithSchedule: () => new Map(),
|
||||
getHandlerNames: () => [],
|
||||
};}
|
||||
if (name === 'queueManager') {return {
|
||||
shutdown: mock(() => Promise.resolve()),
|
||||
startAllWorkers: mock(() => {}),
|
||||
};}
|
||||
if (name === 'mongoClient') {return { disconnect: mock(() => Promise.resolve()) };}
|
||||
if (name === 'postgresClient') {return { disconnect: mock(() => Promise.resolve()) };}
|
||||
if (name === 'questdbClient') {return { disconnect: mock(() => Promise.resolve()) };}
|
||||
if (name === 'serviceContainer') {
|
||||
return { test: 'container' };
|
||||
}
|
||||
if (name === 'handlerRegistry') {
|
||||
return {
|
||||
getAllHandlersWithSchedule: () => new Map(),
|
||||
getHandlerNames: () => [],
|
||||
};
|
||||
}
|
||||
if (name === 'queueManager') {
|
||||
return {
|
||||
shutdown: mock(() => Promise.resolve()),
|
||||
startAllWorkers: mock(() => {}),
|
||||
};
|
||||
}
|
||||
if (name === 'mongoClient') {
|
||||
return { disconnect: mock(() => Promise.resolve()) };
|
||||
}
|
||||
if (name === 'postgresClient') {
|
||||
return { disconnect: mock(() => Promise.resolve()) };
|
||||
}
|
||||
if (name === 'questdbClient') {
|
||||
return { disconnect: mock(() => Promise.resolve()) };
|
||||
}
|
||||
return null;
|
||||
}),
|
||||
};
|
||||
|
|
@ -486,7 +515,7 @@ describe.skip('ServiceApplication', () => {
|
|||
await highHandlers[0][0]();
|
||||
expect(mockContainer.resolve).toHaveBeenCalledWith('queueManager');
|
||||
|
||||
// Execute services shutdown handler
|
||||
// Execute services shutdown handler
|
||||
await mediumHandlers[0][0]();
|
||||
expect(mockContainer.resolve).toHaveBeenCalledWith('mongoClient');
|
||||
expect(mockContainer.resolve).toHaveBeenCalledWith('postgresClient');
|
||||
|
|
@ -566,4 +595,4 @@ describe.skip('ServiceApplication', () => {
|
|||
expect(response.status).toBe(404);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue