Skip to content

Commit 24ae1b4

Browse files
FrankLiu4138claude
andcommitted
test: add comprehensive version checks using real release versions
Tests getExtensionState with actual historical release versions from the extension repo to ensure MIN_APPMOD_VERSION (1.13.0) correctly classifies all known versions as outdated or up-to-date. Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
1 parent debba6f commit 24ae1b4

2 files changed

Lines changed: 98 additions & 30 deletions

File tree

.squire/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Ignore everything in .squire/ except this file
2+
*
3+
!.gitignore

test/suite/notificationContent.test.ts

Lines changed: 95 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,51 @@ suite("notificationManager pure functions", () => {
1313
assert.strictEqual(getExtensionState(undefined), "not-installed");
1414
});
1515

16-
test("returns 'outdated' when version is below minimum", () => {
17-
assert.strictEqual(getExtensionState("1.0.0"), "outdated");
18-
});
16+
// Real release versions that are below MIN_APPMOD_VERSION (1.13.0)
17+
const outdatedVersions = [
18+
"1.12.26021301",
19+
"1.11.0",
20+
"1.11.26012301",
21+
"1.10.1",
22+
"1.10.0",
23+
"1.9.1",
24+
"1.0.0",
25+
"0.5.2025061701",
26+
];
1927

20-
test("returns 'up-to-date' when version equals minimum", () => {
21-
assert.strictEqual(getExtensionState(Upgrade.MIN_APPMOD_VERSION), "up-to-date");
22-
});
28+
for (const version of outdatedVersions) {
29+
test(`returns 'outdated' for version ${version}`, () => {
30+
assert.strictEqual(getExtensionState(version), "outdated");
31+
});
32+
}
33+
34+
// Real release versions that are >= MIN_APPMOD_VERSION (1.13.0)
35+
const upToDateVersions = [
36+
"1.13.0", // exact minimum
37+
"1.13.2026031003", // pre-release based on 1.13
38+
"1.13.2026030905",
39+
"1.14.1",
40+
"1.14.2026033101",
41+
"1.15.0",
42+
"1.15.3",
43+
"1.16.0",
44+
"1.17.0",
45+
"1.17.1",
46+
"1.18.0",
47+
"1.19.0",
48+
"1.19.1",
49+
"1.19.2",
50+
"1.20.26052601", // latest
51+
];
2352

24-
test("returns 'up-to-date' when version is above minimum", () => {
25-
assert.strictEqual(getExtensionState("99.0.0"), "up-to-date");
53+
for (const version of upToDateVersions) {
54+
test(`returns 'up-to-date' for version ${version}`, () => {
55+
assert.strictEqual(getExtensionState(version), "up-to-date");
56+
});
57+
}
58+
59+
test("MIN_APPMOD_VERSION is 1.13.0", () => {
60+
assert.strictEqual(Upgrade.MIN_APPMOD_VERSION, "1.13.0");
2661
});
2762
});
2863

@@ -48,33 +83,63 @@ suite("notificationManager pure functions", () => {
4883
link: "https://nvd.nist.gov/vuln/detail/CVE-2021-44228",
4984
};
5085

51-
test("shows 'Upgrade Now' when extension is up-to-date", () => {
52-
const result = buildNotificationContent([upgradeIssue], "up-to-date");
53-
assert.strictEqual(result.upgradeButtonText, "Upgrade Now");
54-
assert.strictEqual(result.fixCVEButtonText, "Fix Now");
55-
});
86+
suite("button text", () => {
87+
test("shows 'Upgrade Now' / 'Fix Now' when extension is up-to-date", () => {
88+
const result = buildNotificationContent([upgradeIssue], "up-to-date");
89+
assert.strictEqual(result.upgradeButtonText, "Upgrade Now");
90+
assert.strictEqual(result.fixCVEButtonText, "Fix Now");
91+
});
5692

57-
test("shows 'Install Extension and Upgrade' when extension is not installed", () => {
58-
const result = buildNotificationContent([upgradeIssue], "not-installed");
59-
assert.strictEqual(result.upgradeButtonText, "Install Extension and Upgrade");
60-
assert.strictEqual(result.fixCVEButtonText, "Install Extension and Fix");
61-
});
93+
test("shows 'Update Extension and Upgrade/Fix' when extension is outdated", () => {
94+
const result = buildNotificationContent([upgradeIssue], "outdated");
95+
assert.strictEqual(result.upgradeButtonText, "Update Extension and Upgrade");
96+
assert.strictEqual(result.fixCVEButtonText, "Update Extension and Fix");
97+
});
6298

63-
test("shows 'Update Extension and Upgrade' when extension is outdated", () => {
64-
const result = buildNotificationContent([upgradeIssue], "outdated");
65-
assert.strictEqual(result.upgradeButtonText, "Update Extension and Upgrade");
66-
assert.strictEqual(result.fixCVEButtonText, "Update Extension and Fix");
99+
test("shows 'Install Extension and Upgrade/Fix' when extension is not installed", () => {
100+
const result = buildNotificationContent([upgradeIssue], "not-installed");
101+
assert.strictEqual(result.upgradeButtonText, "Install Extension and Upgrade");
102+
assert.strictEqual(result.fixCVEButtonText, "Install Extension and Fix");
103+
});
67104
});
68105

69-
test("builds CVE message when CVE issues present", () => {
70-
const result = buildNotificationContent([cveIssue], "up-to-date");
71-
assert.ok(result.message.includes("CVE"));
72-
assert.strictEqual(result.fixCVEButtonText, "Fix Now");
73-
});
106+
suite("message body", () => {
107+
test("up-to-date: message says 'upgrade'", () => {
108+
const result = buildNotificationContent([upgradeIssue], "up-to-date");
109+
assert.ok(result.message.includes("upgrade"));
110+
assert.ok(!result.message.includes("install"));
111+
assert.ok(!result.message.includes("update"));
112+
});
113+
114+
test("outdated: message says 'update ... extension and upgrade'", () => {
115+
const result = buildNotificationContent([upgradeIssue], "outdated");
116+
assert.ok(result.message.includes("update"));
117+
assert.ok(result.message.includes("extension and upgrade"));
118+
});
119+
120+
test("not-installed: message says 'install ... extension and upgrade'", () => {
121+
const result = buildNotificationContent([upgradeIssue], "not-installed");
122+
assert.ok(result.message.includes("install"));
123+
assert.ok(result.message.includes("extension and upgrade"));
124+
});
125+
126+
test("CVE up-to-date: message says 'fix'", () => {
127+
const result = buildNotificationContent([cveIssue], "up-to-date");
128+
assert.ok(result.message.includes("fix"));
129+
assert.ok(result.message.includes("CVE"));
130+
});
131+
132+
test("CVE outdated: message says 'update ... extension and fix'", () => {
133+
const result = buildNotificationContent([cveIssue], "outdated");
134+
assert.ok(result.message.includes("update"));
135+
assert.ok(result.message.includes("extension and fix"));
136+
});
74137

75-
test("builds upgrade message when no CVE issues", () => {
76-
const result = buildNotificationContent([upgradeIssue], "up-to-date");
77-
assert.ok(result.message.includes("Spring Boot"));
138+
test("CVE not-installed: message says 'install ... extension and fix'", () => {
139+
const result = buildNotificationContent([cveIssue], "not-installed");
140+
assert.ok(result.message.includes("install"));
141+
assert.ok(result.message.includes("extension and fix"));
142+
});
78143
});
79144
});
80145
});

0 commit comments

Comments
 (0)