UNPKG

vigour-config

Version:
185 lines (171 loc) 5.54 kB
'use strict' // var log = gaston.log.make('config') // log.enabled = true var Config = require('../../lib/') var service_package_json = require('./service_package.json') var project_package_json = require('./project_package.json') var isEmpty = require('vigour-util/is/empty') var config describe('Config', function () { describe('Primitives', function () { it('should handle booleans', function () { var value = true var someConfig = new Config({ someField: value }) expect(someConfig.someField.val).to.equal(value) }) it('should handle numbers', function () { var value = 42 var someConfig = new Config({ someField: value }) expect(someConfig.someField.val).to.equal(value) }) it('should handle strings', function () { var value = 'boom' var someConfig = new Config({ someField: value }) expect(someConfig.someField.val).to.equal(value) }) it('should handle arrays', function () { var innerValue = 'array' var value = ['an', innerValue, 'of', 'strings', '!'] var someConfig = new Config({ someField: value }) expect(someConfig.someField[1].val).to.equal(innerValue) }) it('should handle objects', function () { var innerValue = 'times' var value = { good: innerValue } var someConfig = new Config({ someField: value }) expect(someConfig.someField.good.val).to.equal(innerValue) }) it('should handle functions', function () { var innerValue = 'boom' var value = function () { return innerValue } var someConfig = new Config({ someField: value }) expect(someConfig.someField.val).to.equal(innerValue) }) }) describe('Merge', function () { it('should not crash', function () { config = new Config(service_package_json) .merge(project_package_json) }) it('should still have settings of base package', function () { expect(config.name.val).to.equal('super-service') expect(config.category.val).to.equal('services') expect(config.userdecay.val).to.equal(5) expect(config.special.val).to.equal(false) }) it('should have settings of merged package', function () { expect(config.somesetting.val).to.equal(true) }) it( 'should have applied settings from newpackage[category][name] to root' + ' of base package', function () { expect(config._input).to.equal('{service}.{app}.{domain}') expect(config).to.have.property('#develop') expect(config).to.have.property('#master') expect(config).to.have.property('#demo') } ) it('should have skipped merging newpackage[category]', function () { expect(config).to.not.have.property('services') }) }) describe('Resolve', function () { describe('Resolve Branch', function () { it('should not crash', function () { config.key = 'CONFIG' config.resolve('#develop') }) it('should have applied root level settings from #develop', function () { expect(config._input).to.equal('{branch}-{service}.{app}.{domain}') expect(config.special.val).to.equal(true) expect(config.somesetting.val).to.equal(false) }) it('should have applied nested settings from #develop', function () { expect(config.somesetting.nested.val).to.equal(false) }) }) }) describe('Resolve Region', function () { it('should not crash', function () { config = new Config(service_package_json) .merge(project_package_json) .resolve('#master') }) it('should have regions because #master resolved', function () { expect(config).to.have.property('regions') }) it('should resolve region settings', function () { config.resolve('regions').resolve('AT', { skipVal: true }) expect(config).to.have.property('specialAT') .which.has.property('val', true) }) it('should not have resolved AT region val', function () { expect(config._input).to.equal('{region}-{service}.{app}.{domain}') }) }) describe('Template language', function () { it('should parse template values from config into values with {field}', function () { config.set({ region: 'AT' }) expect(config.val).to.equal('AT-super-service.best-app.vigour.io') } ) }) // describe('Copy Config', function(){ // it('should be able to make a copy of a Config', function(){ // // var burk = new Observable({ // val: 'heyja', // smurk: 'lala' // }) // // log.info('burk test', burk._input) // // var setobj = config.serialize({ // exclude: function excludeKey(key) { // return key[0] === '' // } // }) // var copy = new Config(setobj) // // }) // }) // // if (!ISNODE){ // describe('crack', function (){ // it.skip('put c in window', function (){ // window.c = config // }) // }) // } describe('Empties', function () { it('should not crash', function () { config = new Config(service_package_json) }) it('should declare empty an empty object', function () { expect(isEmpty(config.one)).to.equal(true) }) it('should declare empty an object with only a description', function () { expect(isEmpty(config.two)).to.equal(true) }) }) })