test(workspace): harden service bootstrap and sync coverage
This commit is contained in:
parent
128207ac21
commit
7616901683
@ -76,6 +76,8 @@ describe('Sync Engine', () => {
|
|||||||
|
|
||||||
const status = engine.getStatus();
|
const status = engine.getStatus();
|
||||||
expect(status.status).toBe('idle');
|
expect(status.status).toBe('idle');
|
||||||
|
expect(status.queueLength).toBe(1);
|
||||||
|
expect(engine.getQueueLength()).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('deduplicates items for same entity', async () => {
|
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' });
|
||||||
await engine.push('tasks', { id: '1', title: 'Task 1 Updated' });
|
await engine.push('tasks', { id: '1', title: 'Task 1 Updated' });
|
||||||
|
|
||||||
|
expect(engine.getQueueLength()).toBe(1);
|
||||||
|
|
||||||
// Queue should have 1 item (deduplicated)
|
// Queue should have 1 item (deduplicated)
|
||||||
const result = await engine.fullSync();
|
const result = await engine.fullSync();
|
||||||
expect(result.pushed).toBe(1);
|
expect(result.pushed).toBe(1);
|
||||||
@ -131,6 +135,8 @@ describe('Sync Engine', () => {
|
|||||||
const result = await engine.fullSync();
|
const result = await engine.fullSync();
|
||||||
|
|
||||||
expect(result.pushed).toBe(1);
|
expect(result.pushed).toBe(1);
|
||||||
|
expect(engine.getQueueLength()).toBe(0);
|
||||||
|
expect(engine.getStatus().lastSyncAt).toBeTruthy();
|
||||||
|
|
||||||
const requests = apiClient.getRequests();
|
const requests = apiClient.getRequests();
|
||||||
expect(requests).toHaveLength(2); // Pull + Push
|
expect(requests).toHaveLength(2); // Pull + Push
|
||||||
@ -148,6 +154,7 @@ describe('Sync Engine', () => {
|
|||||||
|
|
||||||
const result = await engine.fullSync();
|
const result = await engine.fullSync();
|
||||||
expect(result.pulled).toBe(0); // Mock returns empty
|
expect(result.pulled).toBe(0); // Mock returns empty
|
||||||
|
expect(engine.getStatus().lastSyncAt).toBeTruthy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -164,6 +171,8 @@ describe('Sync Engine', () => {
|
|||||||
|
|
||||||
const status = engine.getStatus();
|
const status = engine.getStatus();
|
||||||
expect(status.status).toBe('idle');
|
expect(status.status).toBe('idle');
|
||||||
|
expect(status.queueLength).toBe(0);
|
||||||
|
expect(status.lastSyncAt).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('notifies status changes', async () => {
|
it('notifies status changes', async () => {
|
||||||
@ -183,8 +192,7 @@ describe('Sync Engine', () => {
|
|||||||
|
|
||||||
await engine.push('tasks', { title: 'Test' });
|
await engine.push('tasks', { title: 'Test' });
|
||||||
|
|
||||||
// Status changes during push
|
expect(statuses).toContain('idle');
|
||||||
expect(statuses.length).toBeGreaterThanOrEqual(0);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -201,7 +209,10 @@ describe('Sync Engine', () => {
|
|||||||
|
|
||||||
await engine.push('tasks', { title: 'Task 1' });
|
await engine.push('tasks', { title: 'Task 1' });
|
||||||
await engine.push('tasks', { title: 'Task 2' });
|
await engine.push('tasks', { title: 'Task 2' });
|
||||||
|
expect(engine.getQueueLength()).toBe(2);
|
||||||
|
|
||||||
await engine.clearQueue();
|
await engine.clearQueue();
|
||||||
|
expect(engine.getQueueLength()).toBe(0);
|
||||||
|
|
||||||
const result = await engine.fullSync();
|
const result = await engine.fullSync();
|
||||||
expect(result.pushed).toBe(0);
|
expect(result.pushed).toBe(0);
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
"dev": "tsx watch src/server.ts",
|
"dev": "tsx watch src/server.ts",
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"start": "node dist/server.js",
|
"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": "vitest run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"lint": "eslint src/",
|
"lint": "eslint src/",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user