@@ -72,6 +72,14 @@ describe('useComfyRegistryStore', () => {
7272 error : ReturnType < typeof ref < string | null > >
7373 listAllPacks : ReturnType < typeof vi . fn >
7474 getPackById : ReturnType < typeof vi . fn >
75+ inferPackFromNodeName : ReturnType < typeof vi . fn >
76+ search : ReturnType < typeof vi . fn >
77+ getPackVersions : ReturnType < typeof vi . fn >
78+ getPackByVersion : ReturnType < typeof vi . fn >
79+ getPublisherById : ReturnType < typeof vi . fn >
80+ listPacksForPublisher : ReturnType < typeof vi . fn >
81+ getNodeDefs : ReturnType < typeof vi . fn >
82+ postPackReview : ReturnType < typeof vi . fn >
7583 }
7684
7785 beforeEach ( ( ) => {
@@ -106,7 +114,15 @@ describe('useComfyRegistryStore', () => {
106114 // Otherwise return paginated results
107115 return Promise . resolve ( mockListResult )
108116 } ) ,
109- getPackById : vi . fn ( ) . mockResolvedValue ( mockNodePack )
117+ getPackById : vi . fn ( ) . mockResolvedValue ( mockNodePack ) ,
118+ inferPackFromNodeName : vi . fn ( ) . mockResolvedValue ( mockNodePack ) ,
119+ search : vi . fn ( ) . mockResolvedValue ( mockListResult ) ,
120+ getPackVersions : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
121+ getPackByVersion : vi . fn ( ) . mockResolvedValue ( { } ) ,
122+ getPublisherById : vi . fn ( ) . mockResolvedValue ( { } ) ,
123+ listPacksForPublisher : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
124+ getNodeDefs : vi . fn ( ) . mockResolvedValue ( { } ) ,
125+ postPackReview : vi . fn ( ) . mockResolvedValue ( { } )
110126 }
111127
112128 vi . mocked ( useComfyRegistryService ) . mockReturnValue (
@@ -186,4 +202,58 @@ describe('useComfyRegistryStore', () => {
186202 expect . any ( Object ) // abort signal
187203 )
188204 } )
205+
206+ describe ( 'inferPackFromNodeName' , ( ) => {
207+ it ( 'should fetch a pack by comfy node name' , async ( ) => {
208+ const store = useComfyRegistryStore ( )
209+ const nodeName = 'KSampler'
210+
211+ const result = await store . inferPackFromNodeName . call ( nodeName )
212+
213+ expect ( result ) . toEqual ( mockNodePack )
214+ expect ( mockRegistryService . inferPackFromNodeName ) . toHaveBeenCalledWith (
215+ nodeName ,
216+ expect . any ( Object ) // abort signal
217+ )
218+ } )
219+
220+ it ( 'should cache results' , async ( ) => {
221+ const store = useComfyRegistryStore ( )
222+ const nodeName = 'KSampler'
223+
224+ // First call
225+ const result1 = await store . inferPackFromNodeName . call ( nodeName )
226+ expect ( mockRegistryService . inferPackFromNodeName ) . toHaveBeenCalledTimes ( 1 )
227+
228+ // Second call - should use cache
229+ const result2 = await store . inferPackFromNodeName . call ( nodeName )
230+ expect ( mockRegistryService . inferPackFromNodeName ) . toHaveBeenCalledTimes ( 1 )
231+ expect ( result2 ) . toEqual ( result1 )
232+ } )
233+
234+ it ( 'should handle null results when node is not found' , async ( ) => {
235+ mockRegistryService . inferPackFromNodeName . mockResolvedValueOnce ( null )
236+
237+ const store = useComfyRegistryStore ( )
238+ const result = await store . inferPackFromNodeName . call ( 'NonExistentNode' )
239+
240+ expect ( result ) . toBeNull ( )
241+ } )
242+
243+ it ( 'should clear cache when clearCache is called' , async ( ) => {
244+ const store = useComfyRegistryStore ( )
245+ const nodeName = 'KSampler'
246+
247+ // First call to populate cache
248+ await store . inferPackFromNodeName . call ( nodeName )
249+ expect ( mockRegistryService . inferPackFromNodeName ) . toHaveBeenCalledTimes ( 1 )
250+
251+ // Clear cache
252+ store . clearCache ( )
253+
254+ // Call again - should hit the service again
255+ await store . inferPackFromNodeName . call ( nodeName )
256+ expect ( mockRegistryService . inferPackFromNodeName ) . toHaveBeenCalledTimes ( 2 )
257+ } )
258+ } )
189259} )
0 commit comments