Skip to content

Commit 95a94e8

Browse files
committed
Aktualisiert CodeIndex-Tests für Singleton-Muster
Passt die Testfälle an das neue Singleton-Muster des CodeIndexManagers an: - Ersetzt direkte Instanziierung durch getInstance-Aufrufe - Aktualisiert Methodennamen gemäß neuer API - Fügt disposeAll-Aufrufe für bessere Testisolierung hinzu - Verbessert Null-Prüfungen in Qdrant-Tests Die Änderungen gewährleisten die korrekte Funktionsweise der Tests mit der überarbeiteten Architektur.
1 parent 6408277 commit 95a94e8

File tree

2 files changed

+27
-26
lines changed

2 files changed

+27
-26
lines changed

src/services/code-index/__tests__/manager-watcher-integration.spec.ts

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ vi.mock("../service-factory")
1010
vi.mock("../git-branch-watcher")
1111
vi.mock("../../../utils/git")
1212

13-
import { ServiceFactory } from "../service-factory"
13+
import { CodeIndexServiceFactory } from "../service-factory"
1414
import { GitBranchWatcher } from "../git-branch-watcher"
1515
import { getCurrentBranch } from "../../../utils/git"
1616

17-
const mockedServiceFactory = vi.mocked(ServiceFactory)
17+
const mockedServiceFactory = vi.mocked(CodeIndexServiceFactory)
1818
const mockedGitBranchWatcher = vi.mocked(GitBranchWatcher)
1919
const mockedGetCurrentBranch = vi.mocked(getCurrentBranch)
2020

@@ -97,15 +97,16 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
9797
if (manager) {
9898
manager.dispose()
9999
}
100+
CodeIndexManager.disposeAll()
100101
branchChangeCallback = null
101102
})
102103

103104
describe("branch change handling", () => {
104105
it("should invalidate cache and reinitialize vector store on branch change", async () => {
105-
manager = new CodeIndexManager(mockContext, "/test/workspace")
106+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
106107

107108
// Start the manager
108-
await manager.start()
109+
await manager.startIndexing()
109110

110111
expect(mockWatcher.initialize).toHaveBeenCalled()
111112
expect(mockOrchestrator.startIndexing).toHaveBeenCalled()
@@ -129,9 +130,9 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
129130
})
130131

131132
it("should recreate services if orchestrator doesn't exist", async () => {
132-
manager = new CodeIndexManager(mockContext, "/test/workspace")
133+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
133134

134-
await manager.start()
135+
await manager.startIndexing()
135136

136137
// Simulate orchestrator being disposed
137138
mockOrchestrator.getVectorStore.mockReturnValue(null)
@@ -148,9 +149,9 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
148149
})
149150

150151
it("should handle branch change errors gracefully", async () => {
151-
manager = new CodeIndexManager(mockContext, "/test/workspace")
152+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
152153

153-
await manager.start()
154+
await manager.startIndexing()
154155

155156
// Make vector store initialization fail
156157
mockVectorStore.initialize.mockRejectedValueOnce(new Error("Init failed"))
@@ -168,10 +169,10 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
168169
})
169170

170171
it("should not process branch changes when manager is stopped", async () => {
171-
manager = new CodeIndexManager(mockContext, "/test/workspace")
172+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
172173

173-
await manager.start()
174-
await manager.stop()
174+
await manager.startIndexing()
175+
manager.stopWatcher()
175176

176177
vi.clearAllMocks()
177178

@@ -187,9 +188,9 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
187188

188189
describe("watcher lifecycle", () => {
189190
it("should initialize watcher when manager starts", async () => {
190-
manager = new CodeIndexManager(mockContext, "/test/workspace")
191+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
191192

192-
await manager.start()
193+
await manager.startIndexing()
193194

194195
expect(mockedGitBranchWatcher).toHaveBeenCalledWith(
195196
"/test/workspace",
@@ -203,9 +204,9 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
203204
})
204205

205206
it("should dispose watcher when manager is disposed", async () => {
206-
manager = new CodeIndexManager(mockContext, "/test/workspace")
207+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
207208

208-
await manager.start()
209+
await manager.startIndexing()
209210

210211
manager.dispose()
211212

@@ -219,19 +220,19 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
219220
embedderProvider: "openai",
220221
})
221222

222-
manager = new CodeIndexManager(mockContext, "/test/workspace")
223+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
223224

224-
await manager.start()
225+
await manager.startIndexing()
225226

226227
expect(mockedGitBranchWatcher).not.toHaveBeenCalled()
227228
})
228229
})
229230

230231
describe("state consistency", () => {
231232
it("should maintain consistent state across multiple branch changes", async () => {
232-
manager = new CodeIndexManager(mockContext, "/test/workspace")
233+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
233234

234-
await manager.start()
235+
await manager.startIndexing()
235236

236237
// First branch change
237238
mockVectorStore.getCurrentBranch.mockReturnValue("feature-1")
@@ -261,9 +262,9 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
261262
})
262263

263264
it("should handle rapid branch changes with debouncing", async () => {
264-
manager = new CodeIndexManager(mockContext, "/test/workspace")
265+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
265266

266-
await manager.start()
267+
await manager.startIndexing()
267268

268269
// Simulate rapid branch changes (watcher handles debouncing)
269270
// The callback should only be called once per actual change
@@ -280,9 +281,9 @@ describe("CodeIndexManager + GitBranchWatcher Integration", () => {
280281

281282
describe("error recovery", () => {
282283
it("should recover from vector store initialization failure", async () => {
283-
manager = new CodeIndexManager(mockContext, "/test/workspace")
284+
manager = CodeIndexManager.getInstance(mockContext, "/test/workspace")!
284285

285-
await manager.start()
286+
await manager.startIndexing()
286287

287288
// First branch change fails
288289
mockVectorStore.initialize.mockRejectedValueOnce(new Error("Init failed"))

src/services/code-index/vector-store/__tests__/qdrant-client.branch-isolation.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,8 +474,8 @@ describe("QdrantVectorStore - Branch Isolation", () => {
474474

475475
// Verify results are from feature branch only
476476
expect(searchResults).toHaveLength(1)
477-
expect(searchResults[0].payload.filePath).toBe("feature.ts")
478-
expect(searchResults[0].payload.codeChunk).toBe("feature branch code")
477+
expect(searchResults[0]?.payload?.filePath).toBe("feature.ts")
478+
expect(searchResults[0]?.payload?.codeChunk).toBe("feature branch code")
479479

480480
// Verify main branch document is NOT in results
481481
expect(searchResults).not.toContainEqual(
@@ -550,7 +550,7 @@ describe("QdrantVectorStore - Branch Isolation", () => {
550550
expect(mockQdrantClient.query).toHaveBeenCalledWith(mainCollectionName, expect.any(Object))
551551

552552
// Should get main branch results
553-
expect(results[0].payload.filePath).toBe("main.ts")
553+
expect(results[0]?.payload?.filePath).toBe("main.ts")
554554
})
555555
})
556556
})

0 commit comments

Comments
 (0)