* add tslint rule to disallow lodash.isUndefined * add tslint rule to disallow lodash.isNull * apply fixes
97 lines
4.2 KiB
TypeScript
97 lines
4.2 KiB
TypeScript
import * as assert from 'assert';
|
|
|
|
import { Rule } from '../rules/noLodashIsundefinedRule';
|
|
|
|
import { getFixedResult, helper } from './lintrunner';
|
|
const rule = 'no-lodash-isundefined';
|
|
|
|
describe('noLodashIsundefinedRule', () => {
|
|
it(`should not fail built-in`, () => {
|
|
const src = `if (someObj === undefined) { // do stuff }`;
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 0);
|
|
});
|
|
it(`should not fail custom isUndefined`, () => {
|
|
const src = `if (isUndefined(someObj)) { // do stuff }`;
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 0);
|
|
});
|
|
it(`should fail _.isUndefined with simple identifier`, () => {
|
|
const src = `if (_.isUndefined(obj)) { // do stuff }`;
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
});
|
|
it(`should fail _.isUndefined with property access expression`, () => {
|
|
const src = `if (_.isUndefined(this.property)) { // do stuff }`;
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
});
|
|
it(`should fail _.isUndefined with element access expression`, () => {
|
|
const src = `if (_.isUndefined(someArray[nested])) { // do stuff }`;
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
});
|
|
it(`should fail _.isUndefined with property and element access expression`, () => {
|
|
const src = `if (_.isUndefined(someObj.someArray[nested])) { // do stuff }`;
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
});
|
|
|
|
it(`should fail with the right message`, () => {
|
|
const src = `if (_.isUndefined(obj)) { // do stuff }`;
|
|
const failure = helper(src, rule).failures[0];
|
|
|
|
assert.equal(failure.getFailure(), Rule.FAILURE_STRING);
|
|
});
|
|
});
|
|
describe('noLodashIsundefined fixer', () => {
|
|
it('should fix simple identifier', () => {
|
|
const src = `if (_.isUndefined(obj)) { // do stuff }`;
|
|
const expected = `if (obj === undefined) { // do stuff }`;
|
|
const actual = getFixedResult(src, rule);
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
assert.equal(actual, expected);
|
|
});
|
|
it('should fix property access expression', () => {
|
|
const src = `if (_.isUndefined(this.property)) { // do stuff }`;
|
|
const expected = `if (this.property === undefined) { // do stuff }`;
|
|
const actual = getFixedResult(src, rule);
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
assert.equal(actual, expected);
|
|
});
|
|
it('should fix element access expression', () => {
|
|
const src = `if (_.isUndefined(someArray[nested])) { // do stuff }`;
|
|
const expected = `if (someArray[nested] === undefined) { // do stuff }`;
|
|
const actual = getFixedResult(src, rule);
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
assert.equal(actual, expected);
|
|
});
|
|
it('should fix property and element access expression', () => {
|
|
const src = `if (_.isUndefined(someObj.someArray[nested])) { // do stuff }`;
|
|
const expected = `if (someObj.someArray[nested] === undefined) { // do stuff }`;
|
|
const actual = getFixedResult(src, rule);
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
assert.equal(actual, expected);
|
|
});
|
|
it('should fix negation', () => {
|
|
const src = `if (!_.isUndefined(someObj)) { // do stuff }`;
|
|
const expected = `if (someObj !== undefined) { // do stuff }`;
|
|
const actual = getFixedResult(src, rule);
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
assert.equal(actual, expected);
|
|
});
|
|
it('should fix negation with property and element access expression', () => {
|
|
const src = `if (!_.isUndefined(someObj.someArray[nested])) { // do stuff }`;
|
|
const expected = `if (someObj.someArray[nested] !== undefined) { // do stuff }`;
|
|
const actual = getFixedResult(src, rule);
|
|
const result = helper(src, rule);
|
|
assert.equal(result.errorCount, 1);
|
|
assert.equal(actual, expected);
|
|
});
|
|
});
|