Skip to content
This repository has been archived by the owner on Mar 23, 2024. It is now read-only.

Commit

Permalink
Some Configuration/NodeConfiguration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mdevils committed Oct 21, 2014
1 parent 3640fe4 commit f0a525a
Show file tree
Hide file tree
Showing 3 changed files with 165 additions and 1 deletion.
34 changes: 33 additions & 1 deletion lib/config/configuration.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,15 @@ Configuration.prototype.getMaxErrors = function() {
return this._maxErrors;
};

/**
* Returns base path.
*
* @returns {String}
*/
Configuration.prototype.getBasePath = function() {
return this._basePath;
};

/**
* Processes configuration and returns config options.
*
Expand Down Expand Up @@ -227,7 +236,21 @@ Configuration.prototype._loadAdditionalRule = function(additionalRule) {
* @param {Rule} rule
*/
Configuration.prototype.registerRule = function(rule) {
this._rules[rule.getOptionName()] = rule;
var optionName = rule.getOptionName();
assert(!this._rules.hasOwnProperty(optionName), 'Rule "' + optionName + '" is already registered');
this._rules[optionName] = rule;
};

/**
* Returns list of registered rules.
*
* @returns {Rule[]}
*/
Configuration.prototype.getRegisteredRules = function() {
var rules = this._rules;
return Object.keys(rules).map(function(ruleOptionName) {
return rules[ruleOptionName];
});
};

/**
Expand All @@ -240,6 +263,15 @@ Configuration.prototype.registerPreset = function(presetName, presetConfig) {
this._presets[presetName] = presetConfig;
};

/**
* Returns registered presets object (key - preset name, value - preset content).
*
* @returns {Object}
*/
Configuration.prototype.getRegisteredPresets = function() {
return this._presets;
};

/**
* Registers built-in Code Style cheking rules.
*/
Expand Down
116 changes: 116 additions & 0 deletions test/config/configuration.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
var assert = require('assert');
var Configuration = require('../../lib/config/configuration');

describe('modules/config/configuration', function() {

var configuration;
beforeEach(function() {
configuration = new Configuration();
});

describe('constructor', function() {
it('should set default base path', function() {
assert(configuration.getBasePath() === '.');
});

it('should set default file extensions', function() {
assert(configuration.getFileExtensions().length === 1);
assert(configuration.getFileExtensions()[0] === '.js');
});

it('should have no default registered rules', function() {
assert(configuration.getRegisteredRules().length === 0);
});

it('should have no default configured rules', function() {
assert(configuration.getConfiguredRules().length === 0);
});

it('should have no default presets', function() {
assert(Object.keys(configuration.getRegisteredPresets()).length === 0);
});

it('should have no default excluded file masks', function() {
assert(configuration.getExcludedFileMasks().length === 0);
});

it('should have no default maximal error count', function() {
assert(configuration.getMaxErrors() === null);
});
});

describe('registerRule', function() {
it('should add rule to registered rule list', function() {
var rule = {
getOptionName: function() {
return 'ruleName';
}
};
configuration.registerRule(rule);
assert(configuration.getRegisteredRules().length === 1);
assert(configuration.getRegisteredRules()[0] === rule);
assert(configuration.getConfiguredRules().length === 0);
});

it('should fail on duplicate rule name', function() {
var rule = {
getOptionName: function() {
return 'ruleName';
}
};
configuration.registerRule(rule);
try {
configuration.registerRule(rule);
assert(false);
} catch (e) {
assert(e.message === 'Rule "ruleName" is already registered');
}
});
});

describe('getRegisteredRules', function() {
it('should return registered rule list', function() {
var rule1 = {
getOptionName: function() {
return 'ruleName1';
}
};
var rule2 = {
getOptionName: function() {
return 'ruleName2';
}
};
configuration.registerRule(rule1);
configuration.registerRule(rule2);
assert(configuration.getRegisteredRules().length === 2);
assert(configuration.getRegisteredRules()[0] === rule1);
assert(configuration.getRegisteredRules()[1] === rule2);
});
});

describe('getRegisteredPresets', function() {
it('should return registered presets object', function() {
var preset = {maxErrors: 5};
assert(Object.keys(configuration.getRegisteredPresets()).length === 0);
configuration.registerPreset('company', preset);
assert(Object.keys(configuration.getRegisteredPresets()).length === 1);
assert(configuration.getRegisteredPresets().company === preset);
});
});

describe('getConfiguredRules', function() {
it('should return configured rules after config load', function() {
assert(configuration.getConfiguredRules().length === 0);
var rule = {
getOptionName: function() {
return 'ruleName';
},
configure: function() {}
};
configuration.registerRule(rule);
configuration.load({ruleName: true});
assert(configuration.getConfiguredRules().length === 1);
assert(configuration.getConfiguredRules()[0] === rule);
});
});
});
16 changes: 16 additions & 0 deletions test/config/node-configuration.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
var assert = require('assert');
var NodeConfiguration = require('../../lib/config/node-configuration');

describe('modules/config/node-configuration', function() {

var configuration;
beforeEach(function() {
configuration = new NodeConfiguration();
});

describe('constructor', function() {
it('should set default base path to process.cwd()', function() {
assert(configuration.getBasePath() === process.cwd());
});
});
});

0 comments on commit f0a525a

Please sign in to comment.