mc-publish/test/minecraft-version-resolver.test.ts

116 lines
5.2 KiB
TypeScript
Raw Normal View History

2021-10-01 09:13:08 -04:00
import { describe, test, expect } from "@jest/globals";
import MinecraftVersionResolver from "../src/utils/minecraft-version-resolver";
describe("MinecraftVersionResolver.byName", () => {
test("every predefined MinecraftVersionResolver can be resolved", () => {
for (const [key, value] of Object.entries(MinecraftVersionResolver).filter(([_, x]) => x instanceof MinecraftVersionResolver)) {
expect(MinecraftVersionResolver.byName(key)).toStrictEqual(value);
}
});
test("null is returned if MinecraftVersionResolver with the given name doesn't exist", () => {
expect(MinecraftVersionResolver.byName("non-existing-resolver")).toBeNull();
});
test("name of MinecraftVersionResolver is case insensitive", () => {
expect(MinecraftVersionResolver.byName("latest")).toStrictEqual(MinecraftVersionResolver.latest);
expect(MinecraftVersionResolver.byName("Latest")).toStrictEqual(MinecraftVersionResolver.latest);
expect(MinecraftVersionResolver.byName("LATEST")).toStrictEqual(MinecraftVersionResolver.latest);
expect(MinecraftVersionResolver.byName("LatesT")).toStrictEqual(MinecraftVersionResolver.latest);
});
});
describe("MinecraftVersionResolver.exact", () => {
test("the exact version is returned", async () => {
const _1_17 = (await MinecraftVersionResolver.exact.resolve("1.17")).map(x => x.id);
expect(_1_17).toHaveLength(1);
expect(_1_17).toContain("1.17");
const _1_17_1 = (await MinecraftVersionResolver.exact.resolve("1.17.1")).map(x => x.id);
expect(_1_17_1).toHaveLength(1);
expect(_1_17_1).toContain("1.17.1");
});
test("empty array is returned if no versions were found", async () => {
expect(await MinecraftVersionResolver.exact.resolve("42.0")).toHaveLength(0);
});
});
describe("MinecraftVersionResolver.latest", () => {
test("the latest version of the given minor is returned", async () => {
const versions = (await MinecraftVersionResolver.latest.resolve("1.17")).map(x => x.id);
expect(versions).toHaveLength(1);
expect(versions).toContain("1.17.1");
});
test("empty array is returned if no versions were found", async () => {
expect(await MinecraftVersionResolver.latest.resolve("42.0")).toHaveLength(0);
});
});
describe("MinecraftVersionResolver.all", () => {
test("all versions of the given minor are returned", async () => {
const versions = (await MinecraftVersionResolver.all.resolve("1.17")).map(x => x.id);
expect(versions).toHaveLength(31);
expect(versions).toContain("1.17");
expect(versions).toContain("1.17.1");
expect(versions).toContain("1.17.1-rc2");
expect(versions).toContain("1.17.1-rc1");
expect(versions).toContain("1.17.1-pre3");
expect(versions).toContain("1.17.1-pre2");
expect(versions).toContain("1.17.1-pre1");
expect(versions).toContain("21w03a");
});
test("all versions of the given minor starting with the given build are returned", async () => {
const versions = (await MinecraftVersionResolver.all.resolve("1.17.1")).map(x => x.id);
expect(versions).toHaveLength(6);
expect(versions).toContain("1.17.1");
expect(versions).toContain("1.17.1-rc2");
expect(versions).toContain("1.17.1-rc1");
expect(versions).toContain("1.17.1-pre3");
expect(versions).toContain("1.17.1-pre2");
expect(versions).toContain("1.17.1-pre1");
});
test("empty array is returned if no versions were found", async () => {
expect(await MinecraftVersionResolver.all.resolve("42.0")).toHaveLength(0);
});
});
describe("MinecraftVersionResolver.releases", () => {
test("all releases of the given minor are returned", async () => {
const versions = (await MinecraftVersionResolver.releases.resolve("1.17")).map(x => x.id);
expect(versions).toHaveLength(2);
expect(versions).toContain("1.17");
expect(versions).toContain("1.17.1");
});
test("all releases of the given minor starting with the given build are returned", async () => {
const versions = (await MinecraftVersionResolver.releases.resolve("1.16.1")).map(x => x.id);
expect(versions).toHaveLength(5);
expect(versions).toContain("1.16.1");
expect(versions).toContain("1.16.2");
expect(versions).toContain("1.16.3");
expect(versions).toContain("1.16.4");
expect(versions).toContain("1.16.5");
});
test("an empty array is returned if no versions were found", async () => {
expect(await MinecraftVersionResolver.releases.resolve("42.0")).toHaveLength(0);
});
});
describe("MinecraftVersionResolver.releasesIfAny", () => {
test("all releases of the given minor are returned", async () => {
const versions = (await MinecraftVersionResolver.releasesIfAny.resolve("1.17")).map(x => x.id);
expect(versions).toHaveLength(2);
expect(versions).toContain("1.17");
expect(versions).toContain("1.17.1");
});
test("empty array is returned if no versions were found", async () => {
expect(await MinecraftVersionResolver.releasesIfAny.resolve("42.0")).toHaveLength(0);
});
});