11import { join , relative , resolve } from 'path'
2- import { appendFileSync , ensureDirSync , ensureFileSync , remove } from 'fs-extra'
2+ import {
3+ appendFileSync ,
4+ ensureDirSync ,
5+ ensureFileSync ,
6+ remove ,
7+ writeFileSync
8+ } from 'fs-extra'
39import { TextDocument , window , workspace } from 'vscode'
410import {
511 exists ,
@@ -8,7 +14,8 @@ import {
814 isDirectory ,
915 isSameOrChild ,
1016 getModifiedTime ,
11- findOrCreateDvcYamlFile
17+ findOrCreateDvcYamlFile ,
18+ writeJson
1219} from '.'
1320import { dvcDemoPath } from '../test/util'
1421import { DOT_DVC } from '../cli/dvc/constants'
@@ -21,12 +28,14 @@ jest.mock('fs-extra', () => {
2128 __esModule : true ,
2229 ...actualModule ,
2330 appendFileSync : jest . fn ( ) ,
24- ensureFileSync : jest . fn ( )
31+ ensureFileSync : jest . fn ( ) ,
32+ writeFileSync : jest . fn ( )
2533 }
2634} )
2735
2836const mockedAppendFileSync = jest . mocked ( appendFileSync )
2937const mockedEnsureFileSync = jest . mocked ( ensureFileSync )
38+ const mockedWriteFileSync = jest . mocked ( writeFileSync )
3039const mockedWorkspace = jest . mocked ( workspace )
3140const mockedWindow = jest . mocked ( window )
3241const mockedOpenTextDocument = jest . fn ( )
@@ -39,6 +48,29 @@ beforeEach(() => {
3948 jest . resetAllMocks ( )
4049} )
4150
51+ describe ( 'writeJson' , ( ) => {
52+ it ( 'should write unformatted json in given file' , ( ) => {
53+ writeJson ( 'file-name.json' , { array : [ 1 , 2 , 3 ] , number : 1 } )
54+
55+ expect ( mockedWriteFileSync ) . toHaveBeenCalledWith (
56+ 'file-name.json' ,
57+ '{"array":[1,2,3],"number":1}'
58+ )
59+ } )
60+
61+ it ( 'should write formatted json in given file' , ( ) => {
62+ writeJson ( 'file-name.json' , { array : [ 1 , 2 , 3 ] , number : 1 } , true )
63+
64+ const formattedJson =
65+ '{\n "array": [\n 1,\n 2,\n 3\n ],\n "number": 1\n}'
66+
67+ expect ( mockedWriteFileSync ) . toHaveBeenCalledWith (
68+ 'file-name.json' ,
69+ formattedJson
70+ )
71+ } )
72+ } )
73+
4274describe ( 'findDvcRootPaths' , ( ) => {
4375 it ( 'should find the dvc root if it exists in the given folder' , async ( ) => {
4476 const dvcRoots = await findDvcRootPaths ( dvcDemoPath )
0 commit comments