feat(characters): use local character catalog

This commit is contained in:
2026-07-17 16:03:18 +08:00
parent a210a98d98
commit b3ebd5cf3b
96 changed files with 1023 additions and 522 deletions
@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { ROUTES } from "@/router/routes";
import { getCharacterRoutes } from "@/router/routes";
import { consumePendingChatImageReturn } from "../chat_image_return_session";
import {
@@ -53,16 +53,20 @@ describe("subscription exit helpers", () => {
consumePendingChatImageReturnMock.mockResolvedValue(null);
peekPendingChatUnlockMock.mockResolvedValue(null);
await expect(consumeSubscriptionExitUrl("chat")).resolves.toBe(ROUTES.chat);
await expect(consumeSubscriptionExitUrl("chat")).resolves.toBe(
getCharacterRoutes("elio").chat,
);
});
it("falls back to sidebar by default", async () => {
consumePendingChatImageReturnMock.mockResolvedValue(null);
peekPendingChatUnlockMock.mockResolvedValue(null);
expect(getSubscriptionFallbackExitUrl(null)).toBe(ROUTES.sidebar);
expect(getSubscriptionFallbackExitUrl(null)).toBe(
getCharacterRoutes("elio").sidebar,
);
await expect(consumeSubscriptionExitUrl(null)).resolves.toBe(
ROUTES.sidebar,
getCharacterRoutes("elio").sidebar,
);
});
@@ -84,10 +88,10 @@ describe("subscription exit helpers", () => {
});
expect(getSubscriptionFallbackExitUrl("private-room")).toBe(
ROUTES.privateRoom,
getCharacterRoutes("elio").privateRoom,
);
await expect(consumeSubscriptionExitUrl("private-room")).resolves.toBe(
ROUTES.privateRoom,
getCharacterRoutes("elio").privateRoom,
);
expect(consumePendingChatImageReturnMock).not.toHaveBeenCalled();
expect(peekPendingChatUnlockMock).not.toHaveBeenCalled();
@@ -106,8 +110,8 @@ describe("subscription exit helpers", () => {
});
await expect(
resolveSubscriptionSuccessExitUrl("private-room"),
).resolves.toBe(ROUTES.privateRoom);
resolveSubscriptionSuccessExitUrl("private-room", "maya"),
).resolves.toBe(getCharacterRoutes("maya").privateRoom);
expect(peekPendingChatUnlockMock).not.toHaveBeenCalled();
expect(clearPendingChatUnlockMock).not.toHaveBeenCalled();
});