11import { beforeEach , describe , expect , it , vi } from "vitest" ;
22import type { OpenClawConfig } from "../config/types.js" ;
33import type { ImageGenerationProviderPlugin } from "../plugins/types.js" ;
4+ import { getImageGenerationProvider , listImageGenerationProviders } from "./provider-registry.js" ;
45
56const resolvePluginCapabilityProvidersMock = vi . hoisted ( ( ) =>
67 vi . fn < ( ) => ImageGenerationProviderPlugin [ ] > ( ( ) => [ ] ) ,
@@ -25,33 +26,21 @@ function createProvider(
2526 } ;
2627}
2728
28- type ImageProviderRegistry = typeof import ( "./provider-registry.js" ) ;
29-
30- function requireImageProvider (
31- registry : ImageProviderRegistry ,
32- id : string ,
33- ) : ImageGenerationProviderPlugin {
34- const provider = registry . getImageGenerationProvider ( id ) ;
29+ function requireImageProvider ( id : string ) : ImageGenerationProviderPlugin {
30+ const provider = getImageGenerationProvider ( id ) ;
3531 if ( ! provider ) {
3632 throw new Error ( `expected image generation provider ${ id } ` ) ;
3733 }
3834 return provider ;
3935}
4036
41- async function loadProviderRegistry ( ) : Promise < ImageProviderRegistry > {
42- vi . resetModules ( ) ;
43- return await import ( "./provider-registry.js" ) ;
44- }
45-
4637describe ( "image-generation provider registry" , ( ) => {
4738 beforeEach ( ( ) => {
48- vi . resetModules ( ) ;
4939 resolvePluginCapabilityProvidersMock . mockReset ( ) ;
5040 resolvePluginCapabilityProvidersMock . mockReturnValue ( [ ] ) ;
5141 } ) ;
5242
53- it ( "delegates provider resolution to the capability provider boundary" , async ( ) => {
54- const { listImageGenerationProviders } = await loadProviderRegistry ( ) ;
43+ it ( "delegates provider resolution to the capability provider boundary" , ( ) => {
5544 const cfg = { } as OpenClawConfig ;
5645
5746 expect ( listImageGenerationProviders ( cfg ) ) . toStrictEqual ( [ ] ) ;
@@ -61,9 +50,8 @@ describe("image-generation provider registry", () => {
6150 } ) ;
6251 } ) ;
6352
64- it ( "uses active plugin providers without loading from disk" , async ( ) => {
53+ it ( "uses active plugin providers without loading from disk" , ( ) => {
6554 resolvePluginCapabilityProvidersMock . mockReturnValue ( [ createProvider ( { id : "custom-image" } ) ] ) ;
66- const { getImageGenerationProvider } = await loadProviderRegistry ( ) ;
6755
6856 const provider = getImageGenerationProvider ( "custom-image" ) ;
6957
@@ -74,17 +62,15 @@ describe("image-generation provider registry", () => {
7462 } ) ;
7563 } ) ;
7664
77- it ( "ignores prototype-like provider ids and aliases" , async ( ) => {
65+ it ( "ignores prototype-like provider ids and aliases" , ( ) => {
7866 resolvePluginCapabilityProvidersMock . mockReturnValue ( [
7967 createProvider ( { id : "__proto__" , aliases : [ "constructor" , "prototype" ] } ) ,
8068 createProvider ( { id : "safe-image" , aliases : [ "safe-alias" , "constructor" ] } ) ,
8169 ] ) ;
82- const registry = await loadProviderRegistry ( ) ;
83- const { getImageGenerationProvider, listImageGenerationProviders } = registry ;
8470
8571 expect ( listImageGenerationProviders ( ) . map ( ( provider ) => provider . id ) ) . toEqual ( [ "safe-image" ] ) ;
8672 expect ( getImageGenerationProvider ( "__proto__" ) ) . toBeUndefined ( ) ;
8773 expect ( getImageGenerationProvider ( "constructor" ) ) . toBeUndefined ( ) ;
88- expect ( requireImageProvider ( registry , "safe-alias" ) . id ) . toBe ( "safe-image" ) ;
74+ expect ( requireImageProvider ( "safe-alias" ) . id ) . toBe ( "safe-image" ) ;
8975 } ) ;
9076} ) ;
0 commit comments