690615:1449 237 #01
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
// File: lib/api/__tests__/workflows.test.ts
|
||||
// Change Log:
|
||||
// - 2026-06-14: สร้างใหม่สำหรับ Phase 3 Coverage
|
||||
|
||||
import { describe, it, expect, beforeEach } from 'vitest';
|
||||
import { workflowApi } from '../workflows';
|
||||
|
||||
describe('workflowApi', () => {
|
||||
beforeEach(() => {
|
||||
// Reset mock data before each test
|
||||
// Note: This is a simplified reset since the mock is in the same file
|
||||
});
|
||||
|
||||
describe('getWorkflows', () => {
|
||||
it('ควร return array of workflows', async () => {
|
||||
const workflows = await workflowApi.getWorkflows();
|
||||
|
||||
expect(Array.isArray(workflows)).toBe(true);
|
||||
expect(workflows.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('ควร return workflows ที่มี publicId, workflowName, workflowType', async () => {
|
||||
const workflows = await workflowApi.getWorkflows();
|
||||
|
||||
expect(workflows[0]).toHaveProperty('publicId');
|
||||
expect(workflows[0]).toHaveProperty('workflowName');
|
||||
expect(workflows[0]).toHaveProperty('workflowType');
|
||||
});
|
||||
|
||||
it('ควร return workflows ที่มี dslDefinition, version, isActive', async () => {
|
||||
const workflows = await workflowApi.getWorkflows();
|
||||
|
||||
expect(workflows[0]).toHaveProperty('dslDefinition');
|
||||
expect(workflows[0]).toHaveProperty('version');
|
||||
expect(workflows[0]).toHaveProperty('isActive');
|
||||
});
|
||||
});
|
||||
|
||||
describe('getWorkflow', () => {
|
||||
it('ควร return workflow เมื่อ id ถูกต้อง', async () => {
|
||||
const workflow = await workflowApi.getWorkflow('wf-001');
|
||||
|
||||
expect(workflow).toBeDefined();
|
||||
expect(workflow?.publicId).toBe('wf-001');
|
||||
});
|
||||
|
||||
it('ควร return undefined เมื่อ id ไม่ถูกต้อง', async () => {
|
||||
const workflow = await workflowApi.getWorkflow('non-existent');
|
||||
|
||||
expect(workflow).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('createWorkflow', () => {
|
||||
it('ควร create workflow ใหม่และ return workflow object', async () => {
|
||||
const data = {
|
||||
workflowName: 'Test Workflow',
|
||||
description: 'Test description',
|
||||
workflowType: 'RFA',
|
||||
dslDefinition: 'name: Test\nsteps: []',
|
||||
};
|
||||
|
||||
const newWorkflow = await workflowApi.createWorkflow(data);
|
||||
|
||||
expect(newWorkflow).toHaveProperty('publicId');
|
||||
expect(newWorkflow.workflowName).toBe('Test Workflow');
|
||||
expect(newWorkflow.version).toBe(1);
|
||||
expect(newWorkflow.isActive).toBe(true);
|
||||
});
|
||||
|
||||
it('ควร assign workflowId ใหม่ให้ workflow', async () => {
|
||||
const data = {
|
||||
workflowName: 'New Workflow',
|
||||
description: 'New description',
|
||||
workflowType: 'CORRESPONDENCE',
|
||||
dslDefinition: 'name: New\nsteps: []',
|
||||
};
|
||||
|
||||
const newWorkflow = await workflowApi.createWorkflow(data);
|
||||
|
||||
expect(newWorkflow.workflowId).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('updateWorkflow', () => {
|
||||
it('ควร update workflow และ return updated object', async () => {
|
||||
const data = {
|
||||
workflowName: 'Updated Workflow',
|
||||
description: 'Updated description',
|
||||
};
|
||||
|
||||
const updatedWorkflow = await workflowApi.updateWorkflow('wf-001', data);
|
||||
|
||||
expect(updatedWorkflow.workflowName).toBe('Updated Workflow');
|
||||
expect(updatedWorkflow.description).toBe('Updated description');
|
||||
});
|
||||
|
||||
it('ควร throw error เมื่อ workflow ไม่พบ', async () => {
|
||||
const data = { workflowName: 'Test' };
|
||||
|
||||
await expect(workflowApi.updateWorkflow('non-existent', data)).rejects.toThrow('Workflow not found');
|
||||
});
|
||||
});
|
||||
|
||||
describe('validateDSL', () => {
|
||||
it('ควร return valid=true เมื่อ DSL ถูกต้อง', async () => {
|
||||
const dsl = 'name: Test Workflow\nsteps:\n - name: Step 1\n type: REVIEW';
|
||||
|
||||
const result = await workflowApi.validateDSL(dsl);
|
||||
|
||||
expect(result.valid).toBe(true);
|
||||
expect(result.errors).toEqual([]);
|
||||
});
|
||||
|
||||
it('ควร return valid=false เมื่อ DSL ไม่มี name', async () => {
|
||||
const dsl = 'invalid dsl without name or steps';
|
||||
|
||||
const result = await workflowApi.validateDSL(dsl);
|
||||
|
||||
expect(result.valid).toBe(false);
|
||||
expect(result.errors.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('ควร return valid=false เมื่อ DSL ไม่มี steps', async () => {
|
||||
const dsl = 'name: Test Workflow';
|
||||
|
||||
const result = await workflowApi.validateDSL(dsl);
|
||||
|
||||
expect(result.valid).toBe(false);
|
||||
expect(result.errors.length).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user