forked from syntaxbullet/aurorabot
feat: Update quest event triggers to include item IDs for granular tracking.
This commit is contained in:
@@ -40,7 +40,7 @@ export const inventoryService = {
|
|||||||
|
|
||||||
// Trigger Quest Event
|
// Trigger Quest Event
|
||||||
const { questService } = await import("@shared/modules/quest/quest.service");
|
const { questService } = await import("@shared/modules/quest/quest.service");
|
||||||
await questService.handleEvent(userId, 'ITEM_COLLECT', Number(quantity), txFn);
|
await questService.handleEvent(userId, `ITEM_COLLECT:${itemId}`, Number(quantity), txFn);
|
||||||
|
|
||||||
return entry;
|
return entry;
|
||||||
} else {
|
} else {
|
||||||
@@ -68,7 +68,7 @@ export const inventoryService = {
|
|||||||
|
|
||||||
// Trigger Quest Event
|
// Trigger Quest Event
|
||||||
const { questService } = await import("@shared/modules/quest/quest.service");
|
const { questService } = await import("@shared/modules/quest/quest.service");
|
||||||
await questService.handleEvent(userId, 'ITEM_COLLECT', Number(quantity), txFn);
|
await questService.handleEvent(userId, `ITEM_COLLECT:${itemId}`, Number(quantity), txFn);
|
||||||
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ export const inventoryService = {
|
|||||||
|
|
||||||
// Trigger Quest Event
|
// Trigger Quest Event
|
||||||
const { questService } = await import("@shared/modules/quest/quest.service");
|
const { questService } = await import("@shared/modules/quest/quest.service");
|
||||||
await questService.handleEvent(userId, 'ITEM_USE', 1, txFn);
|
await questService.handleEvent(userId, `ITEM_USE:${itemId}`, 1, txFn);
|
||||||
|
|
||||||
return { success: true, results, usageData, item };
|
return { success: true, results, usageData, item };
|
||||||
}, tx);
|
}, tx);
|
||||||
|
|||||||
@@ -150,31 +150,31 @@ describe("questService", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("handleEvent", () => {
|
describe("handleEvent", () => {
|
||||||
it("should progress a quest", async () => {
|
it("should progress a quest with sub-events", async () => {
|
||||||
const mockUserQuest = {
|
const mockUserQuest = {
|
||||||
userId: 1n,
|
userId: 1n,
|
||||||
questId: 101,
|
questId: 101,
|
||||||
progress: 0,
|
progress: 0,
|
||||||
completedAt: null,
|
completedAt: null,
|
||||||
quest: { triggerEvent: "TEST_EVENT", requirements: { target: 5 } }
|
quest: { triggerEvent: "ITEM_USE:101", requirements: { target: 5 } }
|
||||||
};
|
};
|
||||||
mockFindMany.mockResolvedValue([mockUserQuest]);
|
mockFindMany.mockResolvedValue([mockUserQuest]);
|
||||||
mockReturning.mockResolvedValue([{ userId: 1n, questId: 101, progress: 1 }]);
|
mockReturning.mockResolvedValue([{ userId: 1n, questId: 101, progress: 1 }]);
|
||||||
|
|
||||||
await questService.handleEvent("1", "TEST_EVENT", 1);
|
await questService.handleEvent("1", "ITEM_USE:101", 1);
|
||||||
|
|
||||||
expect(mockUpdate).toHaveBeenCalled();
|
expect(mockUpdate).toHaveBeenCalled();
|
||||||
expect(mockSet).toHaveBeenCalledWith({ progress: 1 });
|
expect(mockSet).toHaveBeenCalledWith({ progress: 1 });
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should complete a quest when target reached", async () => {
|
it("should complete a quest when target reached using sub-events", async () => {
|
||||||
const mockUserQuest = {
|
const mockUserQuest = {
|
||||||
userId: 1n,
|
userId: 1n,
|
||||||
questId: 101,
|
questId: 101,
|
||||||
progress: 4,
|
progress: 4,
|
||||||
completedAt: null,
|
completedAt: null,
|
||||||
quest: {
|
quest: {
|
||||||
triggerEvent: "TEST_EVENT",
|
triggerEvent: "ITEM_COLLECT:505",
|
||||||
requirements: { target: 5 },
|
requirements: { target: 5 },
|
||||||
rewards: { balance: 100 }
|
rewards: { balance: 100 }
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ describe("questService", () => {
|
|||||||
mockFindMany.mockResolvedValue([mockUserQuest]);
|
mockFindMany.mockResolvedValue([mockUserQuest]);
|
||||||
mockFindFirst.mockResolvedValue(mockUserQuest); // For completeQuest
|
mockFindFirst.mockResolvedValue(mockUserQuest); // For completeQuest
|
||||||
|
|
||||||
await questService.handleEvent("1", "TEST_EVENT", 1);
|
await questService.handleEvent("1", "ITEM_COLLECT:505", 1);
|
||||||
|
|
||||||
// Verify completeQuest was called (it will update completedAt)
|
// Verify completeQuest was called (it will update completedAt)
|
||||||
expect(mockUpdate).toHaveBeenCalled();
|
expect(mockUpdate).toHaveBeenCalled();
|
||||||
|
|||||||
Reference in New Issue
Block a user