test: refactor mocks to use spyOn for better isolation
This commit is contained in:
@@ -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", () => {
|
||||
|
||||
Reference in New Issue
Block a user