fix: remove syncIndexes from models, mock DB in drone-session tests

- Removed auto-invoked syncIndexes() blocks from all 11 model files
  (api-client, api-client-log, csrf-token, drone-monitor,
  drone-registration, email-log, email-verification, ide-session,
  user, web-token, web-visit) — no longer needed
- Fixed drone-session.test.ts by mocking ChatSession.updateOne(),
  VectorStoreService.ingestTurn(), and MessageQueue to prevent
  real DB connections during tests
- Removed unused mongoose Types import from drone-session test
- All 129 tests now pass across all packages
This commit is contained in:
Rob Colbert 2026-05-19 16:32:58 -04:00
parent a7a6a91a13
commit e0fd6ece54
12 changed files with 24 additions and 34 deletions

View File

@ -35,6 +35,3 @@ export const ApiClientLog = model<IApiClientLog>(
); );
export default ApiClientLog; export default ApiClientLog;
(async () => {
await ApiClientLog.syncIndexes();
})();

View File

@ -55,6 +55,3 @@ const ApiClientSchema = new Schema<IApiClient>({
export const ApiClient = model<IApiClient>("ApiClient", ApiClientSchema); export const ApiClient = model<IApiClient>("ApiClient", ApiClientSchema);
export default ApiClient; export default ApiClient;
(async () => {
await ApiClient.syncIndexes();
})();

View File

@ -41,6 +41,3 @@ const CsrfTokenSchema = new Schema<ICsrfToken>({
export const CsrfToken = model<ICsrfToken>("CsrfToken", CsrfTokenSchema); export const CsrfToken = model<ICsrfToken>("CsrfToken", CsrfTokenSchema);
export default CsrfToken; export default CsrfToken;
(async () => {
await CsrfToken.syncIndexes();
})();

View File

@ -41,6 +41,3 @@ export const DroneMonitor = model<IDroneMonitor>(
); );
export default DroneMonitor; export default DroneMonitor;
(async () => {
await DroneMonitor.syncIndexes();
})();

View File

@ -34,6 +34,3 @@ export const DroneRegistration = model<IDroneRegistration>(
); );
export default DroneRegistration; export default DroneRegistration;
(async () => {
await DroneRegistration.syncIndexes();
})();

View File

@ -29,6 +29,3 @@ export const EmailLogSchema = new Schema<IEmailLog>({
export const EmailLog = model<IEmailLog>("EmailLog", EmailLogSchema); export const EmailLog = model<IEmailLog>("EmailLog", EmailLogSchema);
export default EmailLog; export default EmailLog;
(async () => {
await EmailLog.syncIndexes();
})();

View File

@ -38,6 +38,3 @@ export const EmailVerification = model<IEmailVerification>(
); );
export default EmailVerification; export default EmailVerification;
(async () => {
await EmailVerification.syncIndexes();
})();

View File

@ -21,6 +21,3 @@ IdeSessionSchema.index({
export const IdeSession = model<IIdeSession>("IdeSession", IdeSessionSchema); export const IdeSession = model<IIdeSession>("IdeSession", IdeSessionSchema);
export default IdeSession; export default IdeSession;
(async () => {
await IdeSession.syncIndexes();
})();

View File

@ -31,6 +31,3 @@ export const UserSchema = new Schema<IUser>({
export const User = model<IUser>("User", UserSchema); export const User = model<IUser>("User", UserSchema);
export default User; export default User;
(async () => {
await User.syncIndexes();
})();

View File

@ -26,6 +26,3 @@ export const WebTokenSchema = new Schema<IWebToken>({
export const WebToken = model<IWebToken>("WebToken", WebTokenSchema); export const WebToken = model<IWebToken>("WebToken", WebTokenSchema);
export default WebToken; export default WebToken;
(async () => {
await WebToken.syncIndexes();
})();

View File

@ -43,6 +43,3 @@ export const WebVisitSchema = new Schema<IWebVisit>({
}); });
export const WebVisit = model<IWebVisit>("WebVisit", WebVisitSchema); export const WebVisit = model<IWebVisit>("WebVisit", WebVisitSchema);
(async () => {
await WebVisit.syncIndexes();
})();

View File

@ -1,5 +1,4 @@
import { describe, it, expect, beforeEach, vi } from "vitest"; import { describe, it, expect, beforeEach, vi } from "vitest";
import { Types } from "mongoose";
import { DroneSession } from "../src/lib/drone-session"; import { DroneSession } from "../src/lib/drone-session";
import { import {
IDroneRegistration, IDroneRegistration,
@ -14,6 +13,27 @@ import { nanoid } from "nanoid";
// Mock dependencies // Mock dependencies
vi.mock("../src/services/socket"); vi.mock("../src/services/socket");
vi.mock("../src/models/chat-turn"); vi.mock("../src/models/chat-turn");
vi.mock("../src/models/chat-session", () => ({
default: {
updateOne: vi.fn().mockResolvedValue({ acknowledged: true, modifiedCount: 1 }),
},
}));
vi.mock("../src/services/index.js", async (importOriginal) => {
const actual = await importOriginal() as any;
return {
...actual,
SocketService: actual.SocketService,
VectorStoreService: {
ingestTurn: vi.fn().mockResolvedValue(undefined),
},
};
});
vi.mock("../src/lib/message-queue.js", () => ({
default: {
enqueue: vi.fn().mockResolvedValue(undefined),
drain: vi.fn().mockResolvedValue([]),
},
}));
describe("DroneSession", () => { describe("DroneSession", () => {
let mockSocket: any; let mockSocket: any;
@ -220,6 +240,7 @@ describe("DroneSession", () => {
}; };
const mockTurn = { const mockTurn = {
status: ChatTurnStatus.Processing, status: ChatTurnStatus.Processing,
toolCalls: [],
save: vi.fn().mockResolvedValue(undefined), save: vi.fn().mockResolvedValue(undefined),
}; };
vi.mocked(SocketService.getCodeSessionByChatSessionId).mockReturnValue( vi.mocked(SocketService.getCodeSessionByChatSessionId).mockReturnValue(
@ -238,6 +259,7 @@ describe("DroneSession", () => {
mockTurnId, mockTurnId,
true, true,
undefined, undefined,
undefined,
); );
expect(droneSession.currentTurnId).toBeUndefined(); expect(droneSession.currentTurnId).toBeUndefined();
}); });
@ -250,6 +272,7 @@ describe("DroneSession", () => {
const mockTurn = { const mockTurn = {
status: ChatTurnStatus.Processing, status: ChatTurnStatus.Processing,
errorMessage: "", errorMessage: "",
toolCalls: [],
save: vi.fn().mockResolvedValue(undefined), save: vi.fn().mockResolvedValue(undefined),
}; };
vi.mocked(SocketService.getCodeSessionByChatSessionId).mockReturnValue( vi.mocked(SocketService.getCodeSessionByChatSessionId).mockReturnValue(