import { useMcadSelectTool } from '@/tools/mcad-select-tool'; import { storeToRefs } from 'pinia'; import { useMcadStore } from '@/stores/mcad.store'; import { McadObjectInteractionFaker } from '@test/fakers/mcad-object-interaction.faker'; import { InteractionType } from '@3cr/types-ts'; import { flushPromises } from '@vue/test-utils'; import { DataOverlayMcadFaker } from '@test/fakers/data-overlay-mcad.faker'; describe('mcad select tool', () => { const { event: mcadEvent } = storeToRefs(useMcadStore()); it('should select via 3cr event', async () => { const mcadSelectTool = useMcadSelectTool(); mcadSelectTool.isActive.value = true; mcadEvent.value = McadObjectInteractionFaker.randomRaw( InteractionType.POINTER_UP, ); await flushPromises(); expect(mcadSelectTool.selected.value).not.toBe(null); }); it('should select via 3cr event', async () => { const mcadSelectTool = useMcadSelectTool(); mcadSelectTool.isActive.value = true; mcadEvent.value = McadObjectInteractionFaker.randomRaw( InteractionType.NONE, ); await flushPromises(); expect(mcadSelectTool.selected.value).toBe(null); }); it('should select programmatically', async () => { const mcadSelectTool = useMcadSelectTool(); mcadSelectTool.isActive.value = true; mcadSelectTool.selected.value = DataOverlayMcadFaker.random(); await flushPromises(); expect(mcadSelectTool.selected.value).not.toBe(null); }); it('should check if selected (not)', async () => { const mcadSelectTool = useMcadSelectTool(); expect( mcadSelectTool.isSelected(DataOverlayMcadFaker.random()), ).toBeFalsy(); }); it('should toggle selected', async () => { const mcadSelectTool = useMcadSelectTool(); mcadSelectTool.toggle(DataOverlayMcadFaker.random()); expect(mcadSelectTool.selected.value).not.toBe(null); }); it('should toggle selected', async () => { const mcadSelectTool = useMcadSelectTool(); const select = DataOverlayMcadFaker.random(); mcadSelectTool.toggle(select); expect(mcadSelectTool.selected.value).not.toBe(null); mcadSelectTool.toggle(select); expect(mcadSelectTool.selected.value).toBe(null); }); });