eslint-plugin-sonarjs
Version:
40 lines (39 loc) • 1.46 kB
TypeScript
import type { Rule } from 'eslint';
import type estree from 'estree';
export type AssertionPredicate = 'truthy' | 'falsy' | 'true' | 'false' | 'defined' | 'undefined' | 'null' | 'exists';
export type AssertionStyle = 'jest-like' | 'jasmine' | 'chai-bdd' | 'chai-assert' | 'cypress' | 'playwright' | 'node-assert';
/**
* Cross-framework representation of a test assertion
*/
export type Assertion = PredicateAssertion | ComparisonAssertion;
type AssertionBase = {
style: AssertionStyle;
node: estree.Node;
reportNode: estree.Node;
negated: boolean;
};
/**
* Covers predicate assertions:
* Jest: `expect(value).toBeTruthy()`, `expect(value).toBeNull()`, ...
* Node.js: `assert.ok(value)`, `assert.strictEqual(value, null)`, ...
* chai: `assert.ok(value)`, `assert.isNull(value)`, ...
*/
type PredicateAssertion = AssertionBase & {
kind: 'predicate';
predicate: AssertionPredicate;
actual: estree.Node;
};
/**
* Covers comparision assertions:
* Jest: `expect(value).toBe(value)`
* Node.js: `assert.strictEqual(value, value)`
* chai: `assert.strictEqual(value, value)`, `expect(value).toEqual(value)`, `value.should.equal(value)`, ...
*/
type ComparisonAssertion = AssertionBase & {
kind: 'comparison';
comparison: 'strict' | 'deep' | 'loose';
actual: estree.Node;
expected: estree.Node;
};
export declare function extractTestAssertion(context: Rule.RuleContext, node: estree.Node): Assertion | null;
export {};