90 lines
2.4 KiB
TypeScript
90 lines
2.4 KiB
TypeScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
|
|
import {
|
|
classifyTencentRedeemResult,
|
|
isCaptchaRejectedResult,
|
|
resolveTencentRedeemMessage,
|
|
} from './session-redeem.js'
|
|
|
|
test('resolveTencentRedeemMessage prefers popup detail over generic title', () => {
|
|
assert.equal(
|
|
resolveTencentRedeemMessage({
|
|
popup: {
|
|
text: '兑换结果',
|
|
detail: '兑换码错误,请确认兑换码信息是否准确。',
|
|
},
|
|
}),
|
|
'兑换码错误,请确认兑换码信息是否准确。',
|
|
)
|
|
})
|
|
|
|
test('classifyTencentRedeemResult marks used codes as replacement retries', () => {
|
|
const result = classifyTencentRedeemResult({
|
|
popup: {
|
|
text: '兑换结果',
|
|
detail: '兑换码已使用。',
|
|
},
|
|
})
|
|
|
|
assert.equal(result.outcome, 'code_used')
|
|
assert.equal(result.success, false)
|
|
assert.equal(result.retryWithReplacementCode, true)
|
|
})
|
|
|
|
test('classifyTencentRedeemResult marks invalid codes as replacement retries', () => {
|
|
const result = classifyTencentRedeemResult({
|
|
popup: {
|
|
text: '兑换结果',
|
|
detail: '兑换码错误,请确认兑换码信息是否准确。',
|
|
},
|
|
})
|
|
|
|
assert.equal(result.outcome, 'code_invalid')
|
|
assert.equal(result.success, false)
|
|
assert.equal(result.retryWithReplacementCode, true)
|
|
})
|
|
|
|
test('classifyTencentRedeemResult treats missing CDKEY responses as invalid replacement retries', () => {
|
|
const result = classifyTencentRedeemResult({
|
|
iRet: -183,
|
|
sMsg: '该CDKEY不存在,请您确认后输入!',
|
|
})
|
|
|
|
assert.equal(result.outcome, 'code_invalid')
|
|
assert.equal(result.success, false)
|
|
assert.equal(result.retryWithReplacementCode, true)
|
|
})
|
|
|
|
test('classifyTencentRedeemResult recognizes successful gift popup', () => {
|
|
const result = classifyTencentRedeemResult({
|
|
popup: {
|
|
text: '恭喜您获得了礼包:动作-干员庆生,请注意:游戏虚拟道具奖品将会在24小时内到账,请登录游戏查看邮件。',
|
|
detail: '',
|
|
},
|
|
})
|
|
|
|
assert.equal(result.outcome, 'success')
|
|
assert.equal(result.success, true)
|
|
})
|
|
|
|
test('isCaptchaRejectedResult only treats captcha problems as same-code retries', () => {
|
|
assert.equal(
|
|
isCaptchaRejectedResult({
|
|
iRet: -100,
|
|
sMsg: '验证码错误',
|
|
}),
|
|
true,
|
|
)
|
|
|
|
assert.equal(
|
|
isCaptchaRejectedResult({
|
|
popup: {
|
|
text: '兑换结果',
|
|
detail: '兑换码已使用。',
|
|
},
|
|
}),
|
|
false,
|
|
)
|
|
})
|