Files
ss-tools/frontend/src/lib/stores/__tests__/taskDrawer.test.js
2026-02-19 16:05:59 +03:00

49 lines
1.6 KiB
JavaScript

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();
});
});