diff --git a/agdb_studio/src/router/router.spec.ts b/agdb_studio/src/router/router.spec.ts index 9b7596dfb..4b4fdd4aa 100644 --- a/agdb_studio/src/router/router.spec.ts +++ b/agdb_studio/src/router/router.spec.ts @@ -39,4 +39,11 @@ describe("router", () => { expect(router.currentRoute.value.name).toBe("login"); expect(logoutMock).toHaveBeenCalled(); }); + it("loads the about page", async () => { + isLoggedInMock.mockReturnValue(true); + + await router.push("/about"); + + expect(router.currentRoute.value.name).toBe("about"); + }); }); diff --git a/agdb_studio/src/router/routes.spec.ts b/agdb_studio/src/router/routes.spec.ts index da8b25220..0265751e7 100644 --- a/agdb_studio/src/router/routes.spec.ts +++ b/agdb_studio/src/router/routes.spec.ts @@ -1,49 +1,20 @@ -import { describe, it, expect, beforeEach } from "vitest"; -import { createRouter, createWebHistory } from "vue-router"; -import { mount } from "@vue/test-utils"; +import { describe, it, expect } from "vitest"; import { createRoutes } from "@/router/routes"; -import HomeView from "@/views/HomeView.vue"; -import AboutView from "@/views/HomeView.vue"; -import LoginView from "@/views/LoginView.vue"; -import App from "@/App.vue"; -const setupTest = async (path: string) => { - const router = createRouter({ - history: createWebHistory(), - routes: createRoutes(), +const validateRoutes = (routes: ReturnType) => { + routes.forEach((route) => { + expect(route.path).toBeDefined(); + expect(route.component).toBeDefined(); + if (route.children) { + validateRoutes(route.children); + } }); - router.push(path); - await router.isReady(); - const wrapper = mount(App, { - global: { - plugins: [router], - }, - }); - return { router, wrapper }; }; -describe("router", () => { - beforeEach(() => { - vi.clearAllMocks(); - }); - - it("renders a default route", async () => { - const { wrapper } = await setupTest("/"); - - expect(wrapper.findComponent(HomeView).exists()).toBe(true); - }); - - it("renders the about route", async () => { - const { wrapper, router } = await setupTest("/"); - router.push("/about"); - await router.isReady(); - - expect(wrapper.findComponent(AboutView).exists()).toBe(true); - }); - - it("renders the login route", async () => { - const { wrapper } = await setupTest("/login"); - - expect(wrapper.findComponent(LoginView).exists()).toBe(true); +describe("routes", () => { + it("creates routes", () => { + const routes = createRoutes(); + expect(routes).toHaveLength(2); + validateRoutes(routes); }); }); diff --git a/agdb_studio/src/views/HomeView.spec.ts b/agdb_studio/src/views/HomeView.spec.ts new file mode 100644 index 000000000..89de0e9b5 --- /dev/null +++ b/agdb_studio/src/views/HomeView.spec.ts @@ -0,0 +1,9 @@ +import HomeView from "./HomeView.vue"; +import { mount } from "@vue/test-utils"; + +describe("HomeView", () => { + it("renders properly", () => { + const wrapper = mount(HomeView); + expect(wrapper.find(".main-wrapper")).toBeTruthy(); + }); +}); diff --git a/agdb_studio/src/views/LoginView.spec.ts b/agdb_studio/src/views/LoginView.spec.ts new file mode 100644 index 000000000..51d2aded4 --- /dev/null +++ b/agdb_studio/src/views/LoginView.spec.ts @@ -0,0 +1,9 @@ +import LoginView from "./LoginView.vue"; +import { mount } from "@vue/test-utils"; + +describe("LoginView", () => { + it("renders properly", () => { + const wrapper = mount(LoginView); + expect(wrapper.text()).toContain("login"); + }); +}); diff --git a/agdb_studio/vitest.config.mts b/agdb_studio/vitest.config.mts index c1a9e8992..5c6c2cbe8 100644 --- a/agdb_studio/vitest.config.mts +++ b/agdb_studio/vitest.config.mts @@ -24,7 +24,14 @@ export default mergeConfig( "e2e/*", "*.config.*", "./src/main.ts", + "./src/App.vue", ], + thresholds: { + lines: 100, + functions: 100, + branches: 100, + statements: 100, + }, }, setupFiles: ["./vitest.setup.ts"], globals: true, diff --git a/agdb_web/vitest.config.ts b/agdb_web/vitest.config.ts index cc04def67..dd9d5d2c9 100644 --- a/agdb_web/vitest.config.ts +++ b/agdb_web/vitest.config.ts @@ -21,6 +21,12 @@ export default defineConfig({ "*.config.*", "middleware.ts", ], + thresholds: { + lines: 100, + functions: 100, + branches: 100, + statements: 100, + }, // reporter: ["text", ["html", { subdir: "coverage" }]], }, },