返回 DeepSeek-Reasonix
provider-onboarding.test.tsx
根目录 / desktop / frontend / src / __tests__ / provider-onboarding.test.tsx
1 import assert from 'node:assert/strict';
2 import React from 'react';
3 import { renderToStaticMarkup } from 'react-dom/server';
4 import { ProvidersSection } from '../components/SettingsPanel';
5 import { LocaleProvider } from '../lib/i18n';
6 import { baseSettings } from '../test-support/settingsTestFixtures';
7 import type { ProviderView } from '../lib/types';
8 import { shouldOpenOnboarding, dismissOnboarding } from '../lib/onboarding';
9
10 const provider = {name:'my-connection',displayName:'My connection',added:true,builtIn:false,kind:'openai',baseUrl:'https://example.test/v1',models:['model'],default:'model',keySet:false,apiKeyEnv:'TEST_KEY',visionModels:[],supportedEfforts:[],modelCapabilities:[]} as unknown as ProviderView;
11 const render = (providers: ProviderView[], onboarding = true) => renderToStaticMarkup(<LocaleProvider><ProvidersSection s={{...baseSettings(),providers}} busy={false} apply={async()=>true} onboarding={onboarding}/></LocaleProvider>);
12 assert.match(render([]), /class="provider-catalog"/);
13 assert.match(render([]), /id="provider-onboarding"/);
14 assert.doesNotMatch(render([],false), /id="provider-onboarding"/);
15 assert.doesNotMatch(render([provider]), /class="provider-catalog"/);
16 assert.match(render([provider]), /My connection/);
17 assert.doesNotMatch(render([provider]), />Start using<|>开始使用</);
18 assert.match(render([{...provider,keySet:true}]), /开始使用|Start using/);
19 assert.doesNotMatch(render([{...provider,keySet:true,models:[]}]), /<button[^>]*>开始使用|<button[^>]*>Start using/);
20 assert.doesNotMatch(render([],false), /class="provider-catalog"/);
21 const map = new Map<string,string>();
22 const storage = {getItem:(key:string)=>map.get(key)??null,setItem:(key:string,value:string)=>map.set(key,value)} as Storage;
23 assert.equal(shouldOpenOnboarding(true,storage),true);
24 assert.equal(shouldOpenOnboarding(false,storage),false);
25 dismissOnboarding(storage);
26 assert.equal(shouldOpenOnboarding(true,storage),false);
27 console.log('Provider onboarding: fresh setup, existing connection, ready state, ordinary settings and dismissal passed.');
28
28 lines Plain Text