9
9
10
10
const execMock = jest . fn ( ) ;
11
11
const echoMock = jest . fn ( ) ;
12
- const exitMock = jest . fn ( ) ;
13
12
const catMock = jest . fn ( ) ;
14
13
const sedMock = jest . fn ( ) ;
15
14
const writeFileSyncMock = jest . fn ( ) ;
15
+ const updateTemplatePackageMock = jest . fn ( ) ;
16
16
17
17
jest
18
18
. mock ( 'shelljs' , ( ) => ( {
19
19
exec : execMock ,
20
20
echo : echoMock ,
21
- exit : exitMock ,
22
21
cat : catMock ,
23
22
sed : sedMock ,
24
23
} ) )
24
+ . mock ( './../update-template-package' , ( ) => updateTemplatePackageMock )
25
25
. mock ( './../scm-utils' , ( ) => ( {
26
26
saveFiles : jest . fn ( ) ,
27
27
} ) )
@@ -45,7 +45,7 @@ describe('set-rn-version', () => {
45
45
it ( 'should set nightly version' , ( ) => {
46
46
catMock . mockImplementation ( path => {
47
47
if ( path === 'packages/react-native/package.json' ) {
48
- return '{"name": "myPackage", "version": 2}' ;
48
+ return '{"name": "myPackage", "version": 2, "dependencies": {"@react-native/package-a": "nightly", "@react-native/package-b": "^0.73.0"} }' ;
49
49
} else if (
50
50
path === 'scripts/versiontemplates/ReactNativeVersion.java.template' ||
51
51
path === 'scripts/versiontemplates/RCTVersion.m.template' ||
@@ -58,13 +58,14 @@ describe('set-rn-version', () => {
58
58
}
59
59
} ) ;
60
60
61
- execMock
62
- . mockReturnValueOnce ( { code : 0 } )
63
- . mockReturnValueOnce ( { stdout : 'line1\nline2\nline3\n' } ) ;
61
+ execMock . mockReturnValueOnce ( { stdout : 'line1\nline2\nline3\n' } ) ;
64
62
sedMock . mockReturnValueOnce ( { code : 0 } ) ;
65
63
66
64
const version = '0.81.0-nightly-29282302-abcd1234' ;
67
- setReactNativeVersion ( version , 'nightly' ) ;
65
+ const nightlyVersions = {
66
+ '@react-native/package-a' : version ,
67
+ } ;
68
+ setReactNativeVersion ( version , nightlyVersions , 'nightly' ) ;
68
69
69
70
expect ( sedMock ) . toHaveBeenCalledWith (
70
71
'-i' ,
@@ -91,14 +92,19 @@ describe('set-rn-version', () => {
91
92
expect ( writeFileSyncMock . mock . calls [ 4 ] [ 0 ] ) . toBe (
92
93
'packages/react-native/package.json' ,
93
94
) ;
94
- expect ( writeFileSyncMock . mock . calls [ 4 ] [ 1 ] ) . toBe (
95
- `{\n "name": "myPackage",\n "version": "${ version } "\n}` ,
96
- ) ;
97
-
98
- expect ( exitMock . mock . calls [ 0 ] [ 0 ] ) . toBe ( 0 ) ;
99
- expect ( execMock . mock . calls [ 0 ] [ 0 ] ) . toBe (
100
- `node scripts/set-rn-template-version.js ${ version } ` ,
101
- ) ;
95
+ expect ( writeFileSyncMock . mock . calls [ 4 ] [ 1 ] ) . toBe ( `{
96
+ "name": "myPackage",
97
+ "version": "${ version } ",
98
+ "dependencies": {
99
+ "@react-native/package-a": "0.81.0-nightly-29282302-abcd1234",
100
+ "@react-native/package-b": "^0.73.0"
101
+ }
102
+ }` ) ;
103
+
104
+ expect ( updateTemplatePackageMock ) . toHaveBeenCalledWith ( {
105
+ '@react-native/package-a' : '0.81.0-nightly-29282302-abcd1234' ,
106
+ 'react-native' : version ,
107
+ } ) ;
102
108
} ) ;
103
109
104
110
it ( 'should set release version' , ( ) => {
@@ -109,13 +115,11 @@ describe('set-rn-version', () => {
109
115
return 'exports.version = {major: ${major}, minor: ${minor}, patch: ${patch}, prerelease: ${prerelease}}' ;
110
116
} ) ;
111
117
112
- execMock
113
- . mockReturnValueOnce ( { code : 0 } )
114
- . mockReturnValueOnce ( { stdout : 'line1\nline2\nline3\n' } ) ;
118
+ execMock . mockReturnValueOnce ( { stdout : 'line1\nline2\nline3\n' } ) ;
115
119
sedMock . mockReturnValueOnce ( { code : 0 } ) ;
116
120
117
121
const version = '0.81.0' ;
118
- setReactNativeVersion ( version , 'release' ) ;
122
+ setReactNativeVersion ( version , null , 'release' ) ;
119
123
120
124
expect ( sedMock ) . toHaveBeenCalledWith (
121
125
'-i' ,
@@ -137,21 +141,18 @@ describe('set-rn-version', () => {
137
141
`{\n "name": "myPackage",\n "version": "${ version } "\n}` ,
138
142
) ;
139
143
140
- expect ( exitMock . mock . calls [ 0 ] [ 0 ] ) . toBe ( 0 ) ;
144
+ expect ( updateTemplatePackageMock ) . toHaveBeenCalledWith ( {
145
+ 'react-native' : version ,
146
+ } ) ;
141
147
expect ( execMock . mock . calls [ 0 ] [ 0 ] ) . toBe (
142
- `node scripts/set-rn-template-version.js ${ version } ` ,
143
- ) ;
144
- expect ( execMock . mock . calls [ 1 ] [ 0 ] ) . toBe (
145
148
`diff -r ./rn-set-version/ . | grep '^[>]' | grep -c ${ version } ` ,
146
149
) ;
147
150
} ) ;
148
151
149
152
it ( 'should fail validation' , ( ) => {
150
153
catMock . mockReturnValue ( '{}' ) ;
151
154
152
- execMock
153
- . mockReturnValueOnce ( { code : 0 } )
154
- . mockReturnValueOnce ( { stdout : 'line1\nline2\n' } ) ;
155
+ execMock . mockReturnValueOnce ( { stdout : 'line1\nline2\n' } ) ;
155
156
sedMock . mockReturnValueOnce ( { code : 0 } ) ;
156
157
const filesToValidate = [
157
158
'packages/react-native/package.json' ,
@@ -160,9 +161,8 @@ describe('set-rn-version', () => {
160
161
] ;
161
162
162
163
const version = '0.81.0' ;
163
- setReactNativeVersion ( version , 'release' ) ;
164
+ setReactNativeVersion ( version , null , 'release' ) ;
164
165
165
- expect ( exitMock ) . toHaveBeenCalledWith ( 0 ) ;
166
166
expect ( echoMock ) . toHaveBeenNthCalledWith (
167
167
1 ,
168
168
'The tmp versioning folder is ./rn-set-version/' ,
0 commit comments