fix: rollback in-memory key on store failure, add corrupted-data and rollback tests

This commit is contained in:
2026-03-01 13:20:16 +01:00
parent 226c9193d6
commit 4bd7e6cd99
4 changed files with 70 additions and 11 deletions

View File

@@ -778,19 +778,34 @@ describe('ChatEngine', () => {
describe('deleteSetting', () => {
it('should delete a setting by key', async () => {
let capturedTable: any;
let capturedPredicate: any;
vi.mocked(mockLocalDb.delete).mockImplementation(() => ({
where: vi.fn((predicate) => {
capturedPredicate = predicate;
return Promise.resolve();
}),
} as any));
vi.mocked(mockLocalDb.delete).mockImplementation((table: any) => {
capturedTable = table;
return {
where: vi.fn((predicate) => {
capturedPredicate = predicate;
return Promise.resolve();
}),
} as any;
});
await chatEngine.deleteSetting('opencode_api_key');
expect(mockLocalDb.delete).toHaveBeenCalled();
expect(mockLocalDb.delete).toHaveBeenCalledTimes(1);
// Verify the correct table was targeted
expect(capturedTable).toBeDefined();
// Verify a where predicate was passed
expect(capturedPredicate).toBeDefined();
});
it('should not throw for nonexistent keys', async () => {
vi.mocked(mockLocalDb.delete).mockImplementation(() => ({
where: vi.fn(() => Promise.resolve()),
} as any));
await expect(chatEngine.deleteSetting('nonexistent_key')).resolves.not.toThrow();
});
});
describe('setSelectedModel', () => {