import { useToolGroup } from '@/composables/useToolGroup'; import { ref } from 'vue'; import { ViewerTool } from '@/types/viewer-tool'; describe('useToolGroup', () => { const createTool = (_name: string): ViewerTool => ({ isActive: ref(false), }); it('should only allow one tool to be active at a time', () => { const tool1 = createTool('Tool1'); const tool2 = createTool('Tool2'); const tool3 = createTool('Tool3'); const { activeTool, activeIndex, toggleTool } = useToolGroup( tool1, tool2, tool3, ); expect(activeTool.value).toBeNull(); expect(activeIndex.value).toBeNull(); toggleTool(tool1); expect(activeTool.value).toBe(tool1); expect(activeIndex.value).toBe(0); expect(tool1.isActive.value).toBe(true); expect(tool2.isActive.value).toBe(false); expect(tool3.isActive.value).toBe(false); toggleTool(tool2); expect(activeTool.value).toBe(tool2); expect(activeIndex.value).toBe(1); expect(tool1.isActive.value).toBe(false); expect(tool2.isActive.value).toBe(true); expect(tool3.isActive.value).toBe(false); toggleTool(tool2); expect(activeTool.value).toBeNull(); expect(activeIndex.value).toBeNull(); expect(tool2.isActive.value).toBe(false); toggleTool(tool3); expect(activeTool.value).toBe(tool3); expect(activeIndex.value).toBe(2); }); });