fix: tighten pulled note refresh flow

This commit is contained in:
lucaronin
2026-04-20 14:43:52 +02:00
parent 503e482c7d
commit 0020ade6d7
11 changed files with 612 additions and 173 deletions

View File

@@ -75,12 +75,47 @@ describe('useAutoSync', () => {
const { result } = renderSync()
await waitFor(() => {
expect(onVaultUpdated).toHaveBeenCalled()
expect(onVaultUpdated).toHaveBeenCalledWith(['note.md', 'project/plan.md'])
expect(onToast).toHaveBeenCalledWith('Pulled 2 update(s) from remote')
expect(result.current.syncStatus).toBe('idle')
})
})
it('waits for vault refresh before showing the updated toast', async () => {
let releaseVaultRefresh: (() => void) | null = null
const asyncVaultRefresh = vi.fn(() => new Promise<void>((resolve) => {
releaseVaultRefresh = resolve
}))
mockInvokeFn.mockImplementation((cmd: string) => {
if (cmd === 'get_last_commit_info') return Promise.resolve(MOCK_COMMIT_INFO)
return Promise.resolve(updated(['note.md']))
})
renderHook(() =>
useAutoSync({
vaultPath: '/Users/luca/Laputa',
intervalMinutes: 5,
onVaultUpdated: asyncVaultRefresh,
onConflict,
onToast,
}),
)
await waitFor(() => {
expect(asyncVaultRefresh).toHaveBeenCalledWith(['note.md'])
})
expect(onToast).not.toHaveBeenCalledWith('Pulled 1 update(s) from remote')
await act(async () => {
releaseVaultRefresh?.()
})
await waitFor(() => {
expect(onToast).toHaveBeenCalledWith('Pulled 1 update(s) from remote')
})
})
it('calls onConflict and sets conflict status when pull has conflicts', async () => {
mockInvokeFn.mockImplementation((cmd: string) => {
if (cmd === 'get_last_commit_info') return Promise.resolve(MOCK_COMMIT_INFO)