import { useMcadStore } from '@/stores/mcad.store'; import { createPinia, setActivePinia, storeToRefs } from 'pinia'; import { inflateInitialMcadObjectState } from '@/functions/modelHelper'; import { McadObjectInteractionFaker } from '@test/fakers/mcad-object-interaction.faker'; import { InteractionType } from '@3cr/types-ts'; import { DataOverlayMcadFaker } from '@test/fakers/data-overlay-mcad.faker'; import { McadData } from '@3cr/types-ts/types/McadData'; describe('mcad store', () => { beforeEach(() => { setActivePinia(createPinia()); }); it('should have defaults', () => { const { state, event, mcads, mcadEvent } = storeToRefs(useMcadStore()); expect(state.value).toEqual(inflateInitialMcadObjectState()); expect(event.value).toBe(null); expect(mcads.value).toEqual([]); expect(mcadEvent.value).toBe(null); }); it('should handle mcad event', () => { const { event, mcadEvent } = storeToRefs(useMcadStore()); event.value = McadObjectInteractionFaker.randomRaw( InteractionType.HOVER_START, ); expect(mcadEvent.value).not.toBe(null); }); it('should add mcad item', () => { const { state, mcads } = storeToRefs(useMcadStore()); const x = DataOverlayMcadFaker.randomRaw(); state.value.Models.Models.push(x as McadData); expect(mcads.value).not.toBe(null); }); it('should add mcad item with children', () => { const { state, childKeys } = storeToRefs(useMcadStore()); const x = DataOverlayMcadFaker.randomRaw(); x.Children = ['123']; state.value.Models.Models.push(x as McadData); expect(childKeys.value).toContain('123'); }); it('should set Initial MCAD state', async () => { const store = useMcadStore(); const { state } = storeToRefs(store); const x = DataOverlayMcadFaker.randomRaw(); x.Children = ['123']; state.value.Models.Models.push(x as McadData); const stateString = JSON.stringify(state.value); const y = DataOverlayMcadFaker.randomRaw(); y.Children = ['123123123']; state.value.Models.Models.push(y as McadData); store.setInitialMcadState(stateString); expect(JSON.stringify(state.value)).toEqual(stateString); }); it('should set MCAD state', async () => { const store = useMcadStore(); const { state } = storeToRefs(store); const x = DataOverlayMcadFaker.randomRaw(); x.Children = ['123']; state.value.Models.Models.push(x as McadData); const stateModelsString = JSON.stringify(state.value.Models); const y = DataOverlayMcadFaker.randomRaw(); y.Children = ['123123123']; state.value.Models.Models.push(y as McadData); store.setMcadState(stateModelsString); expect(JSON.stringify(state.value.Models)).toEqual(stateModelsString); }); it('should set MCAD Event', async () => { const store = useMcadStore(); const { event } = storeToRefs(store); expect(event.value).toEqual(null); const y = McadObjectInteractionFaker.randomRaw(InteractionType.NONE); store.setMcadEvent(JSON.stringify(y)); expect(event.value).toEqual(y); }); });