Add tests that cover the new semver options

This commit is contained in:
Robert
2023-12-20 16:19:45 +00:00
parent 37b2e422cd
commit e56503249d

View File

@@ -85,6 +85,15 @@ describe("Releases API consumer", () => {
prerelease: true,
tag_name: "v3.1.2-pre-2.0",
},
// Has a tag_name that is not valid semver
{
assets: [],
created_at: "2019-08-010T00:00:00Z",
id: 6,
name: "",
prerelease: true,
tag_name: "codeql-bundle-20231220",
},
];
class MockReleasesApiConsumer extends ReleasesApiConsumer {
@@ -98,15 +107,26 @@ describe("Releases API consumer", () => {
}
}
it("picked release has version with the highest precedence", async () => {
it("picked release is non-prerelease with with the highest semver", async () => {
const consumer = new MockReleasesApiConsumer(owner, repo);
const latestRelease = await consumer.getLatestRelease(
unconstrainedVersionRange,
true,
);
expect(latestRelease.id).toBe(2);
});
it("picked release is non-prerelease with highest id", async () => {
const consumer = new MockReleasesApiConsumer(owner, repo);
const latestRelease = await consumer.getLatestRelease(
unconstrainedVersionRange,
false,
);
expect(latestRelease.id).toBe(3);
});
it("version of picked release is within the version range", async () => {
const consumer = new MockReleasesApiConsumer(owner, repo);
@@ -157,6 +177,17 @@ describe("Releases API consumer", () => {
);
expect(latestRelease.id).toBe(5);
});
it("ignores invalid semver and picks (pre-)release with highest id", async () => {
const consumer = new MockReleasesApiConsumer(owner, repo);
const latestRelease = await consumer.getLatestRelease(
undefined,
false,
true,
);
expect(latestRelease.id).toBe(6);
});
});
it("gets correct assets for a release", async () => {