Skip to content

Commit bba16b4

Browse files
authored
Add tests for omit options (#65)
* add tests for omit options * ncc
1 parent 84522a4 commit bba16b4

File tree

3 files changed

+66
-10
lines changed

3 files changed

+66
-10
lines changed

__tests__/renderer.test.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,52 @@ describe('renderer', () => {
216216
expect($('tr')).toHaveLength(5)
217217
})
218218

219+
describe('filterPackageResults', () => {
220+
it('returns all package results when no omit options are set', async () => {
221+
const renderer = await getRenderer()
222+
const filtered = (renderer as any).filterPackageResults()
223+
224+
expect(filtered).toHaveLength(4)
225+
expect(filtered).toEqual(renderer.packageResults)
226+
})
227+
228+
it('filters out untested packages when Untested option is set', async () => {
229+
const renderer = await getRenderer()
230+
renderer.omit.add(OmitOption.Untested)
231+
const filtered = (renderer as any).filterPackageResults()
232+
233+
expect(filtered).toHaveLength(3)
234+
filtered.forEach((result: any) => {
235+
expect(result.hasTests()).toBe(true)
236+
})
237+
})
238+
239+
it('filters out successful packages when Successful option is set', async () => {
240+
const renderer = await getRenderer()
241+
renderer.omit.add(OmitOption.Successful)
242+
const filtered = (renderer as any).filterPackageResults()
243+
244+
expect(filtered).toHaveLength(2)
245+
filtered.forEach((result: any) => {
246+
expect(result.onlySuccessfulTests()).toBe(false)
247+
})
248+
})
249+
250+
it('applies both filters when both options are set', async () => {
251+
const renderer = await getRenderer()
252+
renderer.omit.add(OmitOption.Untested)
253+
renderer.omit.add(OmitOption.Successful)
254+
const filtered = (renderer as any).filterPackageResults()
255+
256+
// Only 'boom' (failed tests) and 'skipme' (skipped test) should remain
257+
expect(filtered).toHaveLength(2)
258+
filtered.forEach((result: any) => {
259+
expect(result.hasTests()).toBe(true)
260+
expect(result.onlySuccessfulTests()).toBe(false)
261+
})
262+
})
263+
})
264+
219265
it('does not render stderr when empty', async () => {
220266
const renderer = await getRenderer()
221267
renderer.stderr = ''

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/renderer.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,7 @@ class Renderer {
4949
* https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary
5050
*/
5151
async writeSummary() {
52-
const resultsToRender = this.packageResults
53-
.filter(result =>
54-
this.omit.has(OmitOption.Untested) ? result.hasTests() : true
55-
)
56-
.filter(result =>
57-
this.omit.has(OmitOption.Successful)
58-
? !result.onlySuccessfulTests()
59-
: true
60-
)
52+
const resultsToRender = this.filterPackageResults()
6153

6254
if (resultsToRender.length === 0) {
6355
core.debug('no packages with tests, skipping render')
@@ -81,6 +73,24 @@ class Renderer {
8173
.write()
8274
}
8375

76+
/**
77+
* Filters package results based on omit options
78+
* @returns filtered package results to render
79+
*/
80+
private filterPackageResults(): PackageResult[] {
81+
let results = this.packageResults
82+
83+
if (this.omit.has(OmitOption.Untested)) {
84+
results = results.filter(result => result.hasTests())
85+
}
86+
87+
if (this.omit.has(OmitOption.Successful)) {
88+
results = results.filter(result => !result.onlySuccessfulTests())
89+
}
90+
91+
return results
92+
}
93+
8494
/**
8595
* Filter through test events and calculate the results per package
8696
* @returns list of package results

0 commit comments

Comments
 (0)