-
-
Notifications
You must be signed in to change notification settings - Fork 80
/
Copy pathfindExistingBadges.test.ts
111 lines (101 loc) · 6.55 KB
/
findExistingBadges.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import { describe, expect, it, test } from "vitest";
import { findExistingBadges } from "./findExistingBadges.js";
describe("findExistingBadges", () => {
describe("no result cases", () => {
test.each([
"",
"abc123",
"# Test Title",
"[]",
"[][]",
"[]()",
"[][]()()",
`<img />`,
])("%j", (input) => {
expect(findExistingBadges(input)).toEqual([]);
});
});
describe("single result cases", () => {
test.each([
`[](https://github.com/ExampleOwner/console-fail-test/actions/workflows/compile.yml)`,
`[](https://prettier.io)`,
``,
`[](http://badge.fury.io/js/console-fail-test)`,
`[](https://npmjs.org/package/console-fail-test)`,
"<a>badge</a>",
"<a >badge</a>",
"<a \t>badge</a>",
"<a href='abc'>badge</a>",
` <a href="#contributors" target="_blank">
<!-- prettier-ignore-start -->
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
<img alt="All Contributors: 1" src="https://img.shields.io/badge/all_contributors-1-21bb42.svg" />
<!-- ALL-CONTRIBUTORS-BADGE:END -->
<!-- prettier-ignore-end -->
</a>`,
` <a href="https://codecov.io/gh/ExampleOwner/example-repository" target="_blank"><img alt="Codecov Test Coverage" src="https://codecov.io/gh/ExampleOwner/example-repository/branch/main/graph/badge.svg"/></a>`,
` <a href="https://github.com/ExampleOwner/example-repository/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="Contributor Covenant" src="https://img.shields.io/badge/code_of_conduct-enforced-21bb42" /></a>`,
`<a href="http://npmjs.com/package/example-repository"><img alt="📦 npm version" src="https://img.shields.io/npm/v/example-repository?color=21bb42&label=📦%20npm" /></a>`,
`<a href="https://codecov.io/gh/ExampleOwner/example-repository" target="_blank"><img alt="🧪 Coverage" src="https://img.shields.io/codecov/c/github/ExampleOwner/example-repository?label=🧪%20coverage"/></a>`,
`<a href="https://github.com/ExampleOwner/example-repository/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="🤝 Code of Conduct: kept" src="https://img.shields.io/badge/kept-21bb42?label=🤝%20code%20of%20conduct" /></a>`,
`<a href="https://github.com/ExampleOwner/example-repository/blob/main/LICENSE.md" target="_blank"><img alt="📝 License: MIT" src="https://img.shields.io/badge/📝_license-MIT-21bb42.svg"></a>`,
`<a href="https://github.com/ExampleOwner/example-repository/blob/main/LICENSE.md" target="_blank"><img alt="License: MIT" src="https://img.shields.io/github/license/ExampleOwner/example-repository?color=21bb42"></a>`,
`
<a href="https://github.com/ExampleOwner/example-repository/blob/main/LICENSE.md" target="_blank"><img alt="License: MIT" src="https://img.shields.io/github/license/ExampleOwner/example-repository?color=21bb42"></a>
`,
`<img alt="💪 TypeScript: Strict" src="https://img.shields.io/badge/💪_typescript-strict-21bb42.svg" />`,
`<img alt="Style: Prettier" src="https://img.shields.io/badge/style-prettier-21bb42.svg" />`,
`<img alt="TypeScript: Strict" src="https://img.shields.io/badge/typescript-strict-21bb42.svg" />`,
`
<img alt="TypeScript: Strict" src="https://img.shields.io/badge/typescript-strict-21bb42.svg" />
`,
])("%s", (contents) => {
expect(findExistingBadges(contents)).toEqual([contents.trim()]);
});
});
it("doesn't collect badges after a ##", () => {
expect(
findExistingBadges(`
<img alt="test badge a" src="test-a.jpg" />
## Usage
<img alt="test badge b" src="test-b.jpg" />
`),
).toEqual([`<img alt="test badge a" src="test-a.jpg" />`]);
});
it("doesn't collect badges after an h2", () => {
expect(
findExistingBadges(`
<img alt="test badge a" src="test-a.jpg" />
<h2 align="left">Usage</h2>
<img alt="test badge b" src="test-b.jpg" />
`),
).toEqual([`<img alt="test badge a" src="test-a.jpg" />`]);
});
test("real-world usage", () => {
expect(
findExistingBadges(`
<p align="center">
<!-- prettier-ignore-start -->
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
<a href="#contributors" target="_blank"><img alt="All Contributors: 1" src="https://img.shields.io/badge/all_contributors-1-21bb42.svg" /></a>
<!-- ALL-CONTRIBUTORS-BADGE:END -->
<!-- prettier-ignore-end -->
<a href="https://codecov.io/gh/ExampleOwner/example-repository" target="_blank"><img alt="Codecov Test Coverage" src="https://codecov.io/gh/ExampleOwner/example-repository/branch/main/graph/badge.svg?token=eVIFY4MhfQ"/></a>
<a href="https://github.com/ExampleOwner/example-repository/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="Contributor Covenant" src="https://img.shields.io/badge/code_of_conduct-enforced-21bb42" /></a>
<a href="https://github.com/ExampleOwner/example-repository/blob/main/LICENSE.md" target="_blank"><img alt="License: MIT" src="https://img.shields.io/github/license/ExampleOwner/example-repository?color=21bb42"></a>
<img alt="Style: Prettier" src="https://img.shields.io/badge/style-prettier-21bb42.svg" />
<img alt="TypeScript: Strict" src="https://img.shields.io/badge/typescript-strict-21bb42.svg" />
</p>
`),
).toMatchInlineSnapshot(`
[
"<a href="#contributors" target="_blank"><img alt="All Contributors: 1" src="https://img.shields.io/badge/all_contributors-1-21bb42.svg" /></a>",
"<a href="https://codecov.io/gh/ExampleOwner/example-repository" target="_blank"><img alt="Codecov Test Coverage" src="https://codecov.io/gh/ExampleOwner/example-repository/branch/main/graph/badge.svg?token=eVIFY4MhfQ"/></a>",
"<a href="https://github.com/ExampleOwner/example-repository/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="Contributor Covenant" src="https://img.shields.io/badge/code_of_conduct-enforced-21bb42" /></a>",
"<a href="https://github.com/ExampleOwner/example-repository/blob/main/LICENSE.md" target="_blank"><img alt="License: MIT" src="https://img.shields.io/github/license/ExampleOwner/example-repository?color=21bb42"></a>",
"<img alt="Style: Prettier" src="https://img.shields.io/badge/style-prettier-21bb42.svg" />",
"<img alt="TypeScript: Strict" src="https://img.shields.io/badge/typescript-strict-21bb42.svg" />",
]
`);
});
});