Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/turbo87/eslint-plugin-chai-expect
ESLint plugin that checks for common chai.js expect() mistakes
https://github.com/turbo87/eslint-plugin-chai-expect
Last synced: 25 days ago
JSON representation
ESLint plugin that checks for common chai.js expect() mistakes
- Host: GitHub
- URL: https://github.com/turbo87/eslint-plugin-chai-expect
- Owner: Turbo87
- License: mit
- Created: 2016-02-17T22:23:16.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-29T03:52:02.000Z (6 months ago)
- Last Synced: 2024-05-02T00:10:33.293Z (6 months ago)
- Language: JavaScript
- Size: 781 KB
- Stars: 27
- Watchers: 4
- Forks: 11
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-eslint - expect practices
README
# 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
- textThe 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).