UNPKG

tslint-clean-code

Version:
97 lines 5.87 kB
"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