test(workspace): harden service bootstrap and sync coverage

This commit is contained in:
root 2026-03-14 06:40:10 +00:00
parent 128207ac21
commit 7616901683
2 changed files with 14 additions and 2 deletions

View File

@ -76,6 +76,8 @@ describe('Sync Engine', () => {
const status = engine.getStatus();
expect(status.status).toBe('idle');
expect(status.queueLength).toBe(1);
expect(engine.getQueueLength()).toBe(1);
});
it('deduplicates items for same entity', async () => {
@ -91,6 +93,8 @@ describe('Sync Engine', () => {
await engine.push('tasks', { id: '1', title: 'Task 1' });
await engine.push('tasks', { id: '1', title: 'Task 1 Updated' });
expect(engine.getQueueLength()).toBe(1);
// Queue should have 1 item (deduplicated)
const result = await engine.fullSync();
expect(result.pushed).toBe(1);
@ -131,6 +135,8 @@ describe('Sync Engine', () => {
const result = await engine.fullSync();
expect(result.pushed).toBe(1);
expect(engine.getQueueLength()).toBe(0);
expect(engine.getStatus().lastSyncAt).toBeTruthy();
const requests = apiClient.getRequests();
expect(requests).toHaveLength(2); // Pull + Push
@ -148,6 +154,7 @@ describe('Sync Engine', () => {
const result = await engine.fullSync();
expect(result.pulled).toBe(0); // Mock returns empty
expect(engine.getStatus().lastSyncAt).toBeTruthy();
});
});
@ -164,6 +171,8 @@ describe('Sync Engine', () => {
const status = engine.getStatus();
expect(status.status).toBe('idle');
expect(status.queueLength).toBe(0);
expect(status.lastSyncAt).toBeUndefined();
});
it('notifies status changes', async () => {
@ -183,8 +192,7 @@ describe('Sync Engine', () => {
await engine.push('tasks', { title: 'Test' });
// Status changes during push
expect(statuses.length).toBeGreaterThanOrEqual(0);
expect(statuses).toContain('idle');
});
});
@ -201,7 +209,10 @@ describe('Sync Engine', () => {
await engine.push('tasks', { title: 'Task 1' });
await engine.push('tasks', { title: 'Task 2' });
expect(engine.getQueueLength()).toBe(2);
await engine.clearQueue();
expect(engine.getQueueLength()).toBe(0);
const result = await engine.fullSync();
expect(result.pushed).toBe(0);

View File

@ -8,6 +8,7 @@
"dev": "tsx watch src/server.ts",
"build": "tsc",
"start": "node dist/server.js",
"pretest": "corepack pnpm --dir ../.. --filter @bytelyst/auth --filter @bytelyst/blob --filter @bytelyst/storage --filter @bytelyst/config --filter @bytelyst/cosmos --filter @bytelyst/datastore --filter @bytelyst/errors --filter @bytelyst/events --filter @bytelyst/fastify-core build",
"test": "vitest run",
"test:watch": "vitest",
"lint": "eslint src/",