1 Commits

Author SHA1 Message Date
Sebastian 09c91fe452 chore(deps): update dependency phpunit/phpunit to v12.5.32
Build Test / build (pull_request) Successful in 22s
JS Unit Tests / test (pull_request) Failing after 22s
PHP Integration Tests / Integration Tests (pull_request) Failing after 1m11s
PHP Unit Tests / test (pull_request) Failing after 1m9s
2026-07-26 03:03:13 +00:00
+74
View File
@@ -0,0 +1,74 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { createPinia, setActivePinia } from 'pinia'
import { useLayoutStore } from '@KTXC/stores/layoutStore'
import { useTenantStore } from '@KTXC/stores/tenantStore'
import { useUserStore } from '@KTXC/stores/userStore'
const userServiceMock = vi.hoisted(() => ({
updateProfile: vi.fn(() => Promise.resolve()),
updateSettings: vi.fn(() => Promise.resolve()),
flushAll: vi.fn(() => Promise.resolve()),
}))
vi.mock('@KTXC/services/user/userService', () => ({
userService: userServiceMock,
}))
describe('layoutStore', () => {
beforeEach(() => {
const storage = new Map<string, string>()
vi.stubGlobal('localStorage', {
getItem: vi.fn((key: string) => storage.get(key) ?? null),
setItem: vi.fn((key: string, value: string) => storage.set(key, value)),
removeItem: vi.fn((key: string) => storage.delete(key)),
clear: vi.fn(() => storage.clear()),
})
setActivePinia(createPinia())
vi.clearAllMocks()
})
it('hydrates initial layout preferences after settings are loaded', () => {
const userStore = useUserStore()
const tenantStore = useTenantStore()
const layoutStore = useLayoutStore()
expect(layoutStore.sidebarDrawer).toBe(true)
expect(layoutStore.miniSidebar).toBe(false)
expect(layoutStore.theme).toBe('light')
tenantStore.init({
id: 'tenant',
domain: 'example.test',
label: 'Example',
settings: {
theme_default_mode: 'dark',
},
})
userStore.init({
settings: {
sidebar_drawer: false,
mini_sidebar: true,
theme: 'system',
},
})
layoutStore.hydrateFromSettings()
expect(layoutStore.sidebarDrawer).toBe(false)
expect(layoutStore.miniSidebar).toBe(true)
expect(layoutStore.theme).toBe('system')
expect(userServiceMock.updateSettings).not.toHaveBeenCalled()
})
it('continues to persist user-driven layout changes', () => {
const layoutStore = useLayoutStore()
layoutStore.toggleSidebarDrawer()
layoutStore.setMiniSidebar(true)
layoutStore.setTheme('dark')
expect(userServiceMock.updateSettings).toHaveBeenCalledWith({ sidebar_drawer: false })
expect(userServiceMock.updateSettings).toHaveBeenCalledWith({ mini_sidebar: true })
expect(userServiceMock.updateSettings).toHaveBeenCalledWith({ theme: 'dark' })
})
})