feat: 支持自定义端点配置与展示
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { flushPromises, mount } from '@vue/test-utils'
|
||||
|
||||
const copyToClipboard = vi.fn().mockResolvedValue(true)
|
||||
|
||||
const messages: Record<string, string> = {
|
||||
'keys.endpoints.title': 'API 端点',
|
||||
'keys.endpoints.default': '默认',
|
||||
'keys.endpoints.copied': '已复制',
|
||||
'keys.endpoints.copiedHint': '已复制到剪贴板',
|
||||
'keys.endpoints.clickToCopy': '点击可复制此端点',
|
||||
'keys.endpoints.speedTest': '测速',
|
||||
}
|
||||
|
||||
vi.mock('vue-i18n', () => ({
|
||||
useI18n: () => ({
|
||||
t: (key: string) => messages[key] ?? key,
|
||||
}),
|
||||
}))
|
||||
|
||||
vi.mock('@/composables/useClipboard', () => ({
|
||||
useClipboard: () => ({
|
||||
copyToClipboard,
|
||||
}),
|
||||
}))
|
||||
|
||||
import EndpointPopover from '../EndpointPopover.vue'
|
||||
|
||||
describe('EndpointPopover', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
})
|
||||
|
||||
it('将说明提示渲染到 URL 上方而不是旧的 title 图标上', () => {
|
||||
const wrapper = mount(EndpointPopover, {
|
||||
props: {
|
||||
apiBaseUrl: 'https://default.example.com/v1',
|
||||
customEndpoints: [
|
||||
{
|
||||
name: '备用线路',
|
||||
endpoint: 'https://backup.example.com/v1',
|
||||
description: '自定义说明',
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
|
||||
expect(wrapper.text()).toContain('自定义说明')
|
||||
expect(wrapper.text()).toContain('点击可复制此端点')
|
||||
expect(wrapper.find('[role="button"]').attributes('title')).toBeUndefined()
|
||||
expect(wrapper.find('[title="自定义说明"]').exists()).toBe(false)
|
||||
})
|
||||
|
||||
it('点击 URL 后会复制并切换为已复制提示', async () => {
|
||||
const wrapper = mount(EndpointPopover, {
|
||||
props: {
|
||||
apiBaseUrl: 'https://default.example.com/v1',
|
||||
customEndpoints: [],
|
||||
},
|
||||
})
|
||||
|
||||
await wrapper.find('[role="button"]').trigger('click')
|
||||
await flushPromises()
|
||||
|
||||
expect(copyToClipboard).toHaveBeenCalledWith('https://default.example.com/v1', '已复制')
|
||||
expect(wrapper.text()).toContain('已复制到剪贴板')
|
||||
expect(wrapper.find('button[aria-label="已复制到剪贴板"]').exists()).toBe(true)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user