@@ -2,6 +2,7 @@ import assert from 'assert';
2
2
import fsp from 'fs/promises' ;
3
3
import { beforeEach , describe , it , mock } from 'node:test' ;
4
4
import { createAmplifyDepUpdater } from './create_amplify_dep_updater.js' ;
5
+ import { EOL } from 'os' ;
5
6
6
7
void describe ( 'createAmplifyDepUpdater' , ( ) => {
7
8
const mockedFsReadFile = mock . method ( fsp , 'readFile' , ( ) =>
@@ -19,14 +20,43 @@ void describe('createAmplifyDepUpdater', () => {
19
20
} ) ,
20
21
) ;
21
22
const mockedFsWriteFile = mock . method ( fsp , 'writeFile' , mock . fn ( ) ) ;
23
+ const ghContextMocked = {
24
+ eventName : '' ,
25
+ sha : '' ,
26
+ ref : '' ,
27
+ workflow : '' ,
28
+ action : '' ,
29
+ actor : '' ,
30
+ job : '' ,
31
+ runAttempt : 0 ,
32
+ runNumber : 0 ,
33
+ runId : 0 ,
34
+ apiUrl : '' ,
35
+ serverUrl : '' ,
36
+ graphqlUrl : '' ,
37
+ payload : { } ,
38
+ issue : {
39
+ owner : '' ,
40
+ repo : '' ,
41
+ number : 0 ,
42
+ } ,
43
+ repo : {
44
+ owner : '' ,
45
+ repo : '' ,
46
+ } ,
47
+ } ;
22
48
23
49
beforeEach ( ( ) => {
24
50
mockedFsReadFile . mock . resetCalls ( ) ;
25
51
mockedFsWriteFile . mock . resetCalls ( ) ;
26
52
} ) ;
27
53
28
54
void it ( 'successfully pins new dev version' , async ( ) => {
29
- await createAmplifyDepUpdater ( [ { name : 'aws-cdk-lib' , version : '2.1.0' } ] ) ;
55
+ await createAmplifyDepUpdater (
56
+ [ { name : 'aws-cdk-lib' , version : '2.1.0' } ] ,
57
+ undefined ,
58
+ ghContextMocked ,
59
+ ) ;
30
60
assert . strictEqual ( mockedFsReadFile . mock . callCount ( ) , 1 ) ;
31
61
assert . strictEqual ( mockedFsWriteFile . mock . callCount ( ) , 1 ) ;
32
62
assert . deepStrictEqual (
@@ -54,6 +84,7 @@ void describe('createAmplifyDepUpdater', () => {
54
84
await createAmplifyDepUpdater (
55
85
[ { name : 'test-prod-package' , version : '1.1.0' } ] ,
56
86
[ 'test-prod-package' ] ,
87
+ ghContextMocked ,
57
88
) ;
58
89
assert . strictEqual ( mockedFsReadFile . mock . callCount ( ) , 1 ) ;
59
90
assert . strictEqual ( mockedFsWriteFile . mock . callCount ( ) , 1 ) ;
@@ -88,6 +119,7 @@ void describe('createAmplifyDepUpdater', () => {
88
119
{ name : 'test-prod-package' , version : '1.1.0' } ,
89
120
] ,
90
121
[ 'aws-cdk' , 'aws-cdk-lib' , 'test-prod-package' ] ,
122
+ ghContextMocked ,
91
123
) ;
92
124
assert . strictEqual ( mockedFsReadFile . mock . callCount ( ) , 1 ) ;
93
125
assert . strictEqual ( mockedFsWriteFile . mock . callCount ( ) , 1 ) ;
@@ -115,6 +147,54 @@ void describe('createAmplifyDepUpdater', () => {
115
147
) ;
116
148
} ) ;
117
149
150
+ void it ( 'creates changeset file for dependabot pull request' , async ( ) => {
151
+ const dependabotPRContext = {
152
+ ...ghContextMocked ,
153
+ payload : {
154
+ pull_request : {
155
+ number : 1 ,
156
+ body : 'Bumps aws-cdk-lib from 2.0.0 to 2.1.0' ,
157
+ head : {
158
+ ref : 'dependabot/test_version_update_branch' ,
159
+ // eslint-disable-next-line spellcheck/spell-checker
160
+ sha : 'abcd1234' , // used for naming the changeset file
161
+ } ,
162
+ } ,
163
+ } ,
164
+ } ;
165
+ const expectedChangesetContent = `---${ EOL } 'create-amplify': patch${ EOL } ---${ EOL + EOL } bump create amplify dependencies${ EOL } ` ;
166
+ await createAmplifyDepUpdater (
167
+ [ { name : 'aws-cdk-lib' , version : '2.1.0' } ] ,
168
+ undefined ,
169
+ dependabotPRContext ,
170
+ ) ;
171
+ assert . strictEqual ( mockedFsReadFile . mock . callCount ( ) , 1 ) ;
172
+ assert . strictEqual ( mockedFsWriteFile . mock . callCount ( ) , 2 ) ;
173
+ assert . deepStrictEqual (
174
+ mockedFsWriteFile . mock . calls [ 0 ] . arguments [ 1 ] ,
175
+ JSON . stringify (
176
+ {
177
+ defaultDevPackages : [
178
+ '@aws-amplify/backend' ,
179
+ '@aws-amplify/backend-cli' ,
180
+ 'aws-cdk-lib@2.1.0' , // updated
181
+ 'constructs@^10.0.0' ,
182
+ 'typescript@^5.0.0' ,
183
+ 'tsx' ,
184
+ 'esbuild' ,
185
+ ] ,
186
+ defaultProdPackages : [ 'aws-amplify' , 'test-prod-package@1.0.0' ] ,
187
+ } ,
188
+ null ,
189
+ 2 ,
190
+ ) ,
191
+ ) ;
192
+ assert . deepStrictEqual (
193
+ mockedFsWriteFile . mock . calls [ 1 ] . arguments [ 1 ] ,
194
+ expectedChangesetContent ,
195
+ ) ;
196
+ } ) ;
197
+
118
198
void it ( 'does nothing if there are no provided dependencies' , async ( ) => {
119
199
await createAmplifyDepUpdater ( [ ] ) ;
120
200
assert . strictEqual ( mockedFsReadFile . mock . callCount ( ) , 0 ) ;
0 commit comments