-
Notifications
You must be signed in to change notification settings - Fork 48
/
config-test.js
85 lines (75 loc) · 2.68 KB
/
config-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
var proxyquire = require('proxyquire').noCallThru()
var simple = require('simple-mock')
var test = require('tap').test
var serverMock = {
on: function () {}
}
;[
{
name: 'config',
preferredAdapters: ['test'],
output: {inMemory: false}
},
{
name: 'config with http adapter',
preferredAdapters: [],
output: {inMemory: false}
},
{
name: 'config with memory adapter',
preferredAdapters: ['memory'],
output: {inMemory: true}
}
].forEach(function (testConfig) {
test(testConfig.name, function (group) {
group.test('defaults', function (t) {
var accountConfigMock = simple.stub().callbackWith(null)
var adminsConfigMock = simple.stub().callbackWith(null)
var couchDbConfigMock = simple.stub().callbackWith(null)
var configPouchDbMock = simple.stub().callbackWith(null)
var secretConfigMock = simple.stub().callbackWith(null)
var storeConfigMock = simple.stub().callbackWith(null)
var getConfig = proxyquire('../../lib/config', {
'./account': accountConfigMock,
'./admins': adminsConfigMock,
'./configure-pouchdb': configPouchDbMock,
'./secret': secretConfigMock,
'./store': storeConfigMock,
'fs': {
statSync: simple.stub().returnWith({
isDirectory: simple.stub()
})
}
})
var PouchDBMock = simple.stub().returnWith({
__opts: {}
})
PouchDBMock.preferredAdapters = testConfig.preferredAdapters
PouchDBMock.plugin = simple.stub().returnWith(PouchDBMock)
getConfig(serverMock, {
PouchDB: PouchDBMock
}, function (error, config) {
t.error(error)
var state = {
server: serverMock,
config: config,
inMemory: testConfig.output.inMemory,
PouchDB: PouchDBMock,
db: {
options: {}
}
}
t.is(couchDbConfigMock.callCount, 0, 'couchdb config not called')
t.same(configPouchDbMock.lastCall.arg, state, 'called config PouchDB')
t.same(accountConfigMock.lastCall.arg, state, 'called account config')
t.same(storeConfigMock.lastCall.arg, state, 'called store config')
t.ok(configPouchDbMock.lastCall.k < secretConfigMock.lastCall.k, 'config PouchDB called before secret config')
t.ok(secretConfigMock.lastCall.k < adminsConfigMock.lastCall.k, 'secret config called before admins config')
t.ok(adminsConfigMock.lastCall.k < accountConfigMock.lastCall.k, 'admin config called before account config')
t.ok(adminsConfigMock.lastCall.k < storeConfigMock.lastCall.k, 'admin config called before store config')
t.end()
})
})
group.end()
})
})