diff --git a/app/components/LoginForm.vue b/app/components/LoginForm.vue
index 8dd34a3..622b6c6 100644
--- a/app/components/LoginForm.vue
+++ b/app/components/LoginForm.vue
@@ -58,8 +58,8 @@ const doLogin = async () => {
-
-
+
+
diff --git a/app/components/SignupForm.vue b/app/components/SignupForm.vue
index 9bfa07a..217c684 100644
--- a/app/components/SignupForm.vue
+++ b/app/components/SignupForm.vue
@@ -74,8 +74,8 @@ const createAccount = async () => {
-
-
+
+
diff --git a/app/layouts/Default.vue b/app/layouts/Default.vue
index f82fff1..ad31ba6 100644
--- a/app/layouts/Default.vue
+++ b/app/layouts/Default.vue
@@ -8,12 +8,8 @@ import { SidebarInset, SidebarProvider, SidebarTrigger } from "~/components/ui/s
import { Separator } from "~/components/ui/separator";
-import { useRuntimeConfig } from "#app";
-
const currentYear = new Date().getFullYear();
-const config = useRuntimeConfig();
-
const authStore = useAuthStore();
await authStore.init();
@@ -31,12 +27,8 @@ await authStore.init();
diff --git a/app/layouts/default/Sidebar.vue b/app/layouts/default/Sidebar.vue
index e4abdd5..937847e 100644
--- a/app/layouts/default/Sidebar.vue
+++ b/app/layouts/default/Sidebar.vue
@@ -1,6 +1,7 @@
@@ -101,7 +114,7 @@ const navMain = computed(() => props.navItems || data.navMain);
Glowing Fiesta
- v1.0.0
+ v{{ config.public.appVersion }}
diff --git a/app/pages/auth/logout.vue b/app/pages/auth/logout.vue
index d9fa9ce..8c9a5bf 100644
--- a/app/pages/auth/logout.vue
+++ b/app/pages/auth/logout.vue
@@ -41,8 +41,8 @@ useSeoMeta({
-
-
+
+
diff --git a/app/pages/legal/privacy-policy.vue b/app/pages/legal/privacy-policy.vue
new file mode 100644
index 0000000..b703fb4
--- /dev/null
+++ b/app/pages/legal/privacy-policy.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
Privacy Policy
+
+
diff --git a/app/pages/legal/terms-of-service.vue b/app/pages/legal/terms-of-service.vue
new file mode 100644
index 0000000..ceef9e0
--- /dev/null
+++ b/app/pages/legal/terms-of-service.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
Terms of Service
+
+
diff --git a/package-lock.json b/package-lock.json
index bd11fb8..869156a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "glowing-fiesta",
- "version": "0.0.0",
+ "version": "0.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "glowing-fiesta",
- "version": "0.0.0",
+ "version": "0.0.1",
"hasInstallScript": true,
"dependencies": {
"@pinia/nuxt": "^0.11.3",
diff --git a/package.json b/package.json
index 2c55050..10546b1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "glowing-fiesta",
- "version": "0.0.0",
+ "version": "0.0.1",
"type": "module",
"private": true,
"scripts": {
diff --git a/tests/layouts/Default.test.ts b/tests/layouts/Default.test.ts
index b01f368..418531f 100644
--- a/tests/layouts/Default.test.ts
+++ b/tests/layouts/Default.test.ts
@@ -63,7 +63,7 @@ describe("Default.vue", () => {
});
await flushPromises();
const footer = wrapper.find("[data-testid='footer']");
- expect(footer.text()).toBe("Glowing Fiesta 2025 (1.0.1)");
+ expect(footer.text()).toBe("Glowing Fiesta 2025");
});
it("footer shows range when current year is not 2025", async () => {
@@ -75,7 +75,7 @@ describe("Default.vue", () => {
});
await flushPromises();
const footer = wrapper.find("[data-testid='footer']");
- expect(footer.text()).toBe("Glowing Fiesta 2025 - 2069 (1.0.1)");
+ expect(footer.text()).toBe("Glowing Fiesta 2025 - 2069");
});
});
});
diff --git a/tests/layouts/default/Sidebar.test.ts b/tests/layouts/default/Sidebar.test.ts
index 92f3992..25250bb 100644
--- a/tests/layouts/default/Sidebar.test.ts
+++ b/tests/layouts/default/Sidebar.test.ts
@@ -3,6 +3,7 @@ import { describe, expect, it, vi, beforeAll, afterAll } from "vitest";
import SidebarLayout from "~/layouts/default/Sidebar.vue";
import { ref } from "vue";
import type * as SidebarUI from "~/components/ui/sidebar";
+import { useRuntimeConfig } from "#app";
const { useSidebarMock } = vi.hoisted(() => ({
useSidebarMock: vi.fn(),
@@ -112,6 +113,7 @@ vi.mock("lucide-vue-next", () => {
ChevronsUpDown: MockIcon,
CreditCard: MockIcon,
BookOpen: MockIcon,
+ BookOpenText: MockIcon,
HandCoins: MockIcon,
LogIn: MockIcon,
LogOut: MockIcon,
@@ -162,7 +164,7 @@ describe("SidebarLayout", () => {
});
await flushPromises();
expect(wrapper.text()).toContain("Glowing Fiesta");
- expect(wrapper.text()).toContain("v1.0.0");
+ expect(wrapper.text()).toContain(`v${useRuntimeConfig().public.appVersion}`);
});
it("renders sidebar content correctly", async () => {
diff --git a/tests/pages/legal/privacy-policy.test.ts b/tests/pages/legal/privacy-policy.test.ts
new file mode 100644
index 0000000..7f522f7
--- /dev/null
+++ b/tests/pages/legal/privacy-policy.test.ts
@@ -0,0 +1,11 @@
+import { describe, expect, it } from "vitest";
+import { mount, type VueWrapper } from "@vue/test-utils";
+import PrivacyPolicyPage from "~/pages/legal/privacy-policy.vue";
+
+describe("pages/legal/privacy-policy.vue", () => {
+ it("loads without crashing", () => {
+ const wrapper: VueWrapper = mount(PrivacyPolicyPage);
+ expect(wrapper.exists()).toBe(true);
+ expect(wrapper.text()).toContain("Privacy Policy");
+ });
+});
diff --git a/tests/pages/legal/terms-of-service.test.ts b/tests/pages/legal/terms-of-service.test.ts
new file mode 100644
index 0000000..366fbe8
--- /dev/null
+++ b/tests/pages/legal/terms-of-service.test.ts
@@ -0,0 +1,11 @@
+import { describe, expect, it } from "vitest";
+import { mount, type VueWrapper } from "@vue/test-utils";
+import TermsOfServicePage from "~/pages/legal/terms-of-service.vue";
+
+describe("pages/legal/terms-of-service.vue", () => {
+ it("loads without crashing", () => {
+ const wrapper: VueWrapper = mount(TermsOfServicePage);
+ expect(wrapper.exists()).toBe(true);
+ expect(wrapper.text()).toContain("Terms of Service");
+ });
+});
diff --git a/tsconfig.test.json b/tsconfig.test.json
index bc88467..2c342ac 100644
--- a/tsconfig.test.json
+++ b/tsconfig.test.json
@@ -12,6 +12,7 @@
"@/*": ["./app/*"],
"#shared": ["./shared"],
"#shared/*": ["./shared/*"],
+ "#app": ["./node_modules/nuxt/dist/app"],
}
},
"include": ["./tests/**/*"]