test: refactor mocks to use spyOn for better isolation

This commit is contained in:
syntaxbullet
2025-12-19 13:31:14 +01:00
parent 4e228bb7a3
commit 1f7679e5a1
4 changed files with 62 additions and 72 deletions

View File

@@ -1,7 +1,9 @@
import { describe, it, expect, mock, beforeEach } from "bun:test";
import { describe, it, expect, mock, beforeEach, afterEach, spyOn } from "bun:test";
import { questService } from "./quest.service";
import { userQuests } from "@/db/schema";
import { eq, and } from "drizzle-orm";
import { economyService } from "@/modules/economy/economy.service";
import { levelingService } from "@/modules/leveling/leveling.service";
// Mock dependencies
const mockFindFirst = mock();
@@ -45,22 +47,10 @@ mock.module("@/lib/DrizzleClient", () => {
};
});
// Mock External Services
const mockModifyUserBalance = mock();
mock.module("@/modules/economy/economy.service", () => ({
economyService: {
modifyUserBalance: mockModifyUserBalance
}
}));
const mockAddXp = mock();
mock.module("@/modules/leveling/leveling.service", () => ({
levelingService: {
addXp: mockAddXp
}
}));
describe("questService", () => {
let mockModifyUserBalance: any;
let mockAddXp: any;
beforeEach(() => {
mockFindFirst.mockReset();
mockFindMany.mockReset();
@@ -71,8 +61,15 @@ describe("questService", () => {
mockSet.mockClear();
mockWhere.mockClear();
mockOnConflictDoNothing.mockClear();
mockModifyUserBalance.mockClear();
mockAddXp.mockClear();
// Setup Spies
mockModifyUserBalance = spyOn(economyService, 'modifyUserBalance').mockResolvedValue({} as any);
mockAddXp = spyOn(levelingService, 'addXp').mockResolvedValue({} as any);
});
afterEach(() => {
mockModifyUserBalance.mockRestore();
mockAddXp.mockRestore();
});
describe("assignQuest", () => {