mirror of
https://github.com/bakustarver/rpgmakermlinux-cicpoffs.git
synced 2025-06-08 10:15:58 +02:00
119 lines
3.7 KiB
JavaScript
119 lines
3.7 KiB
JavaScript
const assert = require('assert')
|
|
const fs = require('fs')
|
|
const os = require('os')
|
|
const path = require('path')
|
|
const rimraf = require('rimraf')
|
|
const jf = require('../')
|
|
|
|
/* global describe it beforeEach afterEach */
|
|
|
|
describe('+ writeFileSync()', () => {
|
|
let TEST_DIR
|
|
|
|
beforeEach((done) => {
|
|
TEST_DIR = path.join(os.tmpdir(), 'jsonfile-tests-writefile-sync')
|
|
rimraf.sync(TEST_DIR)
|
|
fs.mkdir(TEST_DIR, done)
|
|
})
|
|
|
|
afterEach((done) => {
|
|
rimraf.sync(TEST_DIR)
|
|
done()
|
|
})
|
|
|
|
it('should serialize the JSON and write it to file', () => {
|
|
const file = path.join(TEST_DIR, 'somefile4.json')
|
|
const obj = { name: 'JP' }
|
|
|
|
jf.writeFileSync(file, obj)
|
|
|
|
const data = fs.readFileSync(file, 'utf8')
|
|
const obj2 = JSON.parse(data)
|
|
assert.strictEqual(obj2.name, obj.name)
|
|
assert.strictEqual(data[data.length - 1], '\n')
|
|
assert.strictEqual(data, '{"name":"JP"}\n')
|
|
})
|
|
|
|
describe('> when JSON replacer is set', () => {
|
|
it('should replace JSON', () => {
|
|
const file = path.join(TEST_DIR, 'somefile.json')
|
|
const sillyReplacer = function (k, v) {
|
|
if (!(v instanceof RegExp)) return v
|
|
return `regex:${v.toString()}`
|
|
}
|
|
|
|
const obj = {
|
|
name: 'jp',
|
|
reg: /hello/g
|
|
}
|
|
|
|
jf.writeFileSync(file, obj, { replacer: sillyReplacer })
|
|
const data = JSON.parse(fs.readFileSync(file))
|
|
assert.strictEqual(data.name, 'jp')
|
|
assert.strictEqual(typeof data.reg, 'string')
|
|
assert.strictEqual(data.reg, 'regex:/hello/g')
|
|
})
|
|
})
|
|
|
|
describe('> when spaces passed as an option', () => {
|
|
it('should write file with spaces', () => {
|
|
const file = path.join(TEST_DIR, 'somefile.json')
|
|
const obj = { name: 'JP' }
|
|
jf.writeFileSync(file, obj, { spaces: 8 })
|
|
const data = fs.readFileSync(file, 'utf8')
|
|
assert.strictEqual(data, `${JSON.stringify(obj, null, 8)}\n`)
|
|
})
|
|
|
|
it('should use EOL override', () => {
|
|
const file = path.join(TEST_DIR, 'somefile.json')
|
|
const obj = { name: 'JP' }
|
|
jf.writeFileSync(file, obj, { spaces: 2, EOL: '***' })
|
|
const data = fs.readFileSync(file, 'utf8')
|
|
assert.strictEqual(data, '{*** "name": "JP"***}***')
|
|
})
|
|
})
|
|
|
|
describe('> when passing encoding string as options', () => {
|
|
it('should not error', () => {
|
|
const file = path.join(TEST_DIR, 'somefile6.json')
|
|
const obj = { name: 'jp' }
|
|
jf.writeFileSync(file, obj, 'utf8')
|
|
const data = fs.readFileSync(file, 'utf8')
|
|
assert.strictEqual(data, `${JSON.stringify(obj)}\n`)
|
|
})
|
|
})
|
|
describe('> when EOF option is set to a falsey value', () => {
|
|
beforeEach((done) => {
|
|
TEST_DIR = path.join(os.tmpdir(), 'jsonfile-tests-writefile-sync')
|
|
rimraf.sync(TEST_DIR)
|
|
fs.mkdir(TEST_DIR, done)
|
|
})
|
|
|
|
afterEach((done) => {
|
|
rimraf.sync(TEST_DIR)
|
|
done()
|
|
})
|
|
|
|
it('should not have a the EOL symbol at the end of file', (done) => {
|
|
const file = path.join(TEST_DIR, 'somefile2.json')
|
|
const obj = { name: 'jp' }
|
|
jf.writeFileSync(file, obj, { finalEOL: false })
|
|
const rawData = fs.readFileSync(file, 'utf8')
|
|
const data = JSON.parse(rawData)
|
|
assert.strictEqual(rawData[rawData.length - 1], '}')
|
|
assert.strictEqual(data.name, obj.name)
|
|
done()
|
|
})
|
|
|
|
it('should have a the EOL symbol at the end of file when finalEOL is a truth value in options', (done) => {
|
|
const file = path.join(TEST_DIR, 'somefile2.json')
|
|
const obj = { name: 'jp' }
|
|
jf.writeFileSync(file, obj, { finalEOL: true })
|
|
const rawData = fs.readFileSync(file, 'utf8')
|
|
const data = JSON.parse(rawData)
|
|
assert.strictEqual(rawData[rawData.length - 1], '\n')
|
|
assert.strictEqual(data.name, obj.name)
|
|
done()
|
|
})
|
|
})
|
|
})
|