@@ -180,6 +180,50 @@ test('multiple changes in one file', async () => {
180180 console . info ( content )
181181} )
182182
183+ test ( 'change in multi file' , async ( ) => {
184+ process . env [ 'VALUE_FILE' ] = 'fixtures/multivalue.yaml'
185+ process . env [ 'WORK_DIR' ] = '__tests__'
186+ process . env [ 'VALUE_PATH' ] = '[0].backend.version'
187+ process . env [ 'VALUE' ] = 'v1.1.0'
188+ process . env [ 'BRANCH' ] = 'deployment/v1.1.0'
189+ process . env [ 'QUOTING_TYPE' ] = '"'
190+
191+ type Result = {
192+ backend : { version : string }
193+ frontend : ContentNode
194+ }
195+
196+ const [ { json, content } ] = await runTest < Result > ( new EnvOptions ( ) )
197+
198+ const jsonArray = json as unknown as Result [ ]
199+
200+ expect ( jsonArray [ 0 ] . backend . version ) . toEqual ( process . env [ 'VALUE' ] )
201+ expect ( jsonArray [ 1 ] . backend . version ) . not . toEqual ( process . env [ 'VALUE' ] )
202+ console . info ( content )
203+ console . info ( json )
204+ } )
205+
206+ test ( 'multiple changes in a multifile' , async ( ) => {
207+ process . env [ 'VALUE_FILE' ] = 'fixtures/multivalue.yaml'
208+ process . env [ 'CHANGES' ] =
209+ '{"[0].backend.version": "v1.1.0", "[1].containers[1].image": "node:alpine"}'
210+
211+ type Result = {
212+ backend : { version : string }
213+ containers : { name : string ; image : string } [ ]
214+ }
215+
216+ const [ { json, content } ] = await runTest < Result > ( new EnvOptions ( ) )
217+
218+ const jsonArray = json as unknown as Result [ ]
219+
220+ expect ( jsonArray [ 0 ] . backend . version ) . toEqual ( 'v1.1.0' )
221+ expect ( jsonArray [ 1 ] . backend . version ) . toEqual ( 'v1.2.0' )
222+ expect ( jsonArray [ 0 ] . containers [ 1 ] . image ) . toEqual ( 'node:latest' )
223+ expect ( jsonArray [ 1 ] . containers [ 1 ] . image ) . toEqual ( 'node:alpine' )
224+ console . info ( content )
225+ } )
226+
183227test ( 'multiple changes in multiple files' , async ( ) => {
184228 process . env [ 'CHANGES' ] = `{
185229 "fixtures/values.yaml": {"backend.version": "v1.1.0", "containers[1].image": "node:alpine"},
@@ -201,6 +245,37 @@ test('multiple changes in multiple files', async () => {
201245 console . info ( results [ 1 ] . content )
202246} )
203247
248+ test ( 'multiple changes in multiple files, including multifiles' , async ( ) => {
249+ process . env [ 'CHANGES' ] = `{
250+ "fixtures/values.yaml": {"backend.version": "v1.1.0", "containers[1].image": "node:alpine"},
251+ "fixtures/multivalue.yaml": {"[0].backend.version": "v1.1.0", "[1].containers[1].image": "node:alpine"},
252+ "fixtures/values.prod.yaml": {"backend.version": "v1.3.0", "frontend": true}
253+ }`
254+
255+ type Result = {
256+ backend : { version : string }
257+ fronted : boolean
258+ containers : { name : string ; image : string } [ ]
259+ }
260+
261+ const results = await runTest < Result > ( new EnvOptions ( ) )
262+
263+ expect ( results [ 0 ] . json . backend . version ) . toEqual ( 'v1.1.0' )
264+ expect ( results [ 0 ] . json . containers [ 1 ] . image ) . toEqual ( 'node:alpine' )
265+ console . info ( results [ 0 ] . content )
266+
267+ const jsonArray = results [ 1 ] . json as unknown as Result [ ]
268+
269+ expect ( jsonArray [ 0 ] . backend . version ) . toEqual ( 'v1.1.0' )
270+ expect ( jsonArray [ 1 ] . backend . version ) . toEqual ( 'v1.2.0' )
271+ expect ( jsonArray [ 0 ] . containers [ 1 ] . image ) . toEqual ( 'node:latest' )
272+ expect ( jsonArray [ 1 ] . containers [ 1 ] . image ) . toEqual ( 'node:alpine' )
273+ console . info ( results [ 1 ] . content )
274+
275+ expect ( results [ 2 ] . json . backend . version ) . toEqual ( 'v1.3.0' )
276+ expect ( results [ 2 ] . json . frontend ) . toEqual ( true )
277+ console . info ( results [ 2 ] . content )
278+ } )
204279test ( 'append array node' , async ( ) => {
205280 process . env [ 'CHANGES' ] = `{
206281 "fixtures/values.yaml": {
0 commit comments