Skip to content

Commit ae52e3b

Browse files
authored
test: integrate jest-extended matchers
1 parent d83fbe3 commit ae52e3b

22 files changed

+125
-58
lines changed

eslint.config.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import nxEslintPlugin from '@nx/eslint-plugin';
2+
import jestExtendedPlugin from 'eslint-plugin-jest-extended';
23
import jsoncParser from 'jsonc-eslint-parser';
34
import tseslint from 'typescript-eslint';
45
import node from '@code-pushup/eslint-config/node.js';
@@ -84,13 +85,19 @@ export default tseslint.config(
8485
},
8586
{
8687
files: ['**/*.test.ts', '**/*.spec.ts'],
88+
plugins: { 'jest-extended': jestExtendedPlugin },
8789
rules: {
8890
'vitest/consistent-test-filename': [
8991
'warn',
9092
{
9193
pattern: String.raw`.*\.(bench|type|unit|int|e2e)\.test\.[tj]sx?$`,
9294
},
9395
],
96+
'jest-extended/prefer-to-be-array': 'warn',
97+
'jest-extended/prefer-to-be-false': 'warn',
98+
'jest-extended/prefer-to-be-object': 'warn',
99+
'jest-extended/prefer-to-be-true': 'warn',
100+
'jest-extended/prefer-to-have-been-called-once': 'warn',
94101
},
95102
},
96103
{

package-lock.json

Lines changed: 43 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
"eslint-import-resolver-typescript": "^3.6.1",
9090
"eslint-plugin-functional": "^7.1.0",
9191
"eslint-plugin-import": "^2.31.0",
92+
"eslint-plugin-jest-extended": "^3.0.0",
9293
"eslint-plugin-jest-formatting": "^3.1.0",
9394
"eslint-plugin-n": "^17.15.0",
9495
"eslint-plugin-promise": "^7.2.1",
@@ -99,6 +100,7 @@
99100
"globals": "^15.13.0",
100101
"husky": "^8.0.0",
101102
"inquirer": "^9.3.7",
103+
"jest-extended": "^6.0.0",
102104
"jsdom": "~24.0.0",
103105
"jsonc-eslint-parser": "^2.4.0",
104106
"knip": "^5.33.3",

packages/ci/src/lib/issues.unit.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('issues comparison', () => {
3131
},
3232
},
3333
),
34-
).toBe(true);
34+
).toBeTrue();
3535
});
3636

3737
it('should not match issues from different audits', () => {
@@ -63,7 +63,7 @@ describe('issues comparison', () => {
6363
},
6464
},
6565
),
66-
).toBe(false);
66+
).toBeFalse();
6767
});
6868

6969
it('should match issues based on adjusted line', () => {
@@ -97,7 +97,7 @@ describe('issues comparison', () => {
9797
},
9898
},
9999
),
100-
).toBe(true);
100+
).toBeTrue();
101101
});
102102

103103
it('should match issues from renamed files', () => {
@@ -124,7 +124,7 @@ describe('issues comparison', () => {
124124
},
125125
},
126126
),
127-
).toBe(true);
127+
).toBeTrue();
128128
});
129129

130130
it('should match issues based on adjusted line range', () => {
@@ -165,7 +165,7 @@ describe('issues comparison', () => {
165165
},
166166
},
167167
),
168-
).toBe(true);
168+
).toBeTrue();
169169
});
170170
});
171171

packages/ci/src/lib/monorepo/handlers/npm.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ describe('npmHandler', () => {
3030
},
3131
MEMFS_VOLUME,
3232
);
33-
await expect(npmHandler.isConfigured(options)).resolves.toBe(true);
33+
await expect(npmHandler.isConfigured(options)).resolves.toBeTrue();
3434
});
3535

3636
it('should NOT detect NPM workspaces when "workspaces" not set in package.json', async () => {
@@ -41,7 +41,7 @@ describe('npmHandler', () => {
4141
},
4242
MEMFS_VOLUME,
4343
);
44-
await expect(npmHandler.isConfigured(options)).resolves.toBe(false);
44+
await expect(npmHandler.isConfigured(options)).resolves.toBeFalse();
4545
});
4646

4747
it("should NOT detect NPM workspaces when package-lock.json doesn't exist", async () => {
@@ -55,7 +55,7 @@ describe('npmHandler', () => {
5555
},
5656
MEMFS_VOLUME,
5757
);
58-
await expect(npmHandler.isConfigured(options)).resolves.toBe(false);
58+
await expect(npmHandler.isConfigured(options)).resolves.toBeFalse();
5959
});
6060
});
6161

packages/ci/src/lib/monorepo/handlers/nx.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ describe('nxHandler', () => {
2424
stdout: 'NX Report complete - copy this into the issue template',
2525
} as utils.ProcessResult);
2626

27-
await expect(nxHandler.isConfigured(options)).resolves.toBe(true);
27+
await expect(nxHandler.isConfigured(options)).resolves.toBeTrue();
2828
});
2929

3030
it("should NOT detect Nx when nx.json doesn't exist", async () => {
@@ -33,7 +33,7 @@ describe('nxHandler', () => {
3333
code: 0,
3434
} as utils.ProcessResult);
3535

36-
await expect(nxHandler.isConfigured(options)).resolves.toBe(false);
36+
await expect(nxHandler.isConfigured(options)).resolves.toBeFalse();
3737
});
3838

3939
it('should NOT detect Nx when `nx report` fails with non-zero exit code', async () => {
@@ -43,7 +43,7 @@ describe('nxHandler', () => {
4343
stderr: 'Error: ValueExpected in nx.json',
4444
} as utils.ProcessResult);
4545

46-
await expect(nxHandler.isConfigured(options)).resolves.toBe(false);
46+
await expect(nxHandler.isConfigured(options)).resolves.toBeFalse();
4747
});
4848
});
4949

packages/ci/src/lib/monorepo/handlers/pnpm.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('pnpmHandler', () => {
2828
},
2929
MEMFS_VOLUME,
3030
);
31-
await expect(pnpmHandler.isConfigured(options)).resolves.toBe(true);
31+
await expect(pnpmHandler.isConfigured(options)).resolves.toBeTrue();
3232
});
3333

3434
it("should NOT detect PNPM workspace when pnpm-workspace.yaml doesn't exist", async () => {
@@ -39,7 +39,7 @@ describe('pnpmHandler', () => {
3939
},
4040
MEMFS_VOLUME,
4141
);
42-
await expect(pnpmHandler.isConfigured(options)).resolves.toBe(false);
42+
await expect(pnpmHandler.isConfigured(options)).resolves.toBeFalse();
4343
});
4444

4545
it("should NOT detect PNPM workspace when root package.json doesn't exist", async () => {
@@ -52,7 +52,7 @@ describe('pnpmHandler', () => {
5252
},
5353
MEMFS_VOLUME,
5454
);
55-
await expect(pnpmHandler.isConfigured(options)).resolves.toBe(false);
55+
await expect(pnpmHandler.isConfigured(options)).resolves.toBeFalse();
5656
});
5757
});
5858

packages/ci/src/lib/monorepo/handlers/turbo.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ describe('turboHandler', () => {
3737
},
3838
MEMFS_VOLUME,
3939
);
40-
await expect(turboHandler.isConfigured(options)).resolves.toBe(true);
40+
await expect(turboHandler.isConfigured(options)).resolves.toBeTrue();
4141
});
4242

4343
it("should NOT detect Turborepo when turbo.json doesn't exist", async () => {
@@ -48,7 +48,7 @@ describe('turboHandler', () => {
4848
},
4949
MEMFS_VOLUME,
5050
);
51-
await expect(turboHandler.isConfigured(options)).resolves.toBe(false);
51+
await expect(turboHandler.isConfigured(options)).resolves.toBeFalse();
5252
});
5353

5454
it("should NOT detect Turborepo when turbo.json doesn't include code-pushup task", async () => {
@@ -72,7 +72,7 @@ describe('turboHandler', () => {
7272
},
7373
MEMFS_VOLUME,
7474
);
75-
await expect(turboHandler.isConfigured(options)).resolves.toBe(false);
75+
await expect(turboHandler.isConfigured(options)).resolves.toBeFalse();
7676
});
7777
});
7878

packages/ci/src/lib/monorepo/handlers/yarn.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe('yarnHandler', () => {
3232
},
3333
MEMFS_VOLUME,
3434
);
35-
await expect(yarnHandler.isConfigured(options)).resolves.toBe(true);
35+
await expect(yarnHandler.isConfigured(options)).resolves.toBeTrue();
3636
});
3737

3838
it('should NOT detect Yarn workspaces when "workspaces" not set in package.json', async () => {
@@ -43,7 +43,7 @@ describe('yarnHandler', () => {
4343
},
4444
MEMFS_VOLUME,
4545
);
46-
await expect(yarnHandler.isConfigured(options)).resolves.toBe(false);
46+
await expect(yarnHandler.isConfigured(options)).resolves.toBeFalse();
4747
});
4848

4949
it("should NOT detect Yarn workspaces when yarn.lock doesn't exist", async () => {
@@ -57,7 +57,7 @@ describe('yarnHandler', () => {
5757
},
5858
MEMFS_VOLUME,
5959
);
60-
await expect(yarnHandler.isConfigured(options)).resolves.toBe(false);
60+
await expect(yarnHandler.isConfigured(options)).resolves.toBeFalse();
6161
});
6262
});
6363

packages/ci/src/lib/monorepo/packages.unit.test.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ describe('hasWorkspacesEnabled', () => {
228228
{ 'package.json': pkgJsonContent({ name: 'example', private: true }) },
229229
MEMFS_VOLUME,
230230
);
231-
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBe(false);
231+
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBeFalse();
232232
});
233233

234234
it('should identify as NOT enabled if `"private": true` missing in root package.json', async () => {
@@ -241,7 +241,7 @@ describe('hasWorkspacesEnabled', () => {
241241
},
242242
MEMFS_VOLUME,
243243
);
244-
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBe(false);
244+
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBeFalse();
245245
});
246246

247247
it('should identify as enabled if private and workspaces array set in root package.json', async () => {
@@ -254,7 +254,7 @@ describe('hasWorkspacesEnabled', () => {
254254
},
255255
MEMFS_VOLUME,
256256
);
257-
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBe(true);
257+
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBeTrue();
258258
});
259259

260260
it('should identify as enabled if private and workspaces object set in root package.json', async () => {
@@ -270,7 +270,7 @@ describe('hasWorkspacesEnabled', () => {
270270
},
271271
MEMFS_VOLUME,
272272
);
273-
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBe(true);
273+
await expect(hasWorkspacesEnabled(MEMFS_VOLUME)).resolves.toBeTrue();
274274
});
275275
});
276276

@@ -313,25 +313,25 @@ describe('hasScript', () => {
313313
{ scripts: { 'code-pushup': 'code-pushup --no-progress' } },
314314
'code-pushup',
315315
),
316-
).toBe(true);
316+
).toBeTrue();
317317
});
318318

319319
it('should return false if script not in package.json "scripts"', () => {
320-
expect(hasScript({}, 'code-pushup')).toBe(false);
320+
expect(hasScript({}, 'code-pushup')).toBeFalse();
321321
});
322322
});
323323

324324
describe('hasDependency', () => {
325325
it('should return true if package name in "dependencies"', () => {
326-
expect(hasDependency({ dependencies: { react: '^19.0.0' } }, 'react')).toBe(
327-
true,
328-
);
326+
expect(
327+
hasDependency({ dependencies: { react: '^19.0.0' } }, 'react'),
328+
).toBeTrue();
329329
});
330330

331331
it('should return true if package name in "devDependencies"', () => {
332-
expect(hasDependency({ devDependencies: { nx: '20.1.3' } }, 'nx')).toBe(
333-
true,
334-
);
332+
expect(
333+
hasDependency({ devDependencies: { nx: '20.1.3' } }, 'nx'),
334+
).toBeTrue();
335335
});
336336

337337
it('should return false if package name is neither in "dependencies" nor "devDependencies"', () => {
@@ -343,7 +343,7 @@ describe('hasDependency', () => {
343343
},
344344
'svelte',
345345
),
346-
).toBe(false);
346+
).toBeFalse();
347347
});
348348
});
349349

@@ -353,15 +353,15 @@ describe('hasCodePushUpDependency', () => {
353353
hasCodePushUpDependency({
354354
devDependencies: { '@code-pushup/cli': '^0.55.0' },
355355
}),
356-
).toBe(true);
356+
).toBeTrue();
357357
});
358358

359359
it('should return true if @code-pushup/cli in "dependencies"', () => {
360360
expect(
361361
hasCodePushUpDependency({
362362
dependencies: { '@code-pushup/cli': 'latest' },
363363
}),
364-
).toBe(true);
364+
).toBeTrue();
365365
});
366366

367367
it('should return false if @code-pushup/cli is neither in "dependencies" nor "devDependencies"', () => {
@@ -372,6 +372,6 @@ describe('hasCodePushUpDependency', () => {
372372
'@code-pushup/utils': 'latest',
373373
},
374374
}),
375-
).toBe(false);
375+
).toBeFalse();
376376
});
377377
});

0 commit comments

Comments
 (0)