import { describe, expect, it, vi } from 'vitest' import { mount } from '@vue/test-utils' import { nextTick } from 'vue' vi.mock('vue-i18n', () => ({ useI18n: () => ({ t: (key: string) => key }) })) vi.mock('@/composables/useClipboard', () => ({ useClipboard: () => ({ copyToClipboard: vi.fn().mockResolvedValue(true) }) })) import UseKeyModal from '../UseKeyModal.vue' describe('UseKeyModal', () => { it('renders GPT-5.5 and goals feature in OpenAI Codex config', () => { const wrapper = mount(UseKeyModal, { props: { show: true, apiKey: 'sk-test', baseUrl: 'https://example.com/v1', platform: 'openai' }, global: { stubs: { BaseDialog: { template: '
' }, Icon: { template: '' } } } }) const codeBlocks = wrapper.findAll('pre code').map((code) => code.text()) const configToml = codeBlocks.find((content) => content.includes('model_provider = "OpenAI"')) expect(configToml).toBeDefined() expect(configToml).toContain('model = "gpt-5.5"') expect(configToml).toContain('review_model = "gpt-5.5"') expect(configToml).not.toContain('model = "gpt-5.4"') expect(configToml).not.toContain('model_context_window') expect(configToml).not.toContain('model_auto_compact_token_limit') expect(configToml).toContain('[features]\ngoals = true') }) it('renders GPT-5.5 and goals feature in OpenAI Codex WebSocket config', async () => { const wrapper = mount(UseKeyModal, { props: { show: true, apiKey: 'sk-test', baseUrl: 'https://example.com/v1', platform: 'openai' }, global: { stubs: { BaseDialog: { template: '
' }, Icon: { template: '' } } } }) const wsTab = wrapper.findAll('button').find((button) => button.text().includes('keys.useKeyModal.cliTabs.codexCliWs') ) expect(wsTab).toBeDefined() await wsTab!.trigger('click') await nextTick() const codeBlocks = wrapper.findAll('pre code').map((code) => code.text()) const configToml = codeBlocks.find((content) => content.includes('supports_websockets = true')) expect(configToml).toBeDefined() expect(configToml).toContain('model = "gpt-5.5"') expect(configToml).toContain('review_model = "gpt-5.5"') expect(configToml).not.toContain('model = "gpt-5.4"') expect(configToml).not.toContain('model_context_window') expect(configToml).not.toContain('model_auto_compact_token_limit') expect(configToml).toContain('[features]\nresponses_websockets_v2 = true\ngoals = true') }) it('renders GPT-5.4 mini entry in OpenCode config', async () => { const wrapper = mount(UseKeyModal, { props: { show: true, apiKey: 'sk-test', baseUrl: 'https://example.com/v1', platform: 'openai' }, global: { stubs: { BaseDialog: { template: '
' }, Icon: { template: '' } } } }) const opencodeTab = wrapper.findAll('button').find((button) => button.text().includes('keys.useKeyModal.cliTabs.opencode') ) expect(opencodeTab).toBeDefined() await opencodeTab!.trigger('click') await nextTick() const codeBlock = wrapper.find('pre code') expect(codeBlock.exists()).toBe(true) expect(codeBlock.text()).toContain('"name": "GPT-5.4 Mini"') expect(codeBlock.text()).not.toContain('"name": "GPT-5.4 Nano"') }) })