forked from yeoman/configstore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
97 lines (86 loc) · 2.65 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/* eslint-env mocha */
'use strict';
var assert = require('assert');
var fs = require('fs');
var pathExists = require('path-exists');
var Configstore = require('./');
var configstorePath = new Configstore('configstore-test').path;
beforeEach(function () {
fs.unlinkSync(configstorePath);
this.conf = new Configstore('configstore-test');
});
it('.set() and .get()', function () {
this.conf.set('foo', 'bar');
this.conf.set('baz.boo', true);
assert.equal(this.conf.get('foo'), 'bar');
assert.equal(this.conf.get('baz.boo'), true);
});
it('.set() with object and .get()', function () {
this.conf.set({
foo1: 'bar1',
foo2: 'bar2',
baz: {
boo: 'foo',
foo: {
bar: 'baz'
}
}
});
assert.equal(this.conf.get('foo1'), 'bar1');
assert.equal(this.conf.get('foo2'), 'bar2');
assert.deepEqual(this.conf.get('baz'), {boo: 'foo', foo: {bar: 'baz'}});
assert.equal(this.conf.get('baz.boo'), 'foo');
assert.deepEqual(this.conf.get('baz.foo'), {bar: 'baz'});
assert.equal(this.conf.get('baz.foo.bar'), 'baz');
});
it('.del()', function () {
this.conf.set('foo', 'bar');
this.conf.set('baz.boo', true);
this.conf.set('baz.foo.bar', 'baz');
this.conf.del('foo');
assert.notEqual(this.conf.get('foo'), 'bar');
this.conf.del('baz.boo');
assert.notEqual(this.conf.get('baz.boo'), true);
this.conf.del('baz.foo');
assert.notEqual(this.conf.get('baz.foo'), {bar: 'baz'});
this.conf.set('foo.bar.baz', {awesome: 'icecream'});
this.conf.set('foo.bar.zoo', {awesome: 'redpanda'});
this.conf.del('foo.bar.baz');
assert.equal(this.conf.get('foo.bar.zoo.awesome'), 'redpanda');
});
it('.clear()', function () {
this.conf.set('foo', 'bar');
this.conf.set('foo1', 'bar1');
this.conf.set('baz.boo', true);
this.conf.clear();
assert.equal(this.conf.size, 0);
});
it('.all', function () {
this.conf.set('foo', 'bar');
this.conf.set('baz.boo', true);
assert.equal(this.conf.all.foo, 'bar');
assert.deepEqual(this.conf.all.baz, {boo: true});
});
it('.size', function () {
this.conf.set('foo', 'bar');
assert.equal(this.conf.size, 1);
});
it('.path', function () {
this.conf.set('foo', 'bar');
assert(pathExists.sync(this.conf.path));
});
it('should use default value', function () {
var conf = new Configstore('configstore-test', {foo: 'bar'});
assert.equal(conf.get('foo'), 'bar');
});
it('support global namespace path option', function () {
var conf = new Configstore('configstore-test', {}, {globalConfigPath: true});
var regex = /configstore-test(\/|\\)config.json$/;
assert(regex.test(conf.path));
});
it('make sure `.all` is always an object', function () {
fs.unlinkSync(configstorePath);
assert.doesNotThrow(function () {
this.conf.get('foo');
}.bind(this));
});