-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathcoverage-plugin.unit.test.ts
More file actions
95 lines (88 loc) · 2.64 KB
/
coverage-plugin.unit.test.ts
File metadata and controls
95 lines (88 loc) · 2.64 KB
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
85
86
87
88
89
90
91
92
93
94
95
import path from 'node:path';
import { describe, expect, it } from 'vitest';
import { type RunnerConfig, pluginConfigSchema } from '@code-pushup/models';
import { coveragePlugin } from './coverage-plugin.js';
vi.mock('./runner/index.ts', () => ({
createRunnerConfig: vi.fn().mockReturnValue({
command: 'node',
outputFile: 'runner-output.json',
} satisfies RunnerConfig),
}));
describe('coveragePlugin', () => {
const LCOV_PATH = 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' }),
],
}),
],
}),
);
});
it('should pass scoreTargets to PluginConfig when provided', async () => {
const scoreTargets = { 'function-coverage': 0.9, 'line-coverage': 0.8 };
const pluginConfig = await coveragePlugin({
reports: [LCOV_PATH],
scoreTargets,
});
expect(() => pluginConfigSchema.parse(pluginConfig)).not.toThrow();
expect(pluginConfig.scoreTargets).toStrictEqual(scoreTargets);
});
});