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
|
import assert from "node:assert";
import { describe, it } from "node:test";
import { getGitHubBlob, getGitHubRepo, getGitHubTree } from "./scraper.ts";
describe("GitHub scraper", () => {
describe("actions/deploy-pages repository", () => {
it("should fetch repository", async () => {
const data = await getGitHubRepo("actions", "deploy-pages");
assert.strictEqual(data.repo.owner, "actions");
assert.strictEqual(data.repo.name, "deploy-pages");
assert.strictEqual(data.branch, "main");
assert.strictEqual(data.path, "/");
assert.strictEqual(
data.info.description,
"GitHub Action to publish artifacts to GitHub Pages for deployments",
);
assert.strictEqual(data.info.website, "https://pages.github.com");
assert.strictEqual(data.info.stars?.length, 3);
assert.strictEqual(data.info.watchers?.length, 2);
assert.strictEqual(data.info.forks?.length, 3);
assert.strictEqual(data.info.numReleases, 36);
assert.ok(data.items.length > 0);
assert.ok(Object.keys(data.overviewHtml ?? {}).includes("README.md"));
});
it("should fetch tree", async () => {
const data = await getGitHubTree("actions", "deploy-pages", "main", "src");
assert.strictEqual(data.repo.owner, "actions");
assert.strictEqual(data.repo.name, "deploy-pages");
assert.strictEqual(data.branch, "main");
assert.strictEqual(data.path, "src");
assert.deepStrictEqual(data.items, [
{
name: "__tests__",
path: "src/__tests__",
contentType: "directory",
},
{
name: "internal",
path: "src/internal",
contentType: "directory",
},
{
name: "index.js",
path: "src/index.js",
contentType: "file",
},
]);
});
it("should fetch blob", async () => {
const data = await getGitHubBlob("actions", "deploy-pages", "main", "LICENSE");
assert.strictEqual(data.repo.owner, "actions");
assert.strictEqual(data.repo.name, "deploy-pages");
assert.strictEqual(data.branch, "main");
assert.strictEqual(data.path, "LICENSE");
assert.strictEqual(data.size, 1068);
assert.strictEqual(data.language, "Text");
assert.match(data.rawContent, /^MIT License\n\n/);
assert.match(data.content, /^MIT License\n\n/);
});
});
});
|