mirror of
https://github.com/immich-app/immich.git
synced 2025-12-09 08:53:46 +09:00
81 lines
2.1 KiB
TypeScript
81 lines
2.1 KiB
TypeScript
import SideBarSection from '$lib/components/shared-components/side-bar/side-bar-section.svelte';
|
|
import { sidebarStore } from '$lib/stores/sidebar.svelte';
|
|
import { render, screen } from '@testing-library/svelte';
|
|
import { vi } from 'vitest';
|
|
|
|
const mocks = vi.hoisted(() => {
|
|
return {
|
|
mobileDevice: {
|
|
isFullSidebar: false,
|
|
},
|
|
};
|
|
});
|
|
|
|
vi.mock('$lib/stores/mobile-device.svelte', () => ({
|
|
mobileDevice: mocks.mobileDevice,
|
|
}));
|
|
|
|
vi.mock('$lib/stores/sidebar.svelte', () => ({
|
|
sidebarStore: {
|
|
isOpen: false,
|
|
reset: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
describe('SideBarSection component', () => {
|
|
beforeEach(() => {
|
|
vi.resetAllMocks();
|
|
mocks.mobileDevice.isFullSidebar = false;
|
|
sidebarStore.isOpen = false;
|
|
});
|
|
|
|
it.each`
|
|
isFullSidebar | isSidebarOpen | expectedInert
|
|
${false} | ${false} | ${true}
|
|
${false} | ${true} | ${false}
|
|
${true} | ${false} | ${false}
|
|
${true} | ${true} | ${false}
|
|
`(
|
|
'inert is $expectedInert when isFullSidebar=$isFullSidebar and isSidebarOpen=$isSidebarOpen',
|
|
({ isFullSidebar, isSidebarOpen, expectedInert }) => {
|
|
// setup
|
|
mocks.mobileDevice.isFullSidebar = isFullSidebar;
|
|
sidebarStore.isOpen = isSidebarOpen;
|
|
|
|
// when
|
|
render(SideBarSection);
|
|
const parent = screen.getByTestId('sidebar-parent');
|
|
|
|
// then
|
|
expect(parent.inert).toBe(expectedInert);
|
|
},
|
|
);
|
|
|
|
it('should set width when sidebar is expanded', () => {
|
|
// setup
|
|
mocks.mobileDevice.isFullSidebar = false;
|
|
sidebarStore.isOpen = true;
|
|
|
|
// when
|
|
render(SideBarSection);
|
|
const parent = screen.getByTestId('sidebar-parent');
|
|
|
|
// then
|
|
expect(parent.classList).toContain('sidebar:w-[16rem]'); // sets the initial width for page load
|
|
expect(parent.classList).toContain('w-[min(100vw,16rem)]');
|
|
expect(parent.classList).toContain('shadow-2xl');
|
|
});
|
|
|
|
it('should close the sidebar if it is open on initial render', () => {
|
|
// setup
|
|
mocks.mobileDevice.isFullSidebar = false;
|
|
sidebarStore.isOpen = true;
|
|
|
|
// when
|
|
render(SideBarSection);
|
|
|
|
// then
|
|
expect(sidebarStore.reset).toHaveBeenCalled();
|
|
});
|
|
});
|