UNPKG

2.6 kBPlain TextView Raw
1import { vfs } from "@xmcl/util";
2import * as path from "path";
3import { ForgeWebPage } from "./forgeweb";
4jest.mock("@xmcl/net");
5
6describe("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});