mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-25 02:00:09 +08:00
🐛 fix(driver-manager/mongodb): 恢复旧版 MongoDB 连接兼容
- 默认版本:将 MongoDB 推荐 driver-agent 切到 1.17.9 - 安装策略:v1 兼容驱动优先尝试发布资产,不再强制源码构建 - 状态提示:已安装 2.x 时提示重装以兼容 MongoDB 4.0 - 前端交互:重装驱动优先选择推荐兼容版本 - 测试覆盖:补充版本选择、下载候选和重装传参回归
This commit is contained in:
@@ -230,4 +230,62 @@ describe('DriverManagerModal toolbar actions', () => {
|
||||
vi.useRealTimers();
|
||||
}
|
||||
});
|
||||
|
||||
it('reinstalls stale MongoDB v2 drivers with the v1 compatibility default', async () => {
|
||||
vi.useFakeTimers({ shouldAdvanceTime: true });
|
||||
try {
|
||||
vi.setSystemTime(new Date(Date.now() + 2 * 60 * 1000));
|
||||
backendApp.GetDriverStatusList.mockResolvedValue({
|
||||
success: true,
|
||||
data: {
|
||||
downloadDir: 'D:/drivers',
|
||||
drivers: [
|
||||
{
|
||||
type: 'mongodb',
|
||||
name: 'MongoDB',
|
||||
builtIn: false,
|
||||
pinnedVersion: '1.17.9',
|
||||
installedVersion: '2.5.0',
|
||||
runtimeAvailable: true,
|
||||
packageInstalled: true,
|
||||
connectable: true,
|
||||
needsUpdate: true,
|
||||
defaultDownloadUrl: 'builtin://activate/mongodb',
|
||||
message: '建议重装',
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
backendApp.GetDriverVersionList.mockResolvedValue({
|
||||
success: true,
|
||||
data: {
|
||||
versions: [
|
||||
{ version: '2.5.0', downloadUrl: 'builtin://activate/mongodb?version=2.5.0' },
|
||||
{ version: '1.17.9', downloadUrl: 'builtin://activate/mongodb', recommended: true },
|
||||
],
|
||||
},
|
||||
});
|
||||
backendApp.DownloadDriverPackage.mockResolvedValue({ success: true });
|
||||
|
||||
let renderer: ReactTestRenderer;
|
||||
await act(async () => {
|
||||
renderer = create(<DriverManagerModal open onClose={vi.fn()} />);
|
||||
});
|
||||
await flushPromises();
|
||||
|
||||
const reinstallButton = findButton(renderer!, '重装驱动');
|
||||
await act(async () => {
|
||||
await reinstallButton.props.onClick();
|
||||
});
|
||||
|
||||
expect(backendApp.DownloadDriverPackage).toHaveBeenCalledWith(
|
||||
'mongodb',
|
||||
'1.17.9',
|
||||
'builtin://activate/mongodb',
|
||||
'D:/drivers',
|
||||
);
|
||||
} finally {
|
||||
vi.useRealTimers();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -525,6 +525,8 @@ const DriverManagerModal: React.FC<{ open: boolean; onClose: () => void; onOpenG
|
||||
return prev;
|
||||
}
|
||||
const preferred =
|
||||
(row.needsUpdate ? options.find((option) => option.version === row.pinnedVersion) : undefined) ||
|
||||
(row.needsUpdate ? options.find((option) => option.recommended) : undefined) ||
|
||||
options.find((option) => option.version === row.installedVersion) ||
|
||||
options.find((option) => option.version === row.pinnedVersion) ||
|
||||
options.find((option) => option.recommended) ||
|
||||
@@ -712,6 +714,8 @@ const DriverManagerModal: React.FC<{ open: boolean; onClose: () => void; onOpenG
|
||||
}
|
||||
const selectedKey = selectedVersionMap[row.type];
|
||||
const selectedOption =
|
||||
(row.needsUpdate ? versionOptions.find((item) => item.version === row.pinnedVersion) : undefined) ||
|
||||
(row.needsUpdate ? versionOptions.find((item) => item.recommended) : undefined) ||
|
||||
versionOptions.find((item) => buildVersionOptionKey(item) === selectedKey) ||
|
||||
versionOptions.find((item) => item.recommended) ||
|
||||
versionOptions[0];
|
||||
@@ -1033,7 +1037,7 @@ const DriverManagerModal: React.FC<{ open: boolean; onClose: () => void; onOpenG
|
||||
const selectedKey = selectedVersionMap[row.type];
|
||||
const selectOptions = buildVersionSelectOptions(options);
|
||||
const mongoHint = row.type === 'mongodb'
|
||||
? '当前仅支持 MongoDB 1.17.x 和 2.x;更老 1.x 暂不提供安装。'
|
||||
? 'MongoDB 4.0 请使用 1.17.x 兼容驱动;2.x 驱动要求 MongoDB 4.2+。'
|
||||
: '';
|
||||
return (
|
||||
<div className="driver-manager-version-control">
|
||||
|
||||
Reference in New Issue
Block a user