Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
6d2357b
auto-fix to replace fixture usage with native fetch api
le-cong Jul 19, 2024
3ca9645
bump release version
le-cong Jul 19, 2024
17f3a15
handle request method in case of no body/headers
le-cong Jul 19, 2024
f95934f
convert response headers access
le-cong Jul 19, 2024
55799e5
handle supertest header assertion
le-cong Jul 20, 2024
4610048
handle header regex assertion
le-cong Jul 20, 2024
bad7b8d
handle supertest callback
le-cong Jul 20, 2024
c8062c3
handle response body deep equality assertion
le-cong Jul 20, 2024
4afc2c7
multiple fixture calls in the same test
le-cong Jul 20, 2024
9da2402
handle directly returned fixture call
le-cong Jul 20, 2024
8195d05
replace statusCode with status
le-cong Jul 22, 2024
5ac48bf
prettier
le-cong Jul 22, 2024
b585412
replace header access through response.get() with response.headers.get()
le-cong Jul 22, 2024
e4340bb
support expect(200)
le-cong Jul 22, 2024
4113178
treat function call result as response body assertion similar to obje…
le-cong Jul 22, 2024
4787804
handle body/headers defined as spreading style variables
le-cong Jul 23, 2024
8928ca6
make status assertion before other assertions, refactoring
le-cong Jul 24, 2024
1a58717
manager response variable naming conflict better
le-cong Jul 24, 2024
6a801a1
response body reference handling, inline response body access, respon…
le-cong Jul 26, 2024
caea03a
experiment separated no-fixture-headers rule
le-cong Jul 27, 2024
18208b7
make espree external to pass the cjs esbuild
le-cong Jul 27, 2024
2a05895
use typescript-config beta
le-cong Jul 27, 2024
6ea226f
don't load
le-cong Jul 27, 2024
fc96291
revert back
le-cong Jul 27, 2024
e5bf77c
refactoring
le-cong Jul 28, 2024
604cdb5
support concurrent fixture calls through Promise.all
le-cong Jul 28, 2024
a7c2d5c
handle header access with concurrent api calls
le-cong Jul 29, 2024
80f6010
generalize concurrent promises cases to used-as-value-but-can-not-use…
le-cong Jul 29, 2024
60eb286
basic service wrapper functional with typing support
le-cong Jul 31, 2024
42ddba5
cleanup config
le-cong Jul 31, 2024
b4ece16
improve url validation and conversion
le-cong Aug 1, 2024
1f38c23
fix codeql alert
le-cong Aug 1, 2024
203bd2d
codeql alert
le-cong Aug 1, 2024
96c5f5b
replace statusCode with status
le-cong Aug 1, 2024
a2f58c7
add no-status-code rule in index.ts, fix url argument validation
le-cong Aug 1, 2024
cea4d08
replace "response.body" with "await response.json()"
le-cong Aug 1, 2024
d0d70e3
handle request body provided as undefined
le-cong Aug 1, 2024
7c6f5f0
handle multi-line url
le-cong Aug 2, 2024
9dd53e8
use get() to access response headers, remove redundant await for resp…
le-cong Aug 2, 2024
82e31a0
convert multiline url
le-cong Aug 2, 2024
127a30d
auto convert BATH_PATH like variable declaration
le-cong Aug 2, 2024
6709937
convert response.get() to response.headers.get()
le-cong Aug 2, 2024
fae1d60
handle header getter edge cases
le-cong Aug 2, 2024
405bb4c
don't modify headers getter for request
le-cong Aug 2, 2024
7a0da28
add FullResponse removal rule
le-cong Aug 6, 2024
efccbb8
don't include fetch conversion rules in the "all" config
le-cong Aug 7, 2024
b8274e5
create "agent" config for grouping all agent conversion related rules
le-cong Aug 8, 2024
ec774ac
fix config
le-cong Aug 8, 2024
b86f505
refactoring
le-cong Aug 12, 2024
9406dad
enforce no FullResponse and resolveWithFullResponse in service wrappe…
le-cong Aug 12, 2024
ceccb0b
convert 'del' as 'DELETE', rule config separation
le-cong Aug 13, 2024
0ea4a0d
added rule to replace MappedResponse with FetchResponse
le-cong Sep 20, 2024
a124eca
npm i
le-cong Sep 20, 2024
88aa2fd
correct file inclusion config for ruleset
le-cong Sep 20, 2024
d33efd8
add rule no-duplicated-imports for merging duplicated import statemen…
le-cong Sep 24, 2024
97082aa
new rule require-fixed-services-import and require-type-out-of-type-o…
le-cong Sep 25, 2024
abee4bc
add rule: no-unused-function-argument
le-cong Sep 26, 2024
4d473b0
fix no-unused-function-argument
le-cong Sep 26, 2024
89e863a
handle deeply reference function parameter
le-cong Sep 26, 2024
d998840
add rule: no-unused-service-variable
le-cong Sep 26, 2024
2d06df8
add rule: no-unused-imports
le-cong Sep 26, 2024
320f53c
add rule: fix-function-call-arguments
le-cong Sep 26, 2024
ea1d232
fix fix-function-call-arguments - handle the case that the target fun…
le-cong Sep 26, 2024
7f3566b
fix fix-function-call-arguments - ignore complex functions from 3rd p…
le-cong Sep 26, 2024
7976a80
fix fix-function-call-arguments continued
le-cong Sep 26, 2024
a289f01
fix fix-function-call-arguments continued - handle the case that the …
le-cong Sep 26, 2024
89b8171
fix fix-function-call-arguments continued - custom options to restric…
le-cong Sep 27, 2024
105b126
fix fix-function-call-arguments continued, adjust ruleset overrides
le-cong Sep 27, 2024
8c48544
add rule: agent-test-wiring
le-cong Sep 27, 2024
15b96d9
fix duplicated agent declaration
le-cong Sep 27, 2024
7b6dc7d
enhance function signature refactoring
le-cong Oct 3, 2024
255b4d4
merge main
le-cong Oct 3, 2024
d993627
merge
le-cong Oct 3, 2024
b4382ed
Merge branch 'main' into no-fixture
le-cong Oct 7, 2024
2f29278
merge with main
le-cong Oct 28, 2024
6dd6eeb
Merge branch 'main' into no-fixture
le-cong Oct 28, 2024
95d4477
specify stronger files filter
le-cong Oct 28, 2024
ee68da5
handle default option
le-cong Oct 28, 2024
83710c8
support agent test wiring for more variety of beforeAll coding style
le-cong Oct 30, 2024
64978bb
fix: update function call argument check to handle optional parameters
le-cong Oct 31, 2024
add9678
enhance test wiring and fixture.api response destructure
le-cong Oct 31, 2024
fb96df8
improve agent-test-wiring to handle different folder structure
le-cong Oct 31, 2024
ebf9378
handle BASE_PATH constant declaration and import
le-cong Nov 1, 2024
671f849
prettier
le-cong Nov 1, 2024
e15f84f
handle spec file not in nested folder of api/v*
le-cong Nov 1, 2024
58b76e3
add rule to import BASE_PATH if used but not declared; update related…
le-cong Nov 3, 2024
77a7860
add rule to automatically import assert module if used but not declar…
le-cong Nov 4, 2024
1ebb366
don't report error if service-wrapper's url is passed in as function …
le-cong Nov 4, 2024
b1c000e
handle legacy service typing Endpoint similar to FullResponse, refactor
le-cong Nov 4, 2024
d915903
upgrade dependencies
le-cong Nov 4, 2024
99d491a
support full response options type on top of object value check
le-cong Nov 4, 2024
6d73482
fix bugs
le-cong Nov 5, 2024
d179f99
- avoid double read of response body
le-cong Nov 6, 2024
e46e884
enhance fixture call analysis to support assignment statements and im…
le-cong Nov 6, 2024
b68df81
fix and support edge cases
le-cong Nov 7, 2024
7c79c2a
add functions for retrieving response headers and improve destructuri…
le-cong Nov 18, 2024
9e8318b
deps update
le-cong Nov 18, 2024
6229541
update eslint and related dependencies; improve response header retri…
le-cong Nov 18, 2024
e2e07d9
support object literal for setting request headers in fixture calls; …
le-cong Nov 19, 2024
1ec3e9a
add fetch-response-status rule to enforce status code naming conventions
le-cong Nov 19, 2024
de893e0
Merge branch 'main' into no-fixture
le-cong Nov 19, 2024
4223d41
update dependencies to use caret (^) versioning for better compatibility
le-cong Nov 20, 2024
ca8bf05
Merge branch 'main' into no-fixture
le-cong Nov 20, 2024
d519eda
apply no-fixture to *.test.ts as well
le-cong Nov 20, 2024
1c9029a
merge with main
le-cong Nov 20, 2024
256a4c7
Merge branch 'main' into no-fixture
le-cong Nov 20, 2024
58565d6
refactor: update regex in getApiFolder to improve path matching
le-cong Nov 20, 2024
412109c
fix: update regex in getApiFolder to allow optional leading slash
le-cong Nov 20, 2024
033ad7c
regenerate package-lock.json
le-cong Nov 20, 2024
02b6366
chore: add allow-dependencies-licenses for flatted package in publish…
le-cong Nov 20, 2024
3251f22
chore: bump version to 7.6.0 in package.json
le-cong Nov 20, 2024
e7dba74
chore: bump version to 7.6.0 in package-lock.json
le-cong Nov 20, 2024
7eaaeaa
new rule no-supertest
le-cong Nov 21, 2024
f4c8514
ts-ify rules
le-cong Nov 22, 2024
47d65b0
new rule supertest-then
le-cong Nov 22, 2024
81ab40d
chore: comment out Dependency Review step in publish-beta workflow
le-cong Nov 22, 2024
d2e05c0
feat: add response status retrieval function and update tests for sta…
le-cong Nov 23, 2024
9112c9a
feat: implement isFetchResponse utility and update rules to utilize i…
le-cong Nov 23, 2024
cf052cd
refactor: standardize parser service variable naming and enhance resp…
le-cong Nov 24, 2024
7e61255
refactor: update response header access methods and clean up related …
le-cong Nov 25, 2024
fb24e0d
major refactor: separate fixture call and expect assertion handling
le-cong Nov 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .github/workflows/publish-beta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ jobs:
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Dependency Review
uses: actions/dependency-review-action@v4
with:
allow-licenses: ${{ vars.ALLOW_LICENSES }}
# - name: Dependency Review
# uses: actions/dependency-review-action@v4
# with:
# allow-licenses: ${{ vars.ALLOW_LICENSES }}
# allow-dependencies-licenses: pkg:npm/flatted
- name: Setup Node.js
uses: actions/setup-node@v4
with:
Expand Down
25 changes: 25 additions & 0 deletions docs/rules/no-fixture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# To ease the transition from fixture to native fetch API, this rule convert relevant code automatically.

## Before

```js
it('returns current server time', async () => {
const response = await fixture.api.get(`/sample-service/v1/ping`).expect(StatusCodes.OK);
const body = response.body;
const timeDifference = Date.now() - new Date(body.serverTime).getTime();
assert.ok(timeDifference >= 0 && timeDifference < 200);
});
```

## After

```js
it('returns current server time', async () => {
// assume the existence of - const BASE_PATH = 'https://sample-service.checkdigit/sample-service/v1';
const response = await fetch(`${BASE_PATH}/ping`);
assert.equal(response.status, StatusCodes.OK);
const body = await response.json();
const timeDifference = Date.now() - new Date(body.serverTime).getTime();
assert.ok(timeDifference >= 0 && timeDifference < 200);
});
```
103 changes: 56 additions & 47 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@checkdigit/eslint-plugin",
"version": "7.5.0",
"version": "7.6.0",
"description": "Check Digit eslint plugins",
"keywords": [
"eslint",
Expand Down Expand Up @@ -63,13 +63,15 @@
"dependencies": {
"@typescript-eslint/type-utils": "^8.15.0",
"@typescript-eslint/utils": "^8.15.0",
"debug": "^4.3.7",
"ts-api-utils": "^1.4.0"
},
"devDependencies": {
"@checkdigit/jest-config": "^6.0.2",
"@checkdigit/prettier-config": "^5.5.1",
"@checkdigit/typescript-config": "^8.0.0",
"@eslint/js": "^9.15.0",
"@types/debug": "^4.1.12",
"@types/eslint": "^9.6.1",
"@types/eslint-config-prettier": "^6.11.3",
"@typescript-eslint/parser": "^8.15.0",
Expand Down
54 changes: 54 additions & 0 deletions src/agent/add-assert-import.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// agent/add-url-domain.spec.ts

/*
* Copyright (c) 2021-2024 Check Digit, LLC
*
* This code is licensed under the MIT license (see LICENSE.txt for details).
*/

import createTester from '../ts-tester.test';
import rule, { ruleId } from './add-assert-import';

createTester().run(ruleId, rule, {
valid: [
{
name: 'no change if the assert is not used',
code: `const name='abc';`,
},
{
name: 'no change if the assert is used and imported',
code: `import { strict as assert } from 'node:assert';
assert(true);`,
},
{
name: 'no change if the assert is used and imported - not using node: prefix in the module name',
code: `import { strict as assert } from 'assert';
assert(true);`,
},
],
invalid: [
{
name: 'add assert import if assert is used but not imported',
code: `assert(true);`,
output: `import { strict as assert } from 'node:assert';
assert(true);`,
errors: [{ messageId: 'addAssertImport' }],
},
{
name: 'add assert import if assert is used but not imported - using assert.ok',
code: `assert.ok(true);`,
output: `import { strict as assert } from 'node:assert';
assert.ok(true);`,
errors: [{ messageId: 'addAssertImport' }],
},
{
name: 'add assert import if assert is used but not imported - with first line as comment',
code: `// api/v1/ping.spec.ts
assert.ok(true);`,
output: `// api/v1/ping.spec.ts
import { strict as assert } from 'node:assert';
assert.ok(true);`,
errors: [{ messageId: 'addAssertImport' }],
},
],
});
Loading