cloud-drive-renamer/tests/unit/adapters/baidu-adapter.test.ts
Zain e718b43757 feat(baidu-adapter): 支持/api/list顶层list响应结构并修复文件列表解析
修改BaiduAdapter以兼容不同API响应结构,当list字段在顶层时也能正确解析
修复parentId使用目标路径而非文件路径的问题
添加相关单元测试验证功能
2025-12-29 18:29:30 +08:00

67 行
1.7 KiB
TypeScript

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
import { BaiduAdapter } from '../../../src/adapters/baidu/baidu-adapter';
describe('BaiduAdapter', () => {
let adapter: BaiduAdapter;
let mockFetch: any;
beforeEach(() => {
adapter = new BaiduAdapter({ requestInterval: 0 });
// Mock global fetch used by BasePlatformAdapter.fetchWithTimeout
mockFetch = vi.fn();
global.fetch = mockFetch;
// Avoid relying on MAIN-world injector in unit tests
vi.spyOn(adapter as any, 'extractBdstoken').mockResolvedValue('mock-token');
vi.spyOn(adapter as any, 'rateLimit').mockResolvedValue(undefined);
});
afterEach(() => {
vi.restoreAllMocks();
});
describe('getAllFiles', () => {
it('应该支持 /api/list 顶层 list 响应结构(errno=0)', async () => {
mockFetch.mockResolvedValue({
json: async () => ({
errno: 0,
list: [
{
path: '/test/a.txt',
server_filename: 'a.txt',
fs_id: 1,
md5: 'x',
isdir: 0,
size: 10,
server_mtime: 1700000000,
},
{
path: '/test/folder',
server_filename: 'folder',
fs_id: 2,
md5: 'y',
isdir: 1,
size: 0,
server_mtime: 1700000001,
},
],
}),
});
const files = await adapter.getAllFiles('/test');
expect(files).toHaveLength(1);
expect(files[0]).toEqual({
id: '1',
name: 'a.txt',
ext: '.txt',
parentId: '/test',
size: 10,
mtime: 1700000000 * 1000,
});
});
});
});