mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-04-11 02:24:45 +08:00
73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest'
|
|
import { mount } from '@vue/test-utils'
|
|
import BulkEditAccountModal from '../BulkEditAccountModal.vue'
|
|
|
|
vi.mock('@/stores/app', () => ({
|
|
useAppStore: () => ({
|
|
showError: vi.fn(),
|
|
showSuccess: vi.fn(),
|
|
showInfo: vi.fn()
|
|
})
|
|
}))
|
|
|
|
vi.mock('@/api/admin', () => ({
|
|
adminAPI: {
|
|
accounts: {
|
|
bulkEdit: vi.fn()
|
|
}
|
|
}
|
|
}))
|
|
|
|
vi.mock('vue-i18n', async () => {
|
|
const actual = await vi.importActual<typeof import('vue-i18n')>('vue-i18n')
|
|
return {
|
|
...actual,
|
|
useI18n: () => ({
|
|
t: (key: string) => key
|
|
})
|
|
}
|
|
})
|
|
|
|
function mountModal() {
|
|
return mount(BulkEditAccountModal, {
|
|
props: {
|
|
show: true,
|
|
accountIds: [1, 2],
|
|
selectedPlatforms: ['antigravity'],
|
|
proxies: [],
|
|
groups: []
|
|
} as any,
|
|
global: {
|
|
stubs: {
|
|
BaseDialog: { template: '<div><slot /><slot name="footer" /></div>' },
|
|
Select: true,
|
|
ProxySelector: true,
|
|
GroupSelector: true,
|
|
Icon: true
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
describe('BulkEditAccountModal', () => {
|
|
it('antigravity 白名单包含 Gemini 图片模型且过滤掉普通 GPT 模型', () => {
|
|
const wrapper = mountModal()
|
|
|
|
expect(wrapper.text()).toContain('Gemini 3.1 Flash Image')
|
|
expect(wrapper.text()).toContain('Gemini 3 Pro Image (Legacy)')
|
|
expect(wrapper.text()).not.toContain('GPT-5.3 Codex')
|
|
})
|
|
|
|
it('antigravity 映射预设包含图片映射并过滤 OpenAI 预设', async () => {
|
|
const wrapper = mountModal()
|
|
|
|
const mappingTab = wrapper.findAll('button').find((btn) => btn.text().includes('admin.accounts.modelMapping'))
|
|
expect(mappingTab).toBeTruthy()
|
|
await mappingTab!.trigger('click')
|
|
|
|
expect(wrapper.text()).toContain('Gemini 3.1 Image')
|
|
expect(wrapper.text()).toContain('G3 Image→3.1')
|
|
expect(wrapper.text()).not.toContain('GPT-5.3 Codex')
|
|
})
|
|
})
|