import { storeToRefs } from 'pinia'; import { useSaveStore } from '@/stores/save.store'; import { flushPromises } from '@vue/test-utils'; import { SaveState } from '@3cr/viewer-types-ts'; describe('save store', () => { it('should show saving state', () => { const { state, icon, text } = storeToRefs(useSaveStore()); state.value = SaveState.SAVING; expect(icon.value).toBe('autorenew'); expect(text.value).toBe('enums.saveState.saving'); }); it('should show saved to cloud state', () => { const { state, icon, text } = storeToRefs(useSaveStore()); state.value = SaveState.SAVED_CLOUD; expect(icon.value).toBe('cloud_done'); expect(text.value).toBe('enums.saveState.savedCloud'); }); it('should show saved temporarily state', () => { const { state, icon, text } = storeToRefs(useSaveStore()); state.value = SaveState.SAVED_TEMPORARY; expect(icon.value).toBe('sync_saved_locally'); expect(text.value).toBe('enums.saveState.savedTemporary'); }); it('should show unsaved state', () => { const { state, icon, text } = storeToRefs(useSaveStore()); state.value = SaveState.UNSAVED; expect(icon.value).toBe('warning'); expect(text.value).toBe('enums.saveState.unsaved'); }); it('should show error state', () => { const { state, icon, text } = storeToRefs(useSaveStore()); state.value = SaveState.ERROR; expect(icon.value).toBe('error'); expect(text.value).toBe('enums.saveState.error'); }); it('should show text for timeout', async () => { vi.useFakeTimers(); const { state, showText } = storeToRefs(useSaveStore()); state.value = SaveState.UNSAVED; await flushPromises(); expect(showText.value).toBeTruthy(); vi.advanceTimersByTime(5001); expect(showText.value).toBeFalsy(); }); });