forked from ChatGPTBox-dev/chatGPTBox
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig-predicates.test.mjs
More file actions
87 lines (73 loc) · 2.77 KB
/
config-predicates.test.mjs
File metadata and controls
87 lines (73 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import assert from 'node:assert/strict'
import { afterEach, test } from 'node:test'
import {
getNavigatorLanguage,
isUsingBingWebModel,
isUsingChatgptApiModel,
isUsingCustomModel,
isUsingMultiModeModel,
isUsingOpenAiApiModel,
} from '../../../src/config/index.mjs'
const originalNavigatorDescriptor = Object.getOwnPropertyDescriptor(globalThis, 'navigator')
const restoreNavigator = () => {
if (originalNavigatorDescriptor) {
Object.defineProperty(globalThis, 'navigator', originalNavigatorDescriptor)
} else {
delete globalThis.navigator
}
}
const setNavigatorLanguage = (language) => {
Object.defineProperty(globalThis, 'navigator', {
value: { language },
configurable: true,
})
}
afterEach(() => {
restoreNavigator()
})
test('getNavigatorLanguage returns zhHant for zh-TW style locales', () => {
setNavigatorLanguage('zh-TW')
assert.equal(getNavigatorLanguage(), 'zhHant')
})
test('getNavigatorLanguage returns first two letters for non-zhHant locales', () => {
setNavigatorLanguage('en-US')
assert.equal(getNavigatorLanguage(), 'en')
})
test('getNavigatorLanguage normalizes mixed-case zh-TW locale to zhHant', () => {
setNavigatorLanguage('ZH-TW')
assert.equal(getNavigatorLanguage(), 'zhHant')
})
test('getNavigatorLanguage treats zh-Hant locale as zhHant', () => {
setNavigatorLanguage('zh-Hant')
assert.equal(getNavigatorLanguage(), 'zhHant')
})
test('isUsingChatgptApiModel detects chatgpt API models and excludes custom model', () => {
assert.equal(isUsingChatgptApiModel({ modelName: 'chatgptApi4oMini' }), true)
assert.equal(isUsingChatgptApiModel({ modelName: 'customModel' }), false)
})
test('isUsingOpenAiApiModel accepts both chat and completion API model groups', () => {
assert.equal(isUsingOpenAiApiModel({ modelName: 'chatgptApi4oMini' }), true)
assert.equal(isUsingOpenAiApiModel({ modelName: 'gptApiInstruct' }), true)
})
test('isUsingOpenAiApiModel excludes custom model', () => {
assert.equal(isUsingOpenAiApiModel({ modelName: 'customModel' }), false)
})
test('isUsingCustomModel works with modelName and apiMode forms', () => {
assert.equal(isUsingCustomModel({ modelName: 'customModel' }), true)
const apiMode = {
groupName: 'customApiModelKeys',
itemName: 'customModel',
isCustom: true,
customName: 'my-custom-model',
customUrl: '',
apiKey: '',
active: true,
}
assert.equal(isUsingCustomModel({ apiMode }), true)
})
test('isUsingMultiModeModel currently follows Bing web group behavior', () => {
assert.equal(isUsingBingWebModel({ modelName: 'bingFree4' }), true)
assert.equal(isUsingMultiModeModel({ modelName: 'bingFree4' }), true)
assert.equal(isUsingBingWebModel({ modelName: 'chatgptFree35' }), false)
assert.equal(isUsingMultiModeModel({ modelName: 'chatgptFree35' }), false)
})