feat(v030): settings.sync_repo_url + sync_auto_enabled + sync_interval_min
- zod schema 확장: sync_repo_url (nullable), sync_auto_enabled (default true), sync_interval_min (int >= 5, default 30) - getter/setter 6개 추가 (기존 ai_enabled / onboarding_completed 패턴) - setSyncIntervalMin 은 non-integer / < 5 reject
This commit is contained in:
@@ -54,4 +54,40 @@ describe('SettingsService', () => {
|
||||
expect(existsSync(join(dir, 'settings.json.tmp'))).toBe(false);
|
||||
expect(existsSync(join(dir, 'settings.json'))).toBe(true);
|
||||
});
|
||||
|
||||
describe('v0.3.0 Cut E — sync settings', () => {
|
||||
it('getSyncRepoUrl() defaults to null', async () => {
|
||||
expect(await svc.getSyncRepoUrl()).toBeNull();
|
||||
});
|
||||
|
||||
it('setSyncRepoUrl() / getSyncRepoUrl() round-trip', async () => {
|
||||
await svc.setSyncRepoUrl('git@gitea.example:user/notes.git');
|
||||
expect(await svc.getSyncRepoUrl()).toBe('git@gitea.example:user/notes.git');
|
||||
// setting null clears
|
||||
await svc.setSyncRepoUrl(null);
|
||||
expect(await svc.getSyncRepoUrl()).toBeNull();
|
||||
});
|
||||
|
||||
it('isAutoSyncEnabled() defaults to true', async () => {
|
||||
expect(await svc.isAutoSyncEnabled()).toBe(true);
|
||||
});
|
||||
|
||||
it('setAutoSyncEnabled() persists', async () => {
|
||||
await svc.setAutoSyncEnabled(false);
|
||||
expect(await svc.isAutoSyncEnabled()).toBe(false);
|
||||
await svc.setAutoSyncEnabled(true);
|
||||
expect(await svc.isAutoSyncEnabled()).toBe(true);
|
||||
});
|
||||
|
||||
it('getSyncIntervalMin() defaults to 30', async () => {
|
||||
expect(await svc.getSyncIntervalMin()).toBe(30);
|
||||
});
|
||||
|
||||
it('setSyncIntervalMin() persists + rejects values < 5 / non-integer', async () => {
|
||||
await svc.setSyncIntervalMin(15);
|
||||
expect(await svc.getSyncIntervalMin()).toBe(15);
|
||||
await expect(svc.setSyncIntervalMin(3)).rejects.toThrow();
|
||||
await expect(svc.setSyncIntervalMin(10.5)).rejects.toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user