|
|
@@ -10,7 +10,7 @@ vi.mock('pg-dump-restore', () => ({
|
|
|
|
|
|
// Mock fs with importOriginal for partial mocking
|
|
|
vi.mock('fs', async (importOriginal) => {
|
|
|
- const actual = await importOriginal()
|
|
|
+ const actual = await importOriginal() as typeof import('fs')
|
|
|
return {
|
|
|
...actual,
|
|
|
promises: {
|
|
|
@@ -84,13 +84,13 @@ describe('DatabaseRestore', () => {
|
|
|
|
|
|
describe('findLatestBackup', () => {
|
|
|
it('应该返回最新的备份文件', async () => {
|
|
|
- const { readdir } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
|
|
|
- vi.mocked(readdir).mockResolvedValue([
|
|
|
+ vi.mocked(fs.promises.readdir).mockResolvedValue([
|
|
|
'backup-2024-01-01T00-00-00Z.dump',
|
|
|
'backup-2024-01-03T00-00-00Z.dump',
|
|
|
'backup-2024-01-02T00-00-00Z.dump',
|
|
|
- ])
|
|
|
+ ] as any)
|
|
|
|
|
|
const latest = await restore.findLatestBackup()
|
|
|
|
|
|
@@ -98,9 +98,11 @@ describe('DatabaseRestore', () => {
|
|
|
})
|
|
|
|
|
|
it('应该返回null当没有备份文件时', async () => {
|
|
|
- const { readdir } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
|
|
|
- vi.mocked(readdir).mockResolvedValue(['some-other-file.txt'])
|
|
|
+ vi.mocked(fs.promises.readdir).mockResolvedValue([
|
|
|
+ 'some-other-file.txt'
|
|
|
+ ] as any)
|
|
|
|
|
|
const latest = await restore.findLatestBackup()
|
|
|
|
|
|
@@ -108,10 +110,10 @@ describe('DatabaseRestore', () => {
|
|
|
})
|
|
|
|
|
|
it('应该在读取目录失败时返回null', async () => {
|
|
|
- const { readdir } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
const { logger } = await import('../logger')
|
|
|
|
|
|
- vi.mocked(readdir).mockRejectedValueOnce(new Error('读取目录失败'))
|
|
|
+ vi.mocked(fs.promises.readdir).mockRejectedValueOnce(new Error('读取目录失败'))
|
|
|
|
|
|
const latest = await restore.findLatestBackup()
|
|
|
|
|
|
@@ -122,13 +124,13 @@ describe('DatabaseRestore', () => {
|
|
|
|
|
|
describe('listBackups', () => {
|
|
|
it('应该返回所有备份文件列表', async () => {
|
|
|
- const { readdir } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
|
|
|
- vi.mocked(readdir).mockResolvedValue([
|
|
|
+ vi.mocked(fs.promises.readdir).mockResolvedValue([
|
|
|
'backup-2024-01-01.dump',
|
|
|
'some-other-file.txt',
|
|
|
'backup-2024-01-02.dump',
|
|
|
- ])
|
|
|
+ ] as any)
|
|
|
|
|
|
const backups = await restore.listBackups()
|
|
|
|
|
|
@@ -139,10 +141,10 @@ describe('DatabaseRestore', () => {
|
|
|
})
|
|
|
|
|
|
it('应该在读取目录失败时返回空数组', async () => {
|
|
|
- const { readdir } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
const { logger } = await import('../logger')
|
|
|
|
|
|
- vi.mocked(readdir).mockRejectedValueOnce(new Error('读取目录失败'))
|
|
|
+ vi.mocked(fs.promises.readdir).mockRejectedValueOnce(new Error('读取目录失败'))
|
|
|
|
|
|
const backups = await restore.listBackups()
|
|
|
|
|
|
@@ -153,17 +155,17 @@ describe('DatabaseRestore', () => {
|
|
|
|
|
|
describe('backupExists', () => {
|
|
|
it('应该返回true当备份文件存在时', async () => {
|
|
|
- const { access } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
|
|
|
const exists = await restore.backupExists('/path/to/backup.dump')
|
|
|
|
|
|
expect(exists).toBe(true)
|
|
|
- expect(access).toHaveBeenCalledWith('/path/to/backup.dump')
|
|
|
+ expect(fs.promises.access).toHaveBeenCalledWith('/path/to/backup.dump')
|
|
|
})
|
|
|
|
|
|
it('应该返回false当备份文件不存在时', async () => {
|
|
|
- const { access } = await import('fs')
|
|
|
- vi.mocked(access).mockRejectedValueOnce(new Error('文件不存在'))
|
|
|
+ const fs = await import('fs')
|
|
|
+ vi.mocked(fs.promises.access).mockRejectedValueOnce(new Error('文件不存在'))
|
|
|
|
|
|
const exists = await restore.backupExists('/path/to/backup.dump')
|
|
|
|
|
|
@@ -173,10 +175,10 @@ describe('DatabaseRestore', () => {
|
|
|
|
|
|
describe('getBackupInfo', () => {
|
|
|
it('应该返回备份文件信息', async () => {
|
|
|
- const { stat } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
const testDate = new Date()
|
|
|
|
|
|
- vi.mocked(stat).mockResolvedValueOnce({
|
|
|
+ vi.mocked(fs.promises.stat).mockResolvedValueOnce({
|
|
|
size: 1048576,
|
|
|
mtime: testDate,
|
|
|
} as any)
|
|
|
@@ -191,9 +193,9 @@ describe('DatabaseRestore', () => {
|
|
|
})
|
|
|
|
|
|
it('应该在获取信息失败时抛出错误', async () => {
|
|
|
- const { stat } = await import('fs')
|
|
|
+ const fs = await import('fs')
|
|
|
|
|
|
- vi.mocked(stat).mockRejectedValueOnce(new Error('获取文件信息失败'))
|
|
|
+ vi.mocked(fs.promises.stat).mockRejectedValueOnce(new Error('获取文件信息失败'))
|
|
|
|
|
|
await expect(restore.getBackupInfo('/path/to/backup.dump')).rejects.toThrow('获取备份信息失败')
|
|
|
})
|