feat: 项目结构重构优化
This commit is contained in:
141
tests/unit/store/app.test.ts
Normal file
141
tests/unit/store/app.test.ts
Normal file
@@ -0,0 +1,141 @@
|
||||
import { describe, it, expect, beforeEach } from "vitest";
|
||||
import { setActivePinia, createPinia } from "pinia";
|
||||
import { useAppStore } from "@/store/modules/app";
|
||||
import { DeviceEnum, SidebarStatus } from "@/enums";
|
||||
|
||||
describe("useAppStore", () => {
|
||||
beforeEach(() => {
|
||||
setActivePinia(createPinia());
|
||||
localStorage.clear();
|
||||
});
|
||||
|
||||
describe("侧边栏状态", () => {
|
||||
it("应该切换侧边栏状态", () => {
|
||||
const store = useAppStore();
|
||||
const initialState = store.sidebar.opened;
|
||||
|
||||
store.toggleSidebar();
|
||||
expect(store.sidebar.opened).toBe(!initialState);
|
||||
|
||||
store.toggleSidebar();
|
||||
expect(store.sidebar.opened).toBe(initialState);
|
||||
});
|
||||
|
||||
it("应该关闭侧边栏", () => {
|
||||
const store = useAppStore();
|
||||
store.openSideBar();
|
||||
expect(store.sidebar.opened).toBe(true);
|
||||
|
||||
store.closeSideBar();
|
||||
expect(store.sidebar.opened).toBe(false);
|
||||
});
|
||||
|
||||
it("应该打开侧边栏", () => {
|
||||
const store = useAppStore();
|
||||
store.closeSideBar();
|
||||
expect(store.sidebar.opened).toBe(false);
|
||||
|
||||
store.openSideBar();
|
||||
expect(store.sidebar.opened).toBe(true);
|
||||
});
|
||||
|
||||
it("应该持久化侧边栏状态", () => {
|
||||
const store = useAppStore();
|
||||
store.openSideBar();
|
||||
|
||||
// 创建新的 store 实例模拟页面刷新
|
||||
const newStore = useAppStore();
|
||||
expect(newStore.sidebar.opened).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("设备类型", () => {
|
||||
it("应该切换设备类型", () => {
|
||||
const store = useAppStore();
|
||||
|
||||
store.toggleDevice(DeviceEnum.MOBILE);
|
||||
expect(store.device).toBe(DeviceEnum.MOBILE);
|
||||
|
||||
store.toggleDevice(DeviceEnum.DESKTOP);
|
||||
expect(store.device).toBe(DeviceEnum.DESKTOP);
|
||||
});
|
||||
|
||||
it("应该持久化设备类型", () => {
|
||||
const store = useAppStore();
|
||||
store.toggleDevice(DeviceEnum.MOBILE);
|
||||
|
||||
const newStore = useAppStore();
|
||||
expect(newStore.device).toBe(DeviceEnum.MOBILE);
|
||||
});
|
||||
});
|
||||
|
||||
describe("组件尺寸", () => {
|
||||
it("应该修改组件尺寸", () => {
|
||||
const store = useAppStore();
|
||||
|
||||
store.changeSize("large");
|
||||
expect(store.size).toBe("large");
|
||||
|
||||
store.changeSize("small");
|
||||
expect(store.size).toBe("small");
|
||||
});
|
||||
|
||||
it("应该持久化组件尺寸", () => {
|
||||
const store = useAppStore();
|
||||
store.changeSize("large");
|
||||
|
||||
const newStore = useAppStore();
|
||||
expect(newStore.size).toBe("large");
|
||||
});
|
||||
});
|
||||
|
||||
describe("语言设置", () => {
|
||||
it("应该修改语言", () => {
|
||||
const store = useAppStore();
|
||||
|
||||
store.changeLanguage("en");
|
||||
expect(store.language).toBe("en");
|
||||
|
||||
store.changeLanguage("zh-cn");
|
||||
expect(store.language).toBe("zh-cn");
|
||||
});
|
||||
|
||||
it("应该根据语言返回正确的 locale", () => {
|
||||
const store = useAppStore();
|
||||
|
||||
store.changeLanguage("en");
|
||||
expect(store.locale).toBeDefined();
|
||||
|
||||
store.changeLanguage("zh-cn");
|
||||
expect(store.locale).toBeDefined();
|
||||
});
|
||||
|
||||
it("应该持久化语言设置", () => {
|
||||
const store = useAppStore();
|
||||
store.changeLanguage("en");
|
||||
|
||||
const newStore = useAppStore();
|
||||
expect(newStore.language).toBe("en");
|
||||
});
|
||||
});
|
||||
|
||||
describe("顶部菜单", () => {
|
||||
it("应该激活顶部菜单", () => {
|
||||
const store = useAppStore();
|
||||
|
||||
store.activeTopMenu("/dashboard");
|
||||
expect(store.activeTopMenuPath).toBe("/dashboard");
|
||||
|
||||
store.activeTopMenu("/system");
|
||||
expect(store.activeTopMenuPath).toBe("/system");
|
||||
});
|
||||
|
||||
it("应该持久化顶部菜单路径", () => {
|
||||
const store = useAppStore();
|
||||
store.activeTopMenu("/dashboard");
|
||||
|
||||
const newStore = useAppStore();
|
||||
expect(newStore.activeTopMenuPath).toBe("/dashboard");
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user