69 lines
2.4 KiB
JavaScript
69 lines
2.4 KiB
JavaScript
|
|
import { afterEach, describe, expect, it, jest } from "@jest/globals";
|
||
|
|
|
||
|
|
describe("frontend entrypoint and router", () => {
|
||
|
|
afterEach(() => {
|
||
|
|
jest.resetModules();
|
||
|
|
jest.restoreAllMocks();
|
||
|
|
});
|
||
|
|
|
||
|
|
it("registers the router, mounts the app, and starts auth", async () => {
|
||
|
|
const use = jest.fn();
|
||
|
|
const mount = jest.fn();
|
||
|
|
const createApp = jest.fn(() => ({ use, mount }));
|
||
|
|
const initAuth = jest.fn();
|
||
|
|
const router = { name: "router" };
|
||
|
|
const app = { name: "App" };
|
||
|
|
|
||
|
|
jest.doMock("vue", () => ({ createApp }));
|
||
|
|
jest.doMock("../../../frontend/src/App.vue", () => ({ __esModule: true, default: app }));
|
||
|
|
jest.doMock("../../../frontend/src/router", () => ({ __esModule: true, default: router }));
|
||
|
|
jest.doMock("../../../frontend/src/auth", () => ({ initAuth }));
|
||
|
|
|
||
|
|
await import("../../../frontend/src/main.js");
|
||
|
|
|
||
|
|
expect(createApp).toHaveBeenCalledWith(app);
|
||
|
|
expect(use).toHaveBeenCalledWith(router);
|
||
|
|
expect(mount).toHaveBeenCalledWith("#app");
|
||
|
|
expect(initAuth).toHaveBeenCalledTimes(1);
|
||
|
|
});
|
||
|
|
|
||
|
|
it("declares the application routes and ai redirect", async () => {
|
||
|
|
jest.dontMock("../../../frontend/src/router");
|
||
|
|
for (const view of [
|
||
|
|
"HomeView",
|
||
|
|
"AboutView",
|
||
|
|
"AiView",
|
||
|
|
"AiPlanView",
|
||
|
|
"MoneroView",
|
||
|
|
"AppsView",
|
||
|
|
"AccountView",
|
||
|
|
"RequestAccessView",
|
||
|
|
"OnboardingView",
|
||
|
|
]) {
|
||
|
|
jest.doMock(`../../../frontend/src/views/${view}.vue`, () => ({ __esModule: true, default: { name: view } }));
|
||
|
|
}
|
||
|
|
const createWebHistory = jest.fn(() => ({ mode: "history" }));
|
||
|
|
const createRouter = jest.fn((config) => ({ ...config, ready: true }));
|
||
|
|
jest.doMock("vue-router", () => ({ createRouter, createWebHistory }), { virtual: true });
|
||
|
|
|
||
|
|
const router = (await import("../../../frontend/src/router.js")).default;
|
||
|
|
|
||
|
|
expect(createWebHistory).toHaveBeenCalledTimes(1);
|
||
|
|
expect(createRouter).toHaveBeenCalledWith(expect.objectContaining({ history: { mode: "history" } }));
|
||
|
|
expect(router.routes.map((route) => route.path)).toEqual([
|
||
|
|
"/",
|
||
|
|
"/about",
|
||
|
|
"/ai",
|
||
|
|
"/ai/chat",
|
||
|
|
"/ai/roadmap",
|
||
|
|
"/monero",
|
||
|
|
"/apps",
|
||
|
|
"/account",
|
||
|
|
"/request-access",
|
||
|
|
"/onboarding",
|
||
|
|
]);
|
||
|
|
expect(router.routes.find((route) => route.path === "/ai")).toMatchObject({ redirect: "/ai/chat" });
|
||
|
|
expect(router.routes.find((route) => route.name === "account").component).toBeDefined();
|
||
|
|
});
|
||
|
|
});
|