61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
const fetchAppLocalPreferencesMock = vi.fn();
|
|
const updateAppLocalPreferencesMock = vi.fn();
|
|
|
|
vi.mock('@/lib/app-local-preferences', () => ({
|
|
fetchAppLocalPreferences: (...args: unknown[]) => fetchAppLocalPreferencesMock(...args),
|
|
updateAppLocalPreferences: (...args: unknown[]) => updateAppLocalPreferencesMock(...args),
|
|
}));
|
|
|
|
describe('YINIAN local preferences app-level sync', () => {
|
|
beforeEach(async () => {
|
|
vi.resetModules();
|
|
vi.clearAllMocks();
|
|
window.localStorage.clear();
|
|
});
|
|
|
|
it('hydrates account remarks from app-level local preferences', async () => {
|
|
fetchAppLocalPreferencesMock.mockResolvedValue({
|
|
desktopUserName: '徐明',
|
|
workspaceDisplayName: '智念科技',
|
|
channelAccountRemarks: {
|
|
'wechat:20732884aa30-im-bot': '徐明微信',
|
|
'feishu:default': '徐明飞书',
|
|
},
|
|
});
|
|
|
|
const {
|
|
getEffectiveChannelAccountName,
|
|
getEffectiveUserName,
|
|
getEffectiveWorkspaceName,
|
|
syncYinianLocalPrefsWithAppLocalPreferences,
|
|
} = await import('@/lib/yinian-local-prefs');
|
|
|
|
await syncYinianLocalPrefsWithAppLocalPreferences();
|
|
|
|
expect(getEffectiveUserName('王管理员')).toBe('徐明');
|
|
expect(getEffectiveWorkspaceName('默认组织')).toBe('智念科技');
|
|
expect(getEffectiveChannelAccountName('wechat', '20732884aa30-im-bot', '原微信')).toBe('徐明微信');
|
|
expect(getEffectiveChannelAccountName('feishu', 'default', '原飞书')).toBe('徐明飞书');
|
|
});
|
|
|
|
it('pushes existing origin-local account remarks into app-level preferences', async () => {
|
|
fetchAppLocalPreferencesMock.mockResolvedValue({});
|
|
|
|
const {
|
|
setChannelAccountRemark,
|
|
syncYinianLocalPrefsWithAppLocalPreferences,
|
|
} = await import('@/lib/yinian-local-prefs');
|
|
|
|
setChannelAccountRemark('wechat', '20732884aa30-im-bot', '徐明微信');
|
|
await syncYinianLocalPrefsWithAppLocalPreferences();
|
|
|
|
expect(updateAppLocalPreferencesMock).toHaveBeenCalledWith({
|
|
channelAccountRemarks: expect.objectContaining({
|
|
'wechat:20732884aa30-im-bot': '徐明微信',
|
|
}),
|
|
});
|
|
});
|
|
});
|