import { describe, it, expect, beforeEach, vi } from 'vitest'; import { get } from 'svelte/store'; import { taskDrawerStore, openDrawerForTask, closeDrawer, updateResourceTask } from '../taskDrawer.js'; describe('taskDrawerStore', () => { beforeEach(() => { taskDrawerStore.set({ isOpen: false, activeTaskId: null, resourceTaskMap: {} }); }); it('should open drawer for a specific task', () => { openDrawerForTask('task-123'); const state = get(taskDrawerStore); expect(state.isOpen).toBe(true); expect(state.activeTaskId).toBe('task-123'); }); it('should close drawer and clear active task', () => { openDrawerForTask('task-123'); closeDrawer(); const state = get(taskDrawerStore); expect(state.isOpen).toBe(false); expect(state.activeTaskId).toBe(null); }); it('should update resource task mapping for running task', () => { updateResourceTask('dash-1', 'task-1', 'RUNNING'); const state = get(taskDrawerStore); expect(state.resourceTaskMap['dash-1']).toEqual({ taskId: 'task-1', status: 'RUNNING' }); }); it('should remove mapping when task completes (SUCCESS)', () => { updateResourceTask('dash-1', 'task-1', 'RUNNING'); updateResourceTask('dash-1', 'task-1', 'SUCCESS'); const state = get(taskDrawerStore); expect(state.resourceTaskMap['dash-1']).toBeUndefined(); }); it('should remove mapping when task fails (ERROR)', () => { updateResourceTask('dash-1', 'task-1', 'RUNNING'); updateResourceTask('dash-1', 'task-1', 'ERROR'); const state = get(taskDrawerStore); expect(state.resourceTaskMap['dash-1']).toBeUndefined(); }); });