save.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var CC = require('../index.js').ConfigChain
  2. var test = require('tap').test
  3. var f1 = '/tmp/f1.ini'
  4. var f2 = '/tmp/f2.json'
  5. var ini = require('ini')
  6. var f1data = {foo: {bar: 'baz'}, bloo: 'jaus'}
  7. var f2data = {oof: {rab: 'zab'}, oolb: 'suaj'}
  8. var fs = require('fs')
  9. fs.writeFileSync(f1, ini.stringify(f1data), 'utf8')
  10. fs.writeFileSync(f2, JSON.stringify(f2data), 'utf8')
  11. test('test saving and loading ini files', function (t) {
  12. new CC()
  13. .add({grelb:'blerg'}, 'opt')
  14. .addFile(f1, 'ini', 'inifile')
  15. .addFile(f2, 'json', 'jsonfile')
  16. .on('load', function (cc) {
  17. t.same(cc.snapshot, { grelb: 'blerg',
  18. bloo: 'jaus',
  19. foo: { bar: 'baz' },
  20. oof: { rab: 'zab' },
  21. oolb: 'suaj' })
  22. t.same(cc.list, [ { grelb: 'blerg' },
  23. { bloo: 'jaus', foo: { bar: 'baz' } },
  24. { oof: { rab: 'zab' }, oolb: 'suaj' } ])
  25. cc.set('grelb', 'brelg', 'opt')
  26. .set('foo', 'zoo', 'inifile')
  27. .set('oof', 'ooz', 'jsonfile')
  28. .save('inifile')
  29. .save('jsonfile')
  30. .on('save', function () {
  31. t.equal(fs.readFileSync(f1, 'utf8'),
  32. "bloo=jaus\nfoo=zoo\n")
  33. t.equal(fs.readFileSync(f2, 'utf8'),
  34. "{\"oof\":\"ooz\",\"oolb\":\"suaj\"}")
  35. t.same(cc.snapshot, { grelb: 'brelg',
  36. bloo: 'jaus',
  37. foo: 'zoo',
  38. oof: 'ooz',
  39. oolb: 'suaj' })
  40. t.same(cc.list, [ { grelb: 'brelg' },
  41. { bloo: 'jaus', foo: 'zoo' },
  42. { oof: 'ooz', oolb: 'suaj' } ])
  43. t.pass('ok')
  44. t.end()
  45. })
  46. })
  47. })