]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/config-chain/test/chain-class.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / config-chain / test / chain-class.js
1 var test = require('tap').test
2 var CC = require('../index.js').ConfigChain
3
4 var env = { foo_blaz : 'blzaa', foo_env : 'myenv' }
5 var jsonObj = { blaz: 'json', json: true }
6 var iniObj = { 'x.y.z': 'xyz', blaz: 'ini' }
7
8 var fs = require('fs')
9 var ini = require('ini')
10
11 fs.writeFileSync('/tmp/config-chain-class.json', JSON.stringify(jsonObj))
12 fs.writeFileSync('/tmp/config-chain-class.ini', ini.stringify(iniObj))
13
14 var http = require('http')
15 var reqs = 0
16 http.createServer(function (q, s) {
17   if (++reqs === 2) this.close()
18   if (q.url === '/json') {
19     // make sure that the requests come back from the server
20     // out of order.  they should still be ordered properly
21     // in the resulting config object set.
22     setTimeout(function () {
23       s.setHeader('content-type', 'application/json')
24       s.end(JSON.stringify({
25         blaz: 'http',
26         http: true,
27         json: true
28       }))
29     }, 200)
30   } else {
31     s.setHeader('content-type', 'application/ini')
32     s.end(ini.stringify({
33       blaz: 'http',
34       http: true,
35       ini: true,
36       json: false
37     }))
38   }
39 }).listen(1337)
40
41 test('basic class test', function (t) {
42   var cc = new CC()
43   var expectlist =
44       [ { blaz: 'json', json: true },
45         { 'x.y.z': 'xyz', blaz: 'ini' },
46         { blaz: 'blzaa', env: 'myenv' },
47         { blaz: 'http', http: true, json: true },
48         { blaz: 'http', http: true, ini: true, json: false } ]
49
50   cc.addFile('/tmp/config-chain-class.json')
51     .addFile('/tmp/config-chain-class.ini')
52     .addEnv('foo_', env)
53     .addUrl('http://localhost:1337/json')
54     .addUrl('http://localhost:1337/ini')
55     .on('load', function () {
56       t.same(cc.list, expectlist)
57       t.same(cc.snapshot, { blaz: 'json',
58                             json: true,
59                             'x.y.z': 'xyz',
60                             env: 'myenv',
61                             http: true,
62                             ini: true })
63
64       cc.del('blaz', '/tmp/config-chain-class.json')
65       t.same(cc.snapshot, { blaz: 'ini',
66                             json: true,
67                             'x.y.z': 'xyz',
68                             env: 'myenv',
69                             http: true,
70                             ini: true })
71       cc.del('blaz')
72       t.same(cc.snapshot, { json: true,
73                             'x.y.z': 'xyz',
74                             env: 'myenv',
75                             http: true,
76                             ini: true })
77       cc.shift()
78       t.same(cc.snapshot, { 'x.y.z': 'xyz',
79                             env: 'myenv',
80                             http: true,
81                             json: true,
82                             ini: true })
83       cc.shift()
84       t.same(cc.snapshot, { env: 'myenv',
85                             http: true,
86                             json: true,
87                             ini: true })
88       cc.shift()
89       t.same(cc.snapshot, { http: true,
90                             json: true,
91                             ini: true })
92       cc.shift()
93       t.same(cc.snapshot, { http: true,
94                             ini: true,
95                             json: false })
96       cc.shift()
97       t.same(cc.snapshot, {})
98       t.end()
99     })
100 })