Skip to content

Commit 4f35997

Browse files
committed
test: split out into separate files
1 parent dbe0f0b commit 4f35997

6 files changed

+400
-316
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@
2424
},
2525
"main": "index.js",
2626
"scripts": {
27-
"test": "standard && mocha test"
27+
"test": "standard && mocha"
2828
}
2929
}

test/read-file-sync.test.js

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
var assert = require('assert')
2+
var fs = require('fs')
3+
var os = require('os')
4+
var path = require('path')
5+
var rimraf = require('rimraf')
6+
var jf = require('../')
7+
8+
/* global describe it beforeEach afterEach */
9+
10+
describe('+ readFileSync()', function () {
11+
var TEST_DIR
12+
13+
beforeEach(function (done) {
14+
TEST_DIR = path.join(os.tmpdir(), 'jsonfile-tests-readfile-sync')
15+
rimraf(TEST_DIR, function () {
16+
fs.mkdir(TEST_DIR, done)
17+
})
18+
})
19+
20+
afterEach(function (done) {
21+
rimraf(TEST_DIR, done)
22+
})
23+
24+
it('should read and parse JSON', function () {
25+
var file = path.join(TEST_DIR, 'somefile3.json')
26+
var obj = {name: 'JP'}
27+
fs.writeFileSync(file, JSON.stringify(obj))
28+
29+
try {
30+
var obj2 = jf.readFileSync(file)
31+
assert.equal(obj2.name, obj.name)
32+
} catch (err) {
33+
assert(err)
34+
}
35+
})
36+
37+
describe('> when invalid JSON and throws set to false', function () {
38+
it('should return null', function () {
39+
var file = path.join(TEST_DIR, 'somefile4-invalid.json')
40+
var data = '{not valid JSON'
41+
fs.writeFileSync(file, data)
42+
43+
assert.throws(function () {
44+
jf.readFileSync(file)
45+
})
46+
47+
var obj = jf.readFileSync(file, {throws: false})
48+
assert.strictEqual(obj, null)
49+
})
50+
})
51+
52+
describe('> when JSON reviver is set', function () {
53+
it('should transform the JSON', function () {
54+
var file = path.join(TEST_DIR, 'somefile.json')
55+
var sillyReviver = function (k, v) {
56+
if (typeof v !== 'string') return v
57+
if (v.indexOf('date:') < 0) return v
58+
return new Date(v.split('date:')[1])
59+
}
60+
61+
var obj = {
62+
name: 'jp',
63+
day: 'date:2015-06-19T11:41:26.815Z'
64+
}
65+
66+
fs.writeFileSync(file, JSON.stringify(obj))
67+
var data = jf.readFileSync(file, {reviver: sillyReviver})
68+
assert.strictEqual(data.name, 'jp')
69+
assert(data.day instanceof Date)
70+
assert.strictEqual(data.day.toISOString(), '2015-06-19T11:41:26.815Z')
71+
})
72+
})
73+
74+
describe('> when passing encoding string as option', function () {
75+
it('should not throw an error', function () {
76+
var file = path.join(TEST_DIR, 'somefile.json')
77+
78+
var obj = {
79+
name: 'jp'
80+
}
81+
fs.writeFileSync(file, JSON.stringify(obj))
82+
83+
try {
84+
var data = jf.readFileSync(file, 'utf8')
85+
} catch (err) {
86+
assert.ifError(err)
87+
}
88+
assert.strictEqual(data.name, 'jp')
89+
})
90+
})
91+
})

test/read-file.test.js

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
var assert = require('assert')
2+
var fs = require('fs')
3+
var os = require('os')
4+
var path = require('path')
5+
var rimraf = require('rimraf')
6+
var jf = require('../')
7+
8+
/* global describe it beforeEach afterEach */
9+
10+
describe('+ readFile()', function () {
11+
var TEST_DIR
12+
13+
beforeEach(function (done) {
14+
TEST_DIR = path.join(os.tmpdir(), 'jsonfile-tests-readfile')
15+
rimraf(TEST_DIR, function () {
16+
fs.mkdir(TEST_DIR, done)
17+
})
18+
})
19+
20+
afterEach(function (done) {
21+
rimraf(TEST_DIR, done)
22+
})
23+
24+
it('should read and parse JSON', function (done) {
25+
var file = path.join(TEST_DIR, 'somefile.json')
26+
var obj = {name: 'JP'}
27+
fs.writeFileSync(file, JSON.stringify(obj))
28+
29+
jf.readFile(file, function (err, obj2) {
30+
assert.ifError(err)
31+
assert.equal(obj2.name, obj.name)
32+
done()
33+
})
34+
})
35+
36+
describe('> when JSON reviver is set', function () {
37+
it('should transform the JSON', function (done) {
38+
var file = path.join(TEST_DIR, 'somefile.json')
39+
var sillyReviver = function (k, v) {
40+
if (typeof v !== 'string') return v
41+
if (v.indexOf('date:') < 0) return v
42+
return new Date(v.split('date:')[1])
43+
}
44+
45+
var obj = {
46+
name: 'jp',
47+
day: 'date:2015-06-19T11:41:26.815Z'
48+
}
49+
50+
fs.writeFileSync(file, JSON.stringify(obj))
51+
jf.readFile(file, {reviver: sillyReviver}, function (err, data) {
52+
assert.ifError(err)
53+
assert.strictEqual(data.name, 'jp')
54+
assert(data.day instanceof Date)
55+
assert.strictEqual(data.day.toISOString(), '2015-06-19T11:41:26.815Z')
56+
done()
57+
})
58+
})
59+
})
60+
61+
describe('> when passing null and callback', function () {
62+
it('should not throw an error', function (done) {
63+
var file = path.join(TEST_DIR, 'somefile.json')
64+
65+
var obj = {
66+
name: 'jp'
67+
}
68+
fs.writeFileSync(file, JSON.stringify(obj))
69+
70+
jf.readFile(file, null, function (err) {
71+
assert.ifError(err)
72+
assert.strictEqual(obj.name, 'jp')
73+
done()
74+
})
75+
})
76+
})
77+
78+
describe('> when passing encoding string as option', function () {
79+
it('should not throw an error', function (done) {
80+
var file = path.join(TEST_DIR, 'somefile.json')
81+
82+
var obj = {
83+
name: 'jp'
84+
}
85+
fs.writeFileSync(file, JSON.stringify(obj))
86+
87+
jf.readFile(file, 'utf8', function (err) {
88+
assert.ifError(err)
89+
assert.strictEqual(obj.name, 'jp')
90+
done()
91+
})
92+
})
93+
})
94+
})

0 commit comments

Comments
 (0)