tslint-clean-code
Version:
TSLint rules for enforcing Clean Code
97 lines • 5.87 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var TestHelper_1 = require("./TestHelper");
var preferDryConditionalsRule_1 = require("../preferDryConditionalsRule");
var FAILURE_STRING = preferDryConditionalsRule_1.Rule.FAILURE_STRING;
describe('preferDryConditionalsRule', function () {
var ruleName = 'prefer-dry-conditionals';
it('should pass on switch statement', function () {
var script = "\n switch (obj.name) {\n case \"Stuff\":\n doStuff();\n break;\n case \"Other\":\n doOtherStuff();\n break;\n default:\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, []);
});
it('should pass on if statements with different operator', function () {
var script = "\n if (obj.name === \"Stuff\") {\n doStuff();\n } else if (obj.name !== \"Other\") {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, []);
});
it('should pass on single if statement', function () {
var script = "\n if (obj.name === \"Stuff\") {\n doStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, []);
});
it('should pass on if statement which is not equality', function () {
var script = "\n if (obj.name === 1) {\n doStuff();\n } else if (obj.name >= 4) {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, []);
});
it('should fail on multiple if statements with same left side', function () {
var script = "\n if (obj.name === \"Stuff\") {\n doStuff();\n } else if (obj.name === \"Other\") {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, [
{
failure: FAILURE_STRING('obj.name', ['"Stuff"', '"Other"']),
name: 'file.ts',
ruleName: ruleName,
ruleSeverity: 'ERROR',
startPosition: {
character: 9,
line: 2,
},
},
]);
});
it('should fail on multiple if statements with same right side', function () {
var script = "\n if (\"Stuff\" === obj.name) {\n doStuff();\n } else if (\"Other\" === obj.name) {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, [
{
failure: FAILURE_STRING('obj.name', ['"Stuff"', '"Other"']),
name: 'file.ts',
ruleName: ruleName,
ruleSeverity: 'ERROR',
startPosition: {
character: 9,
line: 2,
},
},
]);
});
it('should fail on multiple if statements with same string on right side', function () {
var script = "\n if (obj.a === \"Stuff\") {\n doStuff();\n } else if (obj.b === \"Stuff\") {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, [
{
failure: FAILURE_STRING('"Stuff"', ['obj.a', 'obj.b']),
name: 'file.ts',
ruleName: ruleName,
ruleSeverity: 'ERROR',
startPosition: {
character: 11,
line: 2,
},
},
]);
});
context('options', function () {
var options = [true];
context('threshold = 3', function () {
beforeEach(function () {
options = [true, 3];
});
it('should pass on 2 if statements with same string on right side', function () {
var script = "\n if (obj.a === \"Stuff\") {\n doStuff();\n } else if (obj.b === \"Stuff\") {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolationsWithOptions(ruleName, options, script, []);
});
it('should fail on 3 if statements with same right side', function () {
var script = "\n if (\"Stuff\" === obj.name) {\n doStuff();\n } else if (\"Other\" === obj.name) {\n doOtherStuff();\n } else if (\"Another\" === obj.name) {\n doOtherStuff();\n } else {\n doFallback();\n }\n ";
TestHelper_1.TestHelper.assertViolations(ruleName, script, [
{
failure: FAILURE_STRING('obj.name', ['"Stuff"', '"Other"', '"Another"']),
name: 'file.ts',
ruleName: ruleName,
ruleSeverity: 'ERROR',
startPosition: {
character: 19,
line: 2,
},
},
]);
});
});
});
});
//# sourceMappingURL=PreferDryConditionalsRuleTests.js.map