UNPKG

eslint-plugin-chai-expect

Version:

ESLint plugin that checks for common chai.js expect() mistakes

138 lines (101 loc) 3.12 kB
# eslint-plugin-chai-expect [![Build Status](https://img.shields.io/travis/Turbo87/eslint-plugin-chai-expect/master.svg)](https://travis-ci.org/Turbo87/eslint-plugin-chai-expect) ESLint plugin that checks for common chai.js `expect()` mistakes > [!IMPORTANT] > The `recommended` preset is for the ESLint legacy configuration system > (`.eslintrc.json`). The `recommended-flat` configuration is for the new flat > configuration system. ## Requirements - Node.js 6 or above - ESLint 4.x or 5.x or 6.x ## Installation ``` npm install --save-dev eslint-plugin-chai-expect ``` ## Configuration ### Legacy ESLint Configuration Format (.eslintrc.json) Add a `plugins` section and specify `chai-expect` as a plugin: ```json { "plugins": [ "chai-expect" ] } ``` Enable the rules that you would like to use: ```json { "rules": { "chai-expect/no-inner-compare": 2, "chai-expect/no-inner-literal": 2, "chai-expect/missing-assertion": 2, "chai-expect/terminating-properties": 2 } } ``` Or, if you just want the above defaults, you can avoid all of the above and just extend the config: ```json { "extends": ["plugin:chai-expect/recommended"] } ``` ### Flat ESLint Configuration Format (eslint.config.js) Add a `plugins` section and specify `chai-expect` as a plugin and enable the rules that you would like to use: ```js import chaiExpectPlugin from 'eslint-plugin-chai-expect'; export default [ { "plugins": { "chai-expect": chaiExpectPlugin }, "rules": { "chai-expect/no-inner-compare": 2, "chai-expect/no-inner-literal": 2, "chai-expect/missing-assertion": 2, "chai-expect/terminating-properties": 2 } } ]; ``` Or, if you just want the above defaults, you can avoid all of the above and just extend the config: ```js import chaiExpectPlugin from 'eslint-plugin-chai-expect'; export default [ chaiExpectPlugin.configs["recommended-flat"], { // ... }, ]; ``` ## Rules - `no-inner-compare` - Prevent using comparisons in the `expect()` argument - `no-inner-literal` - Prevent using literals in the `expect()` argument (`undefined`, `null`, `NaN`, `(+|-)Infinity`, `this`, booleans, numbers, strings, and BigInt or regex literals) - `missing-assertion` - Prevent calling `expect(...)` without an assertion like `.to.be.ok` - `terminating-properties` - Prevent calling `to.be.ok` and other assertion properties as functions ### Additional configuration #### terminating-properties rule A number of extensions to chai add additional terminating properties. For example [chai-http](https://github.com/chaijs/chai-http) adds: - headers - html - ip - json - redirect - text The terminating-properties rule can be configured to ensure these (or other) additional properties are not used as functions: ```json { "rules": { "chai-expect/terminating-properties": ["error", { "properties": ["headers", "html", "ip", "json", "redirect", "test"] }] } } ``` ## License eslint-plugin-chai-expect is licensed under the [MIT License](http://www.opensource.org/licenses/mit-license.php).