1 | import { vfs } from "@xmcl/util";
|
2 | import * as path from "path";
|
3 | import { ForgeWebPage } from "./forgeweb";
|
4 | jest.mock("@xmcl/net");
|
5 |
|
6 | describe("ForgeWebpage", () => {
|
7 | let mockNet: jest.Mocked<typeof import("@xmcl/net")>;
|
8 | jest.mock("@xmcl/net");
|
9 | beforeEach(() => {
|
10 | mockNet = jest.requireMock("@xmcl/net") as jest.Mocked<typeof import("@xmcl/net")>;
|
11 | });
|
12 | describe("#parse", () => {
|
13 | test("#parse", async () => {
|
14 | const content = await vfs.readFile(path.join(__dirname, "..", "..", "mock", "sample-forge.html"));
|
15 | const page = ForgeWebPage.parse(content.toString());
|
16 | expect(page).toBeTruthy();
|
17 | expect(page.versions).toHaveLength(3);
|
18 | expect(page.mcversion).toEqual("1.14.4");
|
19 | for (const ver of page.versions) {
|
20 | expect(ver.type).toBeTruthy();
|
21 | expect(ver.version).toBeTruthy();
|
22 |
|
23 | expect(ver.installer.sha1).toBeTruthy();
|
24 | expect(ver.installer.path).toBeTruthy();
|
25 | expect(ver.installer.md5).toBeTruthy();
|
26 | }
|
27 | const last = page.versions[page.versions.length - 1];
|
28 | expect(last.installer.md5).toEqual("2d24a32cce228d4cf3c42caf2e3cfe37");
|
29 | expect(last.installer.sha1).toEqual("80ffade96232940422cbaf218ce6d424fd9192f2");
|
30 | expect(last.installer.path).toEqual("http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.14.4-28.0.4/forge-1.14.4-28.0.4-installer.jar");
|
31 | });
|
32 | });
|
33 |
|
34 | describe("#getWebPage", () => {
|
35 | test("Get Latest", async () => {
|
36 | mockNet.getIfUpdate.mockReturnValue(Promise.resolve({
|
37 | timestamp: "0",
|
38 | }));
|
39 | const page = await ForgeWebPage.getWebPage();
|
40 |
|
41 | expect(page).toBeTruthy();
|
42 | expect(mockNet.getIfUpdate).toHaveBeenCalled();
|
43 | expect(mockNet.getIfUpdate).toHaveBeenCalledWith("http://files.minecraftforge.net/maven/net/minecraftforge/forge/index.html", ForgeWebPage.parse, undefined);
|
44 |
|
45 | });
|
46 | test("Get Specific version", async () => {
|
47 | mockNet.getIfUpdate.mockReturnValue(Promise.resolve({
|
48 | timestamp: "0",
|
49 | }));
|
50 | const page = await ForgeWebPage.getWebPage({ mcversion: "1.12.2" });
|
51 |
|
52 | expect(page).toBeTruthy();
|
53 | expect(mockNet.getIfUpdate).toHaveBeenCalled();
|
54 | expect(mockNet.getIfUpdate).toHaveBeenCalledWith("http://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.12.2.html", ForgeWebPage.parse, undefined);
|
55 | });
|
56 | });
|
57 | });
|