From e447b15b0db344f9d0b15ed232aadd4a68772530 Mon Sep 17 00:00:00 2001 From: Garfield Lee Date: Sat, 12 Sep 2026 10:25:16 +0800 Subject: [PATCH] refactor(provider-inference): move provider tests closer to implementations (#2529) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Refactor: Move Provider Tests to provider-inference ## Summary Move azure-openai and openrouter-ai provider tests from `stage-ui` to `provider-inference` package, placing them closer to their implementations. ## Changes - **Moved test files**: - `packages/stage-ui/src/libs/providers/providers/azure-openai/index.test.ts` → `packages/provider-inference/src/providers/cloud/azure-openai/index.test.ts` - `packages/stage-ui/src/libs/providers/providers/openrouter-ai/index.test.ts` → `packages/provider-inference/src/providers/cloud/openrouter-ai/index.test.ts` - **Simplified test imports**: Updated tests to use direct provider definitions instead of `getDefinedProvider()`, removing unnecessary lookup logic - **Added dependency**: `@proj-airi/core-agent` as devDependency for test utilities ## Benefits 1. Tests are co-located with their implementations 2. Direct imports are simpler and more maintainable 3. Better package organization following module boundaries ## Verification ```bash # Run tests for provider-inference pnpm -F @proj-airi/provider-inference exec vitest run # Typecheck pnpm -F @proj-airi/provider-inference typecheck ``` ## Test Results All tests pass after the refactoring. --- packages/provider-inference/package.json | 1 + .../cloud}/azure-openai/index.test.ts | 9 +++------ .../cloud}/openrouter-ai/index.test.ts | 18 ++++++------------ pnpm-lock.yaml | 3 +++ 4 files changed, 13 insertions(+), 18 deletions(-) rename packages/{stage-ui/src/libs/providers/providers => provider-inference/src/providers/cloud}/azure-openai/index.test.ts (90%) rename packages/{stage-ui/src/libs/providers/providers => provider-inference/src/providers/cloud}/openrouter-ai/index.test.ts (83%) diff --git a/packages/provider-inference/package.json b/packages/provider-inference/package.json index e49145fb8..5570e3254 100644 --- a/packages/provider-inference/package.json +++ b/packages/provider-inference/package.json @@ -53,6 +53,7 @@ "zod": "catalog:" }, "devDependencies": { + "@proj-airi/core-agent": "workspace:^", "@types/node": "catalog:", "@vitest/browser-playwright": "catalog:vitest", "@xsai/generate-speech": "catalog:", diff --git a/packages/stage-ui/src/libs/providers/providers/azure-openai/index.test.ts b/packages/provider-inference/src/providers/cloud/azure-openai/index.test.ts similarity index 90% rename from packages/stage-ui/src/libs/providers/providers/azure-openai/index.test.ts rename to packages/provider-inference/src/providers/cloud/azure-openai/index.test.ts index 22ea2823e..2d8ea4e2d 100644 --- a/packages/stage-ui/src/libs/providers/providers/azure-openai/index.test.ts +++ b/packages/provider-inference/src/providers/cloud/azure-openai/index.test.ts @@ -1,9 +1,10 @@ import type { JsonSchema } from 'xsschema' import { createSparkCommandTool } from '@proj-airi/core-agent/agents/spark-command' -import { getDefinedProvider } from '@proj-airi/provider-inference' import { afterEach, describe, expect, it, vi } from 'vitest' +import { providerAzureOpenAI } from './index' + interface ChatRequestBody { tools: Array<{ function: { @@ -40,11 +41,7 @@ describe('providerAzureOpenAI tool schemas', () => { const fetchMock = vi.fn().mockResolvedValue(new Response('{}')) vi.stubGlobal('fetch', fetchMock) - const providerDefinition = getDefinedProvider('azure-openai') - if (!providerDefinition) - throw new Error('Azure OpenAI provider definition is not registered.') - - const provider = await providerDefinition.createProvider({ + const provider = await providerAzureOpenAI.createProvider({ apiKey: 'test-key', baseUrl: 'https://example.openai.azure.com/openai/', }) diff --git a/packages/stage-ui/src/libs/providers/providers/openrouter-ai/index.test.ts b/packages/provider-inference/src/providers/cloud/openrouter-ai/index.test.ts similarity index 83% rename from packages/stage-ui/src/libs/providers/providers/openrouter-ai/index.test.ts rename to packages/provider-inference/src/providers/cloud/openrouter-ai/index.test.ts index 039c57da2..d8580aab9 100644 --- a/packages/stage-ui/src/libs/providers/providers/openrouter-ai/index.test.ts +++ b/packages/provider-inference/src/providers/cloud/openrouter-ai/index.test.ts @@ -1,11 +1,13 @@ -import type { ChatRequestOptions } from '@proj-airi/provider-inference' import type { ChatProviderWithExtraOptions } from '@xsai-ext/providers/utils' import type { JsonSchema } from 'xsschema' +import type { ChatRequestOptions } from '../../../types' + import { createSparkCommandTool } from '@proj-airi/core-agent/agents/spark-command' -import { getDefinedProvider } from '@proj-airi/provider-inference' import { afterEach, describe, expect, it, vi } from 'vitest' +import { providerOpenRouterAI } from './index' + interface ChatRequestBody { tools: Array<{ function: { @@ -35,11 +37,7 @@ describe('providerOpenRouterAI tool schemas', () => { }) it('maps AIRI reasoning modes to OpenRouter request fields', async () => { - const providerDefinition = getDefinedProvider('openrouter-ai') - if (!providerDefinition) - throw new Error('OpenRouter provider definition is not registered.') - - const provider = await providerDefinition.createProvider({ + const provider = await providerOpenRouterAI.createProvider({ apiKey: 'test-key', }) as ChatProviderWithExtraOptions @@ -58,11 +56,7 @@ describe('providerOpenRouterAI tool schemas', () => { const fetchMock = vi.fn().mockResolvedValue(new Response('{}')) vi.stubGlobal('fetch', fetchMock) - const providerDefinition = getDefinedProvider('openrouter-ai') - if (!providerDefinition) - throw new Error('OpenRouter provider definition is not registered.') - - const provider = await providerDefinition.createProvider({ + const provider = await providerOpenRouterAI.createProvider({ apiKey: 'test-key', }) if (!('chat' in provider)) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1680826ee..653c12e6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3917,6 +3917,9 @@ importers: specifier: 'catalog:' version: 4.4.3 devDependencies: + '@proj-airi/core-agent': + specifier: workspace:^ + version: link:../core-agent '@types/node': specifier: 'catalog:' version: 26.2.0