serverless/test/unit/lib/utils/fs/write-file-sync.test.js
2024-05-29 11:51:04 -04:00

65 lines
1.8 KiB
JavaScript

'use strict'
const fsp = require('fs').promises
const Serverless = require('../../../../../lib/serverless')
const writeFileSync = require('../../../../../lib/utils/fs/write-file-sync')
const readFileSync = require('../../../../../lib/utils/fs/read-file-sync')
const { expect } = require('chai')
const { getTmpFilePath } = require('../../../../utils/fs')
describe('#writeFileSync()', () => {
let serverless
beforeEach(() => {
serverless = new Serverless({ commands: [], options: {} })
})
it('should write a .json file synchronously', () => {
const tmpFilePath = getTmpFilePath('anything.json')
writeFileSync(tmpFilePath, { foo: 'bar' })
const obj = readFileSync(tmpFilePath)
expect(obj.foo).to.equal('bar')
})
it('should write a .yml file synchronously', async () => {
const tmpFilePath = getTmpFilePath('anything.yml')
writeFileSync(tmpFilePath, { foo: 'bar' })
return serverless.yamlParser.parse(tmpFilePath).then((obj) => {
expect(obj.foo).to.equal('bar')
})
})
it('should write a .yaml file synchronously', async () => {
const tmpFilePath = getTmpFilePath('anything.yaml')
writeFileSync(tmpFilePath, { foo: 'bar' })
return serverless.yamlParser.parse(tmpFilePath).then((obj) => {
expect(obj.foo).to.equal('bar')
})
})
it('should throw error if invalid path is provided', () => {
expect(() => {
writeFileSync(null)
}).to.throw(Error)
})
it('should be able to write an object with circular references', async () => {
const tmpFilePath = getTmpFilePath('anything.json')
const bar = {}
bar.foo = bar
const expected = '{\n "foo": {\n "$ref": "$"\n }\n}'
writeFileSync(tmpFilePath, bar, true)
return fsp.readFile(tmpFilePath, 'utf8').then((contents) => {
expect(contents).to.equal(expected)
})
})
})