mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 21:46:49 +00:00
test(server): close slice-4 gaps surfaced by the full tier
This commit is contained in:
@@ -461,6 +461,25 @@ describe('hardening', () => {
|
||||
expect(testDb.prepare('SELECT COUNT(*) as c FROM collab_notes WHERE id = ?').get(note.id)).toEqual({ c: 1 });
|
||||
});
|
||||
|
||||
it('COLLAB-SVC-036: a failing storage delete is swallowed — note + file deletes still succeed', async () => {
|
||||
const { user1, trip } = setup();
|
||||
const dbs = new DatabaseService(testDb);
|
||||
const failingStorage = { delete: vi.fn().mockRejectedValue(new Error('EACCES')) };
|
||||
const failing = new CollabService(dbs, new PermissionsService(dbs), new RealtimeService(), notificationsStub(), failingStorage as unknown as import('../../../src/nest/storage/storage.service').StorageService);
|
||||
const note = failing.createNote(trip.id, user1.id, { title: 'Sticky file' });
|
||||
testDb.prepare('INSERT INTO trip_files (trip_id, note_id, filename, original_name) VALUES (?, ?, ?, ?)')
|
||||
.run(trip.id, note.id, 'stuck.pdf', 'stuck.pdf');
|
||||
const fileId = (testDb.prepare('SELECT id FROM trip_files WHERE note_id = ?').get(note.id) as { id: number }).id;
|
||||
|
||||
expect(await failing.deleteNoteFile(trip.id, note.id, fileId)).toBe(true);
|
||||
expect(testDb.prepare('SELECT COUNT(*) as c FROM trip_files WHERE id = ?').get(fileId)).toEqual({ c: 0 });
|
||||
|
||||
testDb.prepare('INSERT INTO trip_files (trip_id, note_id, filename, original_name) VALUES (?, ?, ?, ?)')
|
||||
.run(trip.id, note.id, 'stuck2.pdf', 'stuck2.pdf');
|
||||
expect(await failing.deleteNote(trip.id, note.id)).toBe(true);
|
||||
expect(testDb.prepare('SELECT COUNT(*) as c FROM collab_notes WHERE id = ?').get(note.id)).toEqual({ c: 0 });
|
||||
});
|
||||
|
||||
it('COLLAB-SVC-036: getFormattedNoteById is trip-scoped and null-safe', () => {
|
||||
const { user1, trip } = setup();
|
||||
const otherTrip = createTrip(testDb, user1.id);
|
||||
|
||||
@@ -668,17 +668,17 @@ describe('creditLine', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('ENRICH-029: reads a stored credit back by cache key', () => {
|
||||
it('ENRICH-029: reads a stored credit back by cache key', async () => {
|
||||
const cache = cacheStub({
|
||||
get: vi.fn((key: string) =>
|
||||
key === 'ChIJmuseum~p0' ? { photoUrl: '/x', filePath: '/tmp/x', attribution: 'Alice · CC BY-SA 4.0' } : null,
|
||||
key === 'ChIJmuseum~p0' ? { photoUrl: '/x', attribution: 'Alice · CC BY-SA 4.0' } : null,
|
||||
),
|
||||
});
|
||||
const svc = make(mapsStub(), cache);
|
||||
|
||||
expect(svc.credit('ChIJmuseum~p0')).toEqual({ credit: 'Alice · CC BY-SA 4.0' });
|
||||
expect(await svc.credit('ChIJmuseum~p0')).toEqual({ credit: 'Alice · CC BY-SA 4.0' });
|
||||
// An uploaded image or a key that was swept has nothing to name.
|
||||
expect(svc.credit('unknown')).toEqual({ credit: null });
|
||||
expect(await svc.credit('unknown')).toEqual({ credit: null });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user