fix: Add unit test and review bot fixes

This commit is contained in:
Imanol Maiztegui
2026-03-05 13:21:00 +01:00
parent c3ed9466a2
commit ac4cfd329b
2 changed files with 56 additions and 4 deletions
+7 -4
View File
@@ -1662,7 +1662,7 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
}
await this.client.global.dispose().catch((e: unknown) =>
console.warn("[Kilo New] KiloProvider: global.dispose() after login failed:", e),
console.warn("[Kilo New] KiloProvider: global.dispose() after org switch failed:", e),
)
// Org switch succeeded — refresh profile and providers independently (best-effort)
@@ -1717,6 +1717,11 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
type: "profileData",
data: null,
})
await this.client.global.dispose().catch((e: unknown) =>
console.warn("[Kilo New] KiloProvider: global.dispose() after logout failed:", e),
)
} catch (error) {
console.error("[Kilo New] KiloProvider: ❌ Logout failed:", error)
this.postMessage({
@@ -1725,9 +1730,7 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
})
}
await this.client.global.dispose().catch((e: unknown) =>
console.warn("[Kilo New] KiloProvider: global.dispose() after login failed:", e),
)
}
/**
@@ -121,3 +121,52 @@ test("model fetch without OAuth accountId does not set kilocodeOrganizationId",
},
})
})
test("ModelCache.clear removes cached entry so next fetch hits the network", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
await Bun.write(
path.join(dir, "opencode.json"),
JSON.stringify({
$schema: "https://app.kilo.ai/config.json",
}),
)
},
})
await Instance.provide({
directory: tmp.path,
init: async () => {
await Auth.set("kilo", {
type: "oauth",
access: "token-clear-test",
refresh: "refresh-clear",
expires: Date.now() + 3600000,
accountId: "org-clear",
})
},
fn: async () => {
// Populate cache
captured = undefined
ModelCache.clear("kilo")
await ModelCache.fetch("kilo")
expect(captured).toBeDefined()
// Verify cache is populated — second fetch should NOT call fetchKiloModels
captured = undefined
await ModelCache.fetch("kilo")
expect(captured).toBeUndefined()
expect(ModelCache.get("kilo")).toBeDefined()
// Clear the cache
ModelCache.clear("kilo")
// get() should return undefined after clear
expect(ModelCache.get("kilo")).toBeUndefined()
// Next fetch should call fetchKiloModels again
captured = undefined
await ModelCache.fetch("kilo")
expect(captured).toBeDefined()
},
})
})