@@ -8,6 +8,13 @@ import { ContainerState, DockerContainer } from '@app/unraid-api/graph/resolvers
88import  {  DockerResolver  }  from  '@app/unraid-api/graph/resolvers/docker/docker.resolver.js' ; 
99import  {  DockerService  }  from  '@app/unraid-api/graph/resolvers/docker/docker.service.js' ; 
1010import  {  DockerOrganizerService  }  from  '@app/unraid-api/graph/resolvers/docker/organizer/docker-organizer.service.js' ; 
11+ import  {  GraphQLFieldHelper  }  from  '@app/unraid-api/utils/graphql-field-helper.js' ; 
12+ 
13+ vi . mock ( '@app/unraid-api/utils/graphql-field-helper.js' ,  ( )  =>  ( { 
14+     GraphQLFieldHelper : { 
15+         isFieldRequested : vi . fn ( ) , 
16+     } , 
17+ } ) ) ; 
1118
1219describe ( 'DockerResolver' ,  ( )  =>  { 
1320    let  resolver : DockerResolver ; 
@@ -41,6 +48,9 @@ describe('DockerResolver', () => {
4148
4249        resolver  =  module . get < DockerResolver > ( DockerResolver ) ; 
4350        dockerService  =  module . get < DockerService > ( DockerService ) ; 
51+ 
52+         // Reset mocks before each test 
53+         vi . clearAllMocks ( ) ; 
4454    } ) ; 
4555
4656    it ( 'should be defined' ,  ( )  =>  { 
@@ -80,19 +90,13 @@ describe('DockerResolver', () => {
8090            } , 
8191        ] ; 
8292        vi . mocked ( dockerService . getContainers ) . mockResolvedValue ( mockContainers ) ; 
93+         vi . mocked ( GraphQLFieldHelper . isFieldRequested ) . mockReturnValue ( false ) ; 
8394
84-         const  mockInfo  =  { 
85-             fieldNodes : [ 
86-                 { 
87-                     selectionSet : { 
88-                         selections : [ ] , 
89-                     } , 
90-                 } , 
91-             ] , 
92-         }  as  any ; 
95+         const  mockInfo  =  { }  as  any ; 
9396
9497        const  result  =  await  resolver . containers ( false ,  mockInfo ) ; 
9598        expect ( result ) . toEqual ( mockContainers ) ; 
99+         expect ( GraphQLFieldHelper . isFieldRequested ) . toHaveBeenCalledWith ( mockInfo ,  'sizeRootFs' ) ; 
96100        expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : false ,  size : false  } ) ; 
97101    } ) ; 
98102
@@ -113,99 +117,48 @@ describe('DockerResolver', () => {
113117            } , 
114118        ] ; 
115119        vi . mocked ( dockerService . getContainers ) . mockResolvedValue ( mockContainers ) ; 
120+         vi . mocked ( GraphQLFieldHelper . isFieldRequested ) . mockReturnValue ( true ) ; 
116121
117-         const  mockInfoWithSize  =  { 
118-             fieldNodes : [ 
119-                 { 
120-                     selectionSet : { 
121-                         selections : [ 
122-                             { 
123-                                 kind : 'Field' , 
124-                                 name : {  value : 'sizeRootFs'  } , 
125-                             } , 
126-                         ] , 
127-                     } , 
128-                 } , 
129-             ] , 
130-         }  as  any ; 
122+         const  mockInfo  =  { }  as  any ; 
131123
132-         const  result  =  await  resolver . containers ( false ,  mockInfoWithSize ) ; 
124+         const  result  =  await  resolver . containers ( false ,  mockInfo ) ; 
133125        expect ( result ) . toEqual ( mockContainers ) ; 
126+         expect ( GraphQLFieldHelper . isFieldRequested ) . toHaveBeenCalledWith ( mockInfo ,  'sizeRootFs' ) ; 
134127        expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : false ,  size : true  } ) ; 
135128    } ) ; 
136129
137-     it ( 'should request size when inline fragment  is present ' ,  async  ( )  =>  { 
130+     it ( 'should request size when GraphQLFieldHelper indicates sizeRootFs  is requested ' ,  async  ( )  =>  { 
138131        const  mockContainers : DockerContainer [ ]  =  [ ] ; 
139132        vi . mocked ( dockerService . getContainers ) . mockResolvedValue ( mockContainers ) ; 
133+         vi . mocked ( GraphQLFieldHelper . isFieldRequested ) . mockReturnValue ( true ) ; 
140134
141-         const  mockInfoWithFragment  =  { 
142-             fieldNodes : [ 
143-                 { 
144-                     selectionSet : { 
145-                         selections : [ 
146-                             { 
147-                                 kind : 'InlineFragment' , 
148-                             } , 
149-                         ] , 
150-                     } , 
151-                 } , 
152-             ] , 
153-         }  as  any ; 
135+         const  mockInfo  =  { }  as  any ; 
154136
155-         await  resolver . containers ( false ,  mockInfoWithFragment ) ; 
137+         await  resolver . containers ( false ,  mockInfo ) ; 
138+         expect ( GraphQLFieldHelper . isFieldRequested ) . toHaveBeenCalledWith ( mockInfo ,  'sizeRootFs' ) ; 
156139        expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : false ,  size : true  } ) ; 
157140    } ) ; 
158141
159-     it ( 'should request size when fragment spread  is present ' ,  async  ( )  =>  { 
142+     it ( 'should not  request size when GraphQLFieldHelper indicates sizeRootFs  is not requested ' ,  async  ( )  =>  { 
160143        const  mockContainers : DockerContainer [ ]  =  [ ] ; 
161144        vi . mocked ( dockerService . getContainers ) . mockResolvedValue ( mockContainers ) ; 
145+         vi . mocked ( GraphQLFieldHelper . isFieldRequested ) . mockReturnValue ( false ) ; 
162146
163-         const  mockInfoWithFragmentSpread  =  { 
164-             fieldNodes : [ 
165-                 { 
166-                     selectionSet : { 
167-                         selections : [ 
168-                             { 
169-                                 kind : 'FragmentSpread' , 
170-                             } , 
171-                         ] , 
172-                     } , 
173-                 } , 
174-             ] , 
175-         }  as  any ; 
147+         const  mockInfo  =  { }  as  any ; 
176148
177-         await  resolver . containers ( false ,  mockInfoWithFragmentSpread ) ; 
178-         expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : false ,  size : true  } ) ; 
149+         await  resolver . containers ( false ,  mockInfo ) ; 
150+         expect ( GraphQLFieldHelper . isFieldRequested ) . toHaveBeenCalledWith ( mockInfo ,  'sizeRootFs' ) ; 
151+         expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : false ,  size : false  } ) ; 
179152    } ) ; 
180153
181-     it ( 'should not request size when other fields are requested ' ,  async  ( )  =>  { 
154+     it ( 'should handle skipCache parameter ' ,  async  ( )  =>  { 
182155        const  mockContainers : DockerContainer [ ]  =  [ ] ; 
183156        vi . mocked ( dockerService . getContainers ) . mockResolvedValue ( mockContainers ) ; 
157+         vi . mocked ( GraphQLFieldHelper . isFieldRequested ) . mockReturnValue ( false ) ; 
184158
185-         const  mockInfoWithOtherFields  =  { 
186-             fieldNodes : [ 
187-                 { 
188-                     selectionSet : { 
189-                         selections : [ 
190-                             { 
191-                                 kind : 'Field' , 
192-                                 name : {  value : 'id'  } , 
193-                             } , 
194-                             { 
195-                                 kind : 'Field' , 
196-                                 name : {  value : 'names'  } , 
197-                             } , 
198-                             { 
199-                                 kind : 'Field' , 
200-                                 name : {  value : 'state'  } , 
201-                             } , 
202-                         ] , 
203-                     } , 
204-                 } , 
205-             ] , 
206-         }  as  any ; 
159+         const  mockInfo  =  { }  as  any ; 
207160
208-         await  resolver . containers ( false ,   mockInfoWithOtherFields ) ; 
209-         expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : false ,  size : false  } ) ; 
161+         await  resolver . containers ( true ,   mockInfo ) ; 
162+         expect ( dockerService . getContainers ) . toHaveBeenCalledWith ( {  skipCache : true ,  size : false  } ) ; 
210163    } ) ; 
211164} ) ; 
0 commit comments