























@@ -1,13 +1,13 @@
11import { beforeEach, describe, expect, it, vi } from "vitest";
2233const mocks = vi.hoisted(() => ({
4-loadStaticManifestCatalogRowsForList: vi.fn(),
4+loadManifestCatalogRowsForList: vi.fn(),
55loadProviderIndexCatalogRowsForList: vi.fn(),
66hasProviderStaticCatalogForFilter: vi.fn(),
77}));
8899vi.mock("./list.manifest-catalog.js", () => ({
10-loadStaticManifestCatalogRowsForList: mocks.loadStaticManifestCatalogRowsForList,
10+loadManifestCatalogRowsForList: mocks.loadManifestCatalogRowsForList,
1111}));
12121313vi.mock("./list.provider-index-catalog.js", () => ({
@@ -33,14 +33,14 @@ const catalogRow = {
3333describe("planAllModelListSources", () => {
3434beforeEach(() => {
3535vi.clearAllMocks();
36-mocks.loadStaticManifestCatalogRowsForList.mockReturnValue([]);
36+mocks.loadManifestCatalogRowsForList.mockReturnValue([]);
3737mocks.loadProviderIndexCatalogRowsForList.mockReturnValue([]);
3838mocks.hasProviderStaticCatalogForFilter.mockResolvedValue(false);
3939});
40404141it("uses installed manifest rows before provider index or runtime catalog sources", async () => {
4242const { planAllModelListSources } = await import("./list.source-plan.js");
43-mocks.loadStaticManifestCatalogRowsForList.mockReturnValueOnce([catalogRow]);
43+mocks.loadManifestCatalogRowsForList.mockReturnValueOnce([catalogRow]);
44444545const plan = await planAllModelListSources({
4646all: true,
@@ -54,6 +54,11 @@ describe("planAllModelListSources", () => {
5454skipRuntimeModelSuppression: true,
5555});
5656expect(plan.manifestCatalogRows).toEqual([catalogRow]);
57+expect(mocks.loadManifestCatalogRowsForList).toHaveBeenCalledWith({
58+cfg: {},
59+providerFilter: "moonshot",
60+staticOnly: true,
61+});
5762expect(mocks.loadProviderIndexCatalogRowsForList).not.toHaveBeenCalled();
5863expect(mocks.hasProviderStaticCatalogForFilter).not.toHaveBeenCalled();
5964});
@@ -78,6 +83,35 @@ describe("planAllModelListSources", () => {
7883expect(mocks.hasProviderStaticCatalogForFilter).not.toHaveBeenCalled();
7984});
808586+it("uses the registry when provider-filtered manifest rows are refreshable", async () => {
87+const { planAllModelListSources } = await import("./list.source-plan.js");
88+mocks.loadManifestCatalogRowsForList.mockReturnValueOnce([]).mockReturnValueOnce([catalogRow]);
89+90+const plan = await planAllModelListSources({
91+all: true,
92+providerFilter: "openai",
93+cfg: {},
94+});
95+96+expect(plan).toMatchObject({
97+kind: "registry",
98+requiresInitialRegistry: true,
99+skipRuntimeModelSuppression: false,
100+});
101+expect(plan.manifestCatalogRows).toEqual([catalogRow]);
102+expect(mocks.loadManifestCatalogRowsForList).toHaveBeenNthCalledWith(1, {
103+cfg: {},
104+providerFilter: "openai",
105+staticOnly: true,
106+});
107+expect(mocks.loadManifestCatalogRowsForList).toHaveBeenNthCalledWith(2, {
108+cfg: {},
109+providerFilter: "openai",
110+staticOnly: false,
111+});
112+expect(mocks.loadProviderIndexCatalogRowsForList).not.toHaveBeenCalled();
113+});
114+81115it("keeps scoped runtime catalog fallback separate from broad registry loading", async () => {
82116const { planAllModelListSources } = await import("./list.source-plan.js");
83117@@ -98,7 +132,7 @@ describe("planAllModelListSources", () => {
98132it("keeps broad all-model lists on the registry path with cheap catalog supplements", async () => {
99133const { planAllModelListSources } = await import("./list.source-plan.js");
100134const providerIndexRow = { ...catalogRow, source: "provider-index" };
101-mocks.loadStaticManifestCatalogRowsForList.mockReturnValueOnce([catalogRow]);
135+mocks.loadManifestCatalogRowsForList.mockReturnValueOnce([catalogRow]);
102136mocks.loadProviderIndexCatalogRowsForList.mockReturnValueOnce([providerIndexRow]);
103137104138const plan = await planAllModelListSources({
@@ -113,6 +147,10 @@ describe("planAllModelListSources", () => {
113147});
114148expect(plan.manifestCatalogRows).toEqual([catalogRow]);
115149expect(plan.providerIndexCatalogRows).toEqual([providerIndexRow]);
150+expect(mocks.loadManifestCatalogRowsForList).toHaveBeenCalledWith({
151+cfg: {},
152+staticOnly: false,
153+});
116154expect(mocks.hasProviderStaticCatalogForFilter).not.toHaveBeenCalled();
117155});
118156此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。