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

61 lines
1.8 KiB
JavaScript

'use strict'
const fsp = require('fs').promises
const Serverless = require('../../../../../lib/serverless')
const chai = require('chai')
const writeFile = require('../../../../../lib/utils/fs/write-file')
const readFile = require('../../../../../lib/utils/fs/read-file')
const { getTmpFilePath } = require('../../../../utils/fs')
// Configure chai
chai.use(require('chai-as-promised'))
chai.use(require('sinon-chai'))
const expect = require('chai').expect
describe('#writeFile()', function () {
let serverless
this.timeout(0)
beforeEach(() => {
serverless = new Serverless({ commands: [], options: {} })
})
it('should write a .json file asynchronously', async () => {
const tmpFilePath = getTmpFilePath('anything.json')
return writeFile(tmpFilePath, { foo: 'bar' }).then(() =>
expect(readFile(tmpFilePath)).to.eventually.deep.equal({ foo: 'bar' }),
)
})
it('should write a .yml file synchronously', async () => {
const tmpFilePath = getTmpFilePath('anything.yml')
return writeFile(tmpFilePath, { foo: 'bar' }).then(() =>
expect(serverless.yamlParser.parse(tmpFilePath)).to.eventually.deep.equal(
{ foo: 'bar' },
),
)
})
it('should write a .yaml file synchronously', async () => {
const tmpFilePath = getTmpFilePath('anything.yaml')
return writeFile(tmpFilePath, { foo: 'bar' }).then(() =>
expect(serverless.yamlParser.parse(tmpFilePath)).to.eventually.deep.equal(
{ foo: 'bar' },
),
)
})
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}'
return writeFile(tmpFilePath, bar, true).then(() =>
expect(fsp.readFile(tmpFilePath, 'utf8')).to.eventually.equal(expected),
)
})
})