@@ -122,5 +122,113 @@ describe("Node Dependencies", () => {
122122 expect ( loggingTestTransport . logMessages [ 0 ] . message . trim ( ) ) . toBe ( "Found 1 dependency:" ) ;
123123 expect ( loggingTestTransport . logMessages [ 1 ] . message ) . toContain ( JSON . stringify ( singleDependency [ 0 ] ) ) ;
124124 } ) ;
125+
126+ describe ( "Staging dependencies - when version is not provided" , ( ) => {
127+ it ( "Should list staging node dependencies and display in console" , async ( ) => {
128+ mockAxiosGet (
129+ `https://myTeam.celonis.cloud/pacman/api/core/staging/packages/${ packageKey } /nodes/${ nodeKey } /dependencies` ,
130+ dependencies
131+ ) ;
132+
133+ await new NodeDependencyService ( testContext ) . listNodeDependencies ( packageKey , nodeKey , null , false ) ;
134+
135+ expect ( loggingTestTransport . logMessages . length ) . toBe ( 4 ) ;
136+ expect ( loggingTestTransport . logMessages [ 0 ] . message . trim ( ) ) . toBe ( "Found 3 dependencies:" ) ;
137+ expect ( loggingTestTransport . logMessages [ 1 ] . message ) . toContain ( JSON . stringify ( dependencies [ 0 ] ) ) ;
138+ expect ( loggingTestTransport . logMessages [ 2 ] . message ) . toContain ( JSON . stringify ( dependencies [ 1 ] ) ) ;
139+ expect ( loggingTestTransport . logMessages [ 3 ] . message ) . toContain ( JSON . stringify ( dependencies [ 2 ] ) ) ;
140+ } ) ;
141+
142+ it ( "Should list staging node dependencies and return as JSON" , async ( ) => {
143+ mockAxiosGet (
144+ `https://myTeam.celonis.cloud/pacman/api/core/staging/packages/${ packageKey } /nodes/${ nodeKey } /dependencies` ,
145+ dependencies
146+ ) ;
147+
148+ await new NodeDependencyService ( testContext ) . listNodeDependencies ( packageKey , nodeKey , null , true ) ;
149+
150+ const expectedFileName = loggingTestTransport . logMessages [ 0 ] . message . split ( FileService . fileDownloadedMessage ) [ 1 ] ;
151+
152+ expect ( mockWriteFileSync ) . toHaveBeenCalledWith (
153+ path . resolve ( process . cwd ( ) , expectedFileName ) ,
154+ expect . any ( String ) ,
155+ { encoding : "utf-8" }
156+ ) ;
157+
158+ const dependenciesTransport = JSON . parse ( mockWriteFileSync . mock . calls [ 0 ] [ 1 ] ) as NodeDependencyTransport [ ] ;
159+
160+ expect ( dependenciesTransport ) . toEqual ( dependencies ) ;
161+ } ) ;
162+
163+ it ( "Should handle empty staging dependencies list in console output" , async ( ) => {
164+ const emptyDependencies : NodeDependencyTransport [ ] = [ ] ;
165+
166+ mockAxiosGet (
167+ `https://myTeam.celonis.cloud/pacman/api/core/staging/packages/${ packageKey } /nodes/${ nodeKey } /dependencies` ,
168+ emptyDependencies
169+ ) ;
170+
171+ await new NodeDependencyService ( testContext ) . listNodeDependencies ( packageKey , nodeKey , null , false ) ;
172+
173+ expect ( loggingTestTransport . logMessages . length ) . toBe ( 1 ) ;
174+ expect ( loggingTestTransport . logMessages [ 0 ] . message . trim ( ) ) . toBe ( "No dependencies found for this node." ) ;
175+ } ) ;
176+
177+ it ( "Should handle empty staging dependencies list in JSON output" , async ( ) => {
178+ const emptyDependencies : NodeDependencyTransport [ ] = [ ] ;
179+
180+ mockAxiosGet (
181+ `https://myTeam.celonis.cloud/pacman/api/core/staging/packages/${ packageKey } /nodes/${ nodeKey } /dependencies` ,
182+ emptyDependencies
183+ ) ;
184+
185+ await new NodeDependencyService ( testContext ) . listNodeDependencies ( packageKey , nodeKey , null , true ) ;
186+
187+ const expectedFileName = loggingTestTransport . logMessages [ 0 ] . message . split ( FileService . fileDownloadedMessage ) [ 1 ] ;
188+
189+ expect ( mockWriteFileSync ) . toHaveBeenCalledWith (
190+ path . resolve ( process . cwd ( ) , expectedFileName ) ,
191+ expect . any ( String ) ,
192+ { encoding : "utf-8" }
193+ ) ;
194+
195+ const dependenciesTransport = JSON . parse ( mockWriteFileSync . mock . calls [ 0 ] [ 1 ] ) as NodeDependencyTransport [ ] ;
196+
197+ expect ( dependenciesTransport ) . toEqual ( [ ] ) ;
198+ } ) ;
199+
200+ it ( "Should list single staging node dependency" , async ( ) => {
201+ const singleDependency : NodeDependencyTransport [ ] = [
202+ {
203+ packageKey : "staging-dependency-package" ,
204+ key : "staging-dependency-key" ,
205+ type : "ANALYSIS" ,
206+ } ,
207+ ] ;
208+
209+ mockAxiosGet (
210+ `https://myTeam.celonis.cloud/pacman/api/core/staging/packages/${ packageKey } /nodes/${ nodeKey } /dependencies` ,
211+ singleDependency
212+ ) ;
213+
214+ await new NodeDependencyService ( testContext ) . listNodeDependencies ( packageKey , nodeKey , null , false ) ;
215+
216+ expect ( loggingTestTransport . logMessages . length ) . toBe ( 2 ) ;
217+ expect ( loggingTestTransport . logMessages [ 0 ] . message . trim ( ) ) . toBe ( "Found 1 dependency:" ) ;
218+ expect ( loggingTestTransport . logMessages [ 1 ] . message ) . toContain ( JSON . stringify ( singleDependency [ 0 ] ) ) ;
219+ } ) ;
220+
221+ it ( "Should handle undefined version (same as null)" , async ( ) => {
222+ mockAxiosGet (
223+ `https://myTeam.celonis.cloud/pacman/api/core/staging/packages/${ packageKey } /nodes/${ nodeKey } /dependencies` ,
224+ dependencies
225+ ) ;
226+
227+ await new NodeDependencyService ( testContext ) . listNodeDependencies ( packageKey , nodeKey , undefined , false ) ;
228+
229+ expect ( loggingTestTransport . logMessages . length ) . toBe ( 4 ) ;
230+ expect ( loggingTestTransport . logMessages [ 0 ] . message . trim ( ) ) . toBe ( "Found 3 dependencies:" ) ;
231+ } ) ;
232+ } ) ;
125233} ) ;
126234
0 commit comments