Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
import { test } from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import { getParam, resolveServers, type RemoteConfig } from '../../YouleNexus/assets/framework/config/remote-config.ts';
|
||
import type { ChannelIdentity } from '../../YouleNexus/assets/framework/config/identity.ts';
|
||
|
||
const ID: ChannelIdentity = { agentid: 'A', channelid: 'C', gameid: 'G', marketid: 2, version: '1', versionCode: 1 };
|
||
|
||
const CONFIG: RemoteConfig = {
|
||
data: {
|
||
player_server_tcp: '1.1.1.1:1000', // 顶层默认
|
||
agentlist: [{
|
||
agentid: 'A',
|
||
player_server_tcp: '2.2.2.2:2000', // agent 级覆盖
|
||
gamelist: [{
|
||
gameid: 'G',
|
||
channellist: [{
|
||
channelid: 'C',
|
||
player_server_tcp: '3.3.3.3:3000', // channel 级覆盖(最具体)
|
||
visitor_server_tcp: '4.4.4.4:4000',
|
||
marketlist: [{ marketid: 2 }],
|
||
}],
|
||
}],
|
||
}],
|
||
},
|
||
};
|
||
|
||
test('getParam:最具体层级胜出', () => {
|
||
assert.equal(getParam(CONFIG, 'player_server_tcp', ID), '3.3.3.3:3000');
|
||
});
|
||
|
||
test('getParam:channel 未匹配时回退到 agent 级值', () => {
|
||
const id2 = { ...ID, channelid: 'OTHER' };
|
||
assert.equal(getParam(CONFIG, 'player_server_tcp', id2), '2.2.2.2:2000');
|
||
});
|
||
|
||
test('getParam:agent 未匹配时回退到顶层默认', () => {
|
||
const id3 = { ...ID, agentid: 'NONE' };
|
||
assert.equal(getParam(CONFIG, 'player_server_tcp', id3), '1.1.1.1:1000');
|
||
});
|
||
|
||
test('getParam:键不存在 → null', () => {
|
||
assert.equal(getParam(CONFIG, 'not_a_key', ID), null);
|
||
});
|
||
|
||
test('getParam:无 data → null', () => {
|
||
assert.equal(getParam({}, 'player_server_tcp', ID), null);
|
||
});
|
||
|
||
test('resolveServers:player 优先、visitor 回退,前缀 ws://', () => {
|
||
assert.deepEqual(resolveServers(CONFIG, ID), ['ws://3.3.3.3:3000', 'ws://4.4.4.4:4000']);
|
||
});
|
||
|
||
test('resolveServers:已带 ws:// 不重复前缀;无地址 → 空数组', () => {
|
||
const cfg: RemoteConfig = { data: { player_server_tcp: 'ws://9.9.9.9:9' } };
|
||
assert.deepEqual(resolveServers(cfg, ID), ['ws://9.9.9.9:9']);
|
||
assert.deepEqual(resolveServers({ data: {} }, ID), []);
|
||
});
|