11import 'reflect-metadata'
22
3+ import * as YAML from 'yaml'
34import { Config } from '../../src/yaml/config'
45import {
56 Resource ,
67 ResourceConstructors ,
78 resourceToPlain
89} from '../../src/resources/resource'
9- import { Member , Role as MemberRole , Role } from '../../src/resources/member'
10+ import { NodeBase } from 'yaml/dist/nodes/Node'
11+ import { Member , Role as MemberRole } from '../../src/resources/member'
1012import { Repository } from '../../src/resources/repository'
1113import { RepositoryFile } from '../../src/resources/repository-file'
1214import { randomUUID } from 'crypto'
1315import { Team , Privacy as TeamPrivacy } from '../../src/resources/team'
1416import { RepositoryBranchProtectionRule } from '../../src/resources/repository-branch-protection-rule'
17+ import { Collection } from 'yaml/dist/nodes/Collection'
18+ import assert from 'node:assert'
1519import { toggleArchivedRepos } from '../../src/actions/shared/toggle-archived-repos'
1620import { State } from '../../src/terraform/state'
1721
@@ -167,13 +171,17 @@ test('clears comments on member removal', async () => {
167171
168172 const member = config . getResources ( Member ) [ 0 ]
169173
170- ; ( config . document . getIn ( [ 'members' , member . role ] ) as any ) . items [ 0 ] . comment =
171- comment
174+ const nodes = config . document . getIn ( [ 'members' , member . role ] ) as Collection
175+ const node = nodes . items [ 0 ] as NodeBase
176+ node . comment = comment
172177
173178 config . removeResource ( member )
174179
175- const updatedMembers = config . document . getIn ( [ 'members' , member . role ] ) as any
176- for ( const item of updatedMembers . items ) {
180+ const updatedMembers = config . document . getIn ( [
181+ 'members' ,
182+ member . role
183+ ] ) as Collection
184+ for ( const item of updatedMembers . items as NodeBase [ ] ) {
177185 expect ( item . comment ) . not . toEqual ( comment )
178186 }
179187} )
@@ -193,10 +201,12 @@ test('clears comments on repository property updates', async () => {
193201 const repositories = config . document . getIn ( [
194202 'repositories' ,
195203 repository . name
196- ] ) as any
197-
198- repositories . items . find ( ( i : any ) => i . key . value === property ) ! . value . comment =
199- comment
204+ ] ) as Collection
205+ const nodes = repositories . items as YAML . Pair < YAML . Scalar , NodeBase > [ ]
206+ const node = nodes . find ( i => i . key . value === property )
207+ assert ( node !== undefined )
208+ assert ( node . value !== null )
209+ node . value . comment = comment
200210
201211 repository [ property ] = description
202212
@@ -205,11 +215,15 @@ test('clears comments on repository property updates', async () => {
205215 const updatedRepositories = config . document . getIn ( [
206216 'repositories' ,
207217 repository . name
208- ] ) as any
209- expect (
210- updatedRepositories . items . find ( ( i : any ) => i . key . value === property ) ! . value
211- . comment
212- ) . toBeUndefined ( )
218+ ] ) as Collection
219+ const updatedNodes = updatedRepositories . items as YAML . Pair <
220+ YAML . Scalar ,
221+ NodeBase
222+ > [ ]
223+ const updatedNode = updatedNodes . find ( i => i . key . value === property )
224+ assert ( updatedNode !== undefined )
225+ assert ( updatedNode . value !== null )
226+ expect ( updatedNode . value . comment ) . toBeUndefined ( )
213227 expect ( config . getResources ( Repository ) [ 0 ] [ property ] ) . toEqual ( description )
214228} )
215229
@@ -220,15 +234,19 @@ test('does not clear comments on same member addition', async () => {
220234
221235 const member = config . getResources ( Member ) [ 0 ]
222236
223- const members = config . document . getIn ( [ 'members' , member . role ] ) as any
224- members . items [ 0 ] . comment = comment
237+ const nodes = config . document . getIn ( [ 'members' , member . role ] ) as Collection
238+ const node = nodes . items [ 0 ] as NodeBase
239+ node . comment = comment
225240
226241 config . addResource ( member )
227242
228- const updatedMembers = config . document . getIn ( [ 'members' , member . role ] ) as any
243+ const updatedMembers = config . document . getIn ( [
244+ 'members' ,
245+ member . role
246+ ] ) as Collection
229247
230248 expect (
231- updatedMembers . items . some ( ( i : any ) => i . comment === comment )
249+ ( updatedMembers . items as NodeBase [ ] ) . some ( i => i . comment === comment )
232250 ) . toBeTruthy ( )
233251} )
234252
@@ -245,20 +263,27 @@ test('does not clear comments on repository property updates to the same value',
245263 const repositories = config . document . getIn ( [
246264 'repositories' ,
247265 repository . name
248- ] ) as any
249- repositories . items . find ( ( i : any ) => i . key . value === property ) ! . value . comment =
250- comment
266+ ] ) as Collection
267+ const nodes = repositories . items as YAML . Pair < YAML . Scalar , NodeBase > [ ]
268+ const node = nodes . find ( i => i . key . value === property )
269+ assert ( node !== undefined )
270+ assert ( node . value !== null )
271+ node . value . comment = comment
251272
252273 config . addResource ( repository )
253274
254275 const updatedRepositories = config . document . getIn ( [
255276 'repositories' ,
256277 repository . name
257- ] ) as any
258- expect (
259- updatedRepositories . items . find ( ( i : any ) => i . key . value === property ) ! . value
260- . comment
261- ) . toEqual ( comment )
278+ ] ) as Collection
279+ const updatedNodes = updatedRepositories . items as YAML . Pair <
280+ YAML . Scalar ,
281+ NodeBase
282+ > [ ]
283+ const updatedNode = updatedNodes . find ( i => i . key . value === property )
284+ assert ( updatedNode !== undefined )
285+ assert ( updatedNode . value !== null )
286+ expect ( updatedNode . value . comment ) . toEqual ( comment )
262287} )
263288
264289test ( 'can add a repository followed by a repository branch protection rule' , async ( ) => {
@@ -285,15 +310,15 @@ test('does not remove properties when adding a team', async () => {
285310 const config = Config . FromPath ( )
286311
287312 const team = config . getResources ( Team ) [ 0 ]
288- const definedValues = Object . values ( resourceToPlain ( team ) as any ) . filter (
289- v => v !== undefined
290- )
313+ const definedValues = Object . values (
314+ resourceToPlain ( team ) as Record < string , unknown >
315+ ) . filter ( v => v !== undefined )
291316 expect ( definedValues ) . not . toHaveLength ( 0 )
292317 config . addResource ( new Team ( team . name ) , false )
293318
294319 const updatedTeam = config . getResources ( Team ) [ 0 ]
295320 const updatedDefinedValues = Object . values (
296- resourceToPlain ( updatedTeam ) as any
321+ resourceToPlain ( updatedTeam ) as Record < string , unknown >
297322 ) . filter ( v => v !== undefined )
298323 expect ( updatedDefinedValues ) . not . toHaveLength ( 0 )
299324} )
@@ -302,15 +327,15 @@ test('does remove undefined properties when adding a team with delete flag set',
302327 const config = Config . FromPath ( )
303328
304329 const team = config . getResources ( Team ) [ 0 ]
305- const definedValues = Object . values ( resourceToPlain ( team ) as any ) . filter (
306- v => v !== undefined
307- )
330+ const definedValues = Object . values (
331+ resourceToPlain ( team ) as Record < string , unknown >
332+ ) . filter ( v => v !== undefined )
308333 expect ( definedValues ) . not . toHaveLength ( 0 )
309334 config . addResource ( new Team ( team . name ) , true )
310335
311336 const updatedTeam = config . getResources ( Team ) [ 0 ]
312337 const updatedDefinedValues = Object . values (
313- resourceToPlain ( updatedTeam ) as any
338+ resourceToPlain ( updatedTeam ) as Record < string , unknown >
314339 ) . filter ( v => v !== undefined )
315340 expect ( updatedDefinedValues ) . toHaveLength ( 0 )
316341} )
@@ -338,7 +363,8 @@ members:
338363
339364 const undefinedMember = config
340365 . getResources ( Member )
341- . find ( m => m . username === 'undefined' ) !
366+ . find ( m => m . username === 'undefined' )
367+ assert ( undefinedMember !== undefined )
342368 config . removeResource ( undefinedMember )
343369 config . format ( )
344370 const formatted = config . toString ( ) . trim ( )
@@ -394,10 +420,12 @@ test('clears and re-adds repository fields when archiving/unarchiving', async ()
394420
395421 const archivedRepository = config
396422 . getResources ( Repository )
397- . find ( r => r . archived ) !
423+ . find ( r => r . archived )
424+ assert ( archivedRepository !== undefined )
398425 const unarchivedRepository = config
399426 . getResources ( Repository )
400- . find ( r => ! r . archived ) !
427+ . find ( r => ! r . archived )
428+ assert ( unarchivedRepository !== undefined )
401429
402430 expect ( archivedRepository . archived ) . toBe ( true )
403431 expect ( archivedRepository . visibility ) . not . toBeDefined ( )
@@ -413,9 +441,11 @@ test('clears and re-adds repository fields when archiving/unarchiving', async ()
413441
414442 await toggleArchivedRepos ( state , config )
415443
416- const previouslyArchivedRepository = config . findResource ( archivedRepository ) !
444+ const previouslyArchivedRepository = config . findResource ( archivedRepository )
445+ assert ( previouslyArchivedRepository !== undefined )
417446 const previouslyUnarchivedRepository =
418- config . findResource ( unarchivedRepository ) !
447+ config . findResource ( unarchivedRepository )
448+ assert ( previouslyUnarchivedRepository !== undefined )
419449
420450 expect ( previouslyArchivedRepository . archived ) . toBe ( false )
421451 expect ( previouslyArchivedRepository . visibility ) . toBeDefined ( )
0 commit comments