2024-07-08 03:25:18 -07:00
|
|
|
import { useCanvasNode } from '@/composables/useCanvasNode';
|
|
|
|
import { inject, ref } from 'vue';
|
2024-07-10 01:36:00 -07:00
|
|
|
import type { CanvasNodeInjectionData } from '../types';
|
2024-07-08 03:25:18 -07:00
|
|
|
|
|
|
|
vi.mock('vue', async () => {
|
|
|
|
const actual = await vi.importActual('vue');
|
|
|
|
return {
|
|
|
|
...actual,
|
|
|
|
inject: vi.fn(),
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('useCanvasNode', () => {
|
|
|
|
it('should return default values when node is not provided', () => {
|
|
|
|
const result = useCanvasNode();
|
|
|
|
|
|
|
|
expect(result.label.value).toBe('');
|
|
|
|
expect(result.inputs.value).toEqual([]);
|
|
|
|
expect(result.outputs.value).toEqual([]);
|
|
|
|
expect(result.connections.value).toEqual({ input: {}, output: {} });
|
|
|
|
expect(result.isDisabled.value).toBe(false);
|
|
|
|
expect(result.isSelected.value).toBeUndefined();
|
|
|
|
expect(result.pinnedDataCount.value).toBe(0);
|
|
|
|
expect(result.hasPinnedData.value).toBe(false);
|
|
|
|
expect(result.runDataCount.value).toBe(0);
|
|
|
|
expect(result.hasRunData.value).toBe(false);
|
|
|
|
expect(result.issues.value).toEqual([]);
|
|
|
|
expect(result.hasIssues.value).toBe(false);
|
|
|
|
expect(result.executionStatus.value).toBeUndefined();
|
|
|
|
expect(result.executionWaiting.value).toBeUndefined();
|
2024-07-10 01:36:00 -07:00
|
|
|
expect(result.executionRunning.value).toBe(false);
|
2024-07-08 03:25:18 -07:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should return node data when node is provided', () => {
|
|
|
|
const node = {
|
2024-07-10 01:36:00 -07:00
|
|
|
data: ref({
|
|
|
|
id: 'node1',
|
|
|
|
type: 'nodeType1',
|
|
|
|
typeVersion: 1,
|
|
|
|
disabled: true,
|
|
|
|
inputs: [{ type: 'main', index: 0 }],
|
|
|
|
outputs: [{ type: 'main', index: 0 }],
|
|
|
|
connections: { input: { '0': [] }, output: {} },
|
|
|
|
issues: { items: ['issue1'], visible: true },
|
|
|
|
execution: { status: 'running', waiting: 'waiting', running: true },
|
|
|
|
runData: { count: 1, visible: true },
|
|
|
|
pinnedData: { count: 1, visible: true },
|
|
|
|
renderType: 'default',
|
|
|
|
}),
|
|
|
|
id: ref('1'),
|
2024-07-08 03:25:18 -07:00
|
|
|
label: ref('Node 1'),
|
|
|
|
selected: ref(true),
|
2024-07-10 01:36:00 -07:00
|
|
|
} satisfies Partial<CanvasNodeInjectionData>;
|
2024-07-08 03:25:18 -07:00
|
|
|
|
|
|
|
vi.mocked(inject).mockReturnValue(node);
|
|
|
|
|
|
|
|
const result = useCanvasNode();
|
|
|
|
|
|
|
|
expect(result.label.value).toBe('Node 1');
|
2024-07-10 01:36:00 -07:00
|
|
|
expect(result.inputs.value).toEqual([{ type: 'main', index: 0 }]);
|
|
|
|
expect(result.outputs.value).toEqual([{ type: 'main', index: 0 }]);
|
|
|
|
expect(result.connections.value).toEqual({ input: { '0': [] }, output: {} });
|
2024-07-08 03:25:18 -07:00
|
|
|
expect(result.isDisabled.value).toBe(true);
|
|
|
|
expect(result.isSelected.value).toBe(true);
|
|
|
|
expect(result.pinnedDataCount.value).toBe(1);
|
|
|
|
expect(result.hasPinnedData.value).toBe(true);
|
|
|
|
expect(result.runDataCount.value).toBe(1);
|
|
|
|
expect(result.hasRunData.value).toBe(true);
|
|
|
|
expect(result.issues.value).toEqual(['issue1']);
|
|
|
|
expect(result.hasIssues.value).toBe(true);
|
|
|
|
expect(result.executionStatus.value).toBe('running');
|
2024-07-10 01:36:00 -07:00
|
|
|
expect(result.executionWaiting.value).toBe('waiting');
|
|
|
|
expect(result.executionRunning.value).toBe(true);
|
2024-07-08 03:25:18 -07:00
|
|
|
});
|
|
|
|
});
|