-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathcoverage-plugin.unit.test.ts
84 lines (79 loc) · 2.22 KB
/
coverage-plugin.unit.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { join } from 'node:path';
import { describe, expect, it } from 'vitest';
import { RunnerConfig } from '@code-pushup/models';
import { coveragePlugin } from './coverage-plugin';
vi.mock('./runner/index.ts', () => ({
createRunnerConfig: vi.fn().mockReturnValue({
command: 'node',
outputFile: 'runner-output.json',
} satisfies RunnerConfig),
}));
describe('coveragePlugin', () => {
const LCOV_PATH = join(
'packages',
'plugin-coverage',
'mocks',
'single-record-lcov.info',
);
it('should initialise a Code coverage plugin', async () => {
await expect(
coveragePlugin({
coverageTypes: ['function'],
reports: [LCOV_PATH],
}),
).resolves.toStrictEqual(
expect.objectContaining({
slug: 'coverage',
title: 'Code coverage',
audits: expect.any(Array),
groups: expect.any(Array),
runner: expect.any(Object),
}),
);
});
it('should generate audits from coverage types', async () => {
await expect(
coveragePlugin({
coverageTypes: ['function', 'branch'],
reports: [LCOV_PATH],
}),
).resolves.toStrictEqual(
expect.objectContaining({
audits: [
{
slug: 'function-coverage',
title: 'Function coverage',
description: expect.stringContaining(
'how many functions were called',
),
},
expect.objectContaining({ slug: 'branch-coverage' }),
],
}),
);
});
it('should provide a group from defined coverage types', async () => {
await expect(
coveragePlugin({
coverageTypes: ['branch', 'line'],
reports: [{ resultsPath: LCOV_PATH }],
}),
).resolves.toStrictEqual(
expect.objectContaining({
audits: [
expect.objectContaining({ slug: 'branch-coverage' }),
expect.objectContaining({ slug: 'line-coverage' }),
],
groups: [
expect.objectContaining({
slug: 'coverage',
refs: [
expect.objectContaining({ slug: 'branch-coverage' }),
expect.objectContaining({ slug: 'line-coverage' }),
],
}),
],
}),
);
});
});