mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
feat(providers): group presets into sponsors and non-sponsors
- Original sort mode now shows official > prime partner > sponsors (preset file order, aligned with the README sponsor table) > non-sponsors sorted by display name - Physically reorder sponsor entries in all 8 preset files to match the README sponsor table order; add group marker comments - Drop stale section comments in openclaw/hermes preset files - Update ProviderPresetSelector tests for the new ordering
This commit is contained in:
@@ -61,6 +61,7 @@ type TestPresetEntry = {
|
||||
settingsConfig: Record<string, never>;
|
||||
category: ProviderCategory;
|
||||
primePartner?: boolean;
|
||||
isPartner?: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -207,8 +208,9 @@ describe("ProviderPresetSelector pure helpers", () => {
|
||||
|
||||
const original = sortPresetEntries(presetEntries, originalMode, t);
|
||||
expect(original).not.toBe(presetEntries);
|
||||
// original 模式置顶官方分类(alpha),其余保持传入顺序。
|
||||
expect(getIds(original)).toEqual(["alpha", "gamma", "beta", "delta"]);
|
||||
// original 模式置顶官方分类(alpha);其余均非赞助商,按显示名排序
|
||||
// (Beta Gateway < Delta Mirror < Gamma 本地名)。
|
||||
expect(getIds(original)).toEqual(["alpha", "beta", "delta", "gamma"]);
|
||||
|
||||
expect(getIds(sortPresetEntries(presetEntries, nameAscMode, t))).toEqual([
|
||||
"alpha",
|
||||
@@ -229,30 +231,44 @@ describe("ProviderPresetSelector pure helpers", () => {
|
||||
).toEqual(["alpha", "beta", "delta", "gamma"]);
|
||||
});
|
||||
|
||||
it("original 模式按「官方 → 尊享伙伴 → 其余」三段排序,各组内部保序且双重身份不重复", () => {
|
||||
it("original 模式按「官方 → 尊享伙伴 → 赞助商 → 非赞助商」四段排序,前三组保序、末组按显示名,双重身份不重复", () => {
|
||||
// 故意打乱传入顺序,验证:
|
||||
// - official 组置顶(officialOnly、officialPrime 按出现顺序);
|
||||
// - 非官方且 primePartner 的预设居中(primeOnly);
|
||||
// - 其余保持传入顺序(restFirst、restLast);
|
||||
// - 既是 official 又是 primePartner 的预设只归入官方组、不在 prime 组重复。
|
||||
// - 非官方且 primePartner 的预设次之(primeAndPartner);
|
||||
// - 赞助商(isPartner)第三段,保持传入(预设文件)顺序:
|
||||
// partnerZeta 在 partnerAlpha 前,不按字母重排;
|
||||
// - 非赞助商按显示名排序:restAlpha 排到 restZulu 前;
|
||||
// - 既是 official 又是 primePartner 的只归入官方组;
|
||||
// 既是 primePartner 又是 isPartner 的只归入 prime 组、不在赞助商组重复。
|
||||
const mixed: TestPresetEntry[] = [
|
||||
{
|
||||
id: "restFirst",
|
||||
id: "restZulu",
|
||||
preset: {
|
||||
name: "Rest First",
|
||||
websiteUrl: "https://rest-first.example.com",
|
||||
name: "Zulu Rest",
|
||||
websiteUrl: "https://rest-zulu.example.com",
|
||||
settingsConfig: {},
|
||||
category: "third_party",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "primeOnly",
|
||||
id: "partnerZeta",
|
||||
preset: {
|
||||
name: "Prime Only",
|
||||
websiteUrl: "https://prime-only.example.com",
|
||||
name: "Zeta Partner",
|
||||
websiteUrl: "https://partner-zeta.example.com",
|
||||
settingsConfig: {},
|
||||
category: "aggregator",
|
||||
isPartner: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "primeAndPartner",
|
||||
preset: {
|
||||
name: "Prime And Partner",
|
||||
websiteUrl: "https://prime-and-partner.example.com",
|
||||
settingsConfig: {},
|
||||
category: "cn_official",
|
||||
primePartner: true,
|
||||
isPartner: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -275,10 +291,20 @@ describe("ProviderPresetSelector pure helpers", () => {
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "restLast",
|
||||
id: "partnerAlpha",
|
||||
preset: {
|
||||
name: "Rest Last",
|
||||
websiteUrl: "https://rest-last.example.com",
|
||||
name: "Alpha Partner",
|
||||
websiteUrl: "https://partner-alpha.example.com",
|
||||
settingsConfig: {},
|
||||
category: "third_party",
|
||||
isPartner: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "restAlpha",
|
||||
preset: {
|
||||
name: "Alpha Rest",
|
||||
websiteUrl: "https://rest-alpha.example.com",
|
||||
settingsConfig: {},
|
||||
category: "aggregator",
|
||||
},
|
||||
@@ -288,23 +314,27 @@ describe("ProviderPresetSelector pure helpers", () => {
|
||||
expect(getIds(sortPresetEntries(mixed, "original", t))).toEqual([
|
||||
"officialOnly",
|
||||
"officialPrime",
|
||||
"primeOnly",
|
||||
"restFirst",
|
||||
"restLast",
|
||||
"primeAndPartner",
|
||||
"partnerZeta",
|
||||
"partnerAlpha",
|
||||
"restAlpha",
|
||||
"restZulu",
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("ProviderPresetSelector", () => {
|
||||
it("默认(original 模式)将官方分类置顶,其余保持传入顺序", () => {
|
||||
it("默认(original 模式)将官方分类置顶,非赞助商按显示名排序", () => {
|
||||
renderSelector();
|
||||
|
||||
// 组件内 t() 未配置翻译资源,显示名回退为 key 字面量:
|
||||
// Beta Gateway < Delta Mirror < preset.gamma。
|
||||
expect(getPresetButtonTexts()).toEqual([
|
||||
"providerPreset.custom",
|
||||
"preset.alpha",
|
||||
"preset.gamma",
|
||||
"Beta Gateway",
|
||||
"Delta Mirror",
|
||||
"preset.gamma",
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -327,9 +357,9 @@ describe("ProviderPresetSelector", () => {
|
||||
expect(getPresetButtonTexts()).toEqual([
|
||||
"providerPreset.custom",
|
||||
"preset.alpha",
|
||||
"preset.gamma",
|
||||
"Beta Gateway",
|
||||
"Delta Mirror",
|
||||
"preset.gamma",
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user