@@ -55,8 +55,17 @@ describe('metadata queries', () => {
55
55
56
56
} )
57
57
58
- test ( 'will set milestones correctly' , async ( ) => {
59
- const settings = { do : 'stale' , days : 10 , ignore_milestones : true }
58
+ test . each ( [
59
+ { draft : true , milestones : true , projects : true } ,
60
+ { draft : false , milestones : true , projects : true } ,
61
+ { draft : true , milestones : false , projects : true } ,
62
+ { draft : true , milestones : true , projects : false } ,
63
+ { draft : false , milestones : false , projects : true } ,
64
+ { draft : true , milestones : false , projects : false } ,
65
+ { draft : false , milestones : true , projects : false } ,
66
+ { draft : false , milestones : false , projects : false }
67
+ ] ) ( 'will set %s correctly' , async ( { draft, milestones, projects } ) => {
68
+ const settings = { do : 'stale' , days : 10 , ignore_drafts : draft , ignore_milestones : milestones , ignore_projects : projects }
60
69
61
70
const stale = new Stale ( )
62
71
const context = createMockContext ( [
@@ -68,64 +77,7 @@ describe('metadata queries', () => {
68
77
// no types specified so we assume both types. Hence none passed to search API.
69
78
expect ( isParamsNoType ( context ) ) . toBe ( true )
70
79
expect ( isParamsNoLabel ( context ) ) . toBe ( true )
71
- expect ( isMetadataIncluded ( context , false , true ) ) . toBe ( true )
72
- expect ( results . schedule . issues . length ) . toBe ( 1 )
73
- expect ( results . schedule . pulls . length ) . toBe ( 1 )
74
- expect ( results . status ) . toBe ( 'pass' )
75
- } )
76
-
77
- test ( 'will set projects correctly' , async ( ) => {
78
- const settings = { do : 'stale' , days : 10 , ignore_projects : true }
79
-
80
- const stale = new Stale ( )
81
- const context = createMockContext ( [
82
- { number : 1 } ,
83
- { number : 2 , pull_request : { } }
84
- ] )
85
-
86
- const results = await stale . processValidate ( context , settings )
87
- // no types specified so we assume both types. Hence none passed to search API.
88
- expect ( isParamsNoType ( context ) ) . toBe ( true )
89
- expect ( isParamsNoLabel ( context ) ) . toBe ( true )
90
- expect ( isMetadataIncluded ( context , true , false ) ) . toBe ( true )
91
- expect ( results . schedule . issues . length ) . toBe ( 1 )
92
- expect ( results . schedule . pulls . length ) . toBe ( 1 )
93
- expect ( results . status ) . toBe ( 'pass' )
94
- } )
95
-
96
- test ( 'will not set milestones and projects if not specified' , async ( ) => {
97
- const settings = { do : 'stale' , days : 10 }
98
-
99
- const stale = new Stale ( )
100
- const context = createMockContext ( [
101
- { number : 1 } ,
102
- { number : 2 , pull_request : { } }
103
- ] )
104
-
105
- const results = await stale . processValidate ( context , settings )
106
- // no types specified so we assume both types. Hence none passed to search API.
107
- expect ( isParamsNoType ( context ) ) . toBe ( true )
108
- expect ( isParamsNoLabel ( context ) ) . toBe ( true )
109
- expect ( isMetadataIncluded ( context , false , false ) ) . toBe ( true )
110
- expect ( results . schedule . issues . length ) . toBe ( 1 )
111
- expect ( results . schedule . pulls . length ) . toBe ( 1 )
112
- expect ( results . status ) . toBe ( 'pass' )
113
- } )
114
-
115
- test ( 'will set projects and milestones correctly' , async ( ) => {
116
- const settings = { do : 'stale' , days : 10 , ignore_projects : true , ignore_milestones : true }
117
-
118
- const stale = new Stale ( )
119
- const context = createMockContext ( [
120
- { number : 1 } ,
121
- { number : 2 , pull_request : { } }
122
- ] )
123
-
124
- const results = await stale . processValidate ( context , settings )
125
- // no types specified so we assume both types. Hence none passed to search API.
126
- expect ( isParamsNoType ( context ) ) . toBe ( true )
127
- expect ( isParamsNoLabel ( context ) ) . toBe ( true )
128
- expect ( isMetadataIncluded ( context , true , true ) ) . toBe ( true )
80
+ expect ( isMetadataIncluded ( context , draft , milestones , projects ) ) . toBe ( true )
129
81
expect ( results . schedule . issues . length ) . toBe ( 1 )
130
82
expect ( results . schedule . pulls . length ) . toBe ( 1 )
131
83
expect ( results . status ) . toBe ( 'pass' )
@@ -396,10 +348,14 @@ const isParamsNoLabel = (context) => {
396
348
) . length === 0
397
349
}
398
350
399
- const isMetadataIncluded = ( context , project , milestone ) => {
351
+ const isMetadataIncluded = ( context , draft , milestone , project ) => {
400
352
return context . octokit . search . issuesAndPullRequests . mock . calls
401
353
. filter (
402
- param => ( milestone === param [ 0 ] . q . includes ( 'no:milestone' ) ) && ( project === param [ 0 ] . q . includes ( 'no:project' ) )
354
+ param =>
355
+ ( draft === param [ 0 ] . q . includes ( '-is:draft' ) ) &&
356
+ ( project === param [ 0 ] . q . includes ( 'no:project' ) ) &&
357
+ ( milestone === param [ 0 ] . q . includes ( 'no:milestone' ) ) &&
358
+ true
403
359
) . length !== 0
404
360
}
405
361
0 commit comments