v2.0.0-preview.2 - 增加单元和UI测试用例

This commit is contained in:
LINING-PC\lining
2025-12-17 18:09:55 +08:00
parent a59b5450dc
commit 017a7ba3b0
13 changed files with 1788 additions and 3 deletions
+171
View File
@@ -0,0 +1,171 @@
import { TaskListColumnConfig } from '@/models/configs/TaskListConfig'
/**
* 创建基础列配置
*/
export function createColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
key: 'name',
label: 'Task Name',
width: 200,
visible: true,
...overrides,
}
}
/**
* 创建名称列配置
*/
export function createNameColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
type: 'name',
key: 'name',
label: 'Name',
width: 200,
visible: true,
...overrides,
}
}
/**
* 创建前置任务列配置
*/
export function createPredecessorColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
type: 'predecessor',
key: 'predecessor',
label: 'Predecessor',
width: 120,
visible: true,
...overrides,
}
}
/**
* 创建负责人列配置
*/
export function createAssigneeColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
type: 'assignee',
key: 'assignee',
label: 'Assignee',
width: 120,
visible: true,
...overrides,
}
}
/**
* 创建开始日期列配置
*/
export function createStartDateColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
type: 'startDate',
key: 'startDate',
label: 'Start Date',
width: 110,
visible: true,
...overrides,
}
}
/**
* 创建结束日期列配置
*/
export function createEndDateColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
type: 'endDate',
key: 'endDate',
label: 'End Date',
width: 110,
visible: true,
...overrides,
}
}
/**
* 创建进度列配置
*/
export function createProgressColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
type: 'progress',
key: 'progress',
label: 'Progress',
width: 100,
visible: true,
...overrides,
}
}
/**
* 创建自定义列配置
*/
export function createCustomColumn(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
key: 'customField',
label: 'Custom Field',
width: 150,
visible: true,
...overrides,
}
}
/**
* 创建带格式化函数的列配置
*/
export function createColumnWithFormatter(
overrides: Partial<TaskListColumnConfig> = {}
): TaskListColumnConfig {
return {
key: 'formatted',
label: 'Formatted Column',
width: 150,
visible: true,
formatter: (task) => `Formatted: ${task.name}`,
...overrides,
}
}
/**
* 创建默认列配置列表
*/
export function createDefaultColumns(): TaskListColumnConfig[] {
return [
createNameColumn({ width: 200 }),
createPredecessorColumn({ width: 120 }),
createAssigneeColumn({ width: 120 }),
createStartDateColumn({ width: 110 }),
createEndDateColumn({ width: 110 }),
createProgressColumn({ width: 100 }),
]
}
/**
* 创建部分可见的列配置列表
*/
export function createPartialVisibleColumns(): TaskListColumnConfig[] {
return [
createNameColumn({ visible: true }),
createPredecessorColumn({ visible: false }),
createAssigneeColumn({ visible: true }),
createStartDateColumn({ visible: true }),
createEndDateColumn({ visible: false }),
createProgressColumn({ visible: true }),
]
}
+211
View File
@@ -0,0 +1,211 @@
import { Task } from '@/models/classes/Task'
/**
* 创建基础任务数据
*/
export function createTask(overrides: Partial<Task> = {}): Task {
return {
id: 1,
name: 'Test Task',
startDate: '2024-01-01',
endDate: '2024-01-10',
progress: 50,
...overrides,
}
}
/**
* 创建父任务数据
*/
export function createParentTask(overrides: Partial<Task> = {}): Task {
return {
id: 1,
name: 'Parent Task',
startDate: '2024-01-01',
endDate: '2024-01-31',
progress: 30,
isParent: true,
children: [],
collapsed: false,
...overrides,
}
}
/**
* 创建子任务数据
*/
export function createChildTask(
parentId: number,
overrides: Partial<Task> = {}
): Task {
return {
id: 2,
name: 'Child Task',
startDate: '2024-01-05',
endDate: '2024-01-15',
progress: 60,
parentId,
level: 1,
...overrides,
}
}
/**
* 创建里程碑任务
*/
export function createMilestone(overrides: Partial<Task> = {}): Task {
return {
id: 3,
name: 'Milestone',
startDate: '2024-01-15',
endDate: '2024-01-15',
type: 'milestone',
progress: 100,
...overrides,
}
}
/**
* 创建带前置任务的任务
*/
export function createTaskWithPredecessor(overrides: Partial<Task> = {}): Task {
return {
id: 4,
name: 'Task with Predecessor',
startDate: '2024-01-16',
endDate: '2024-01-20',
progress: 0,
predecessor: [3],
...overrides,
}
}
/**
* 创建正在计时的任务
*/
export function createTimerTask(overrides: Partial<Task> = {}): Task {
return {
id: 5,
name: 'Timer Task',
startDate: '2024-01-01',
endDate: '2024-01-10',
progress: 20,
isTimerRunning: true,
timerStartTime: Date.now() - 3600000, // 1小时前开始
timerElapsedTime: 7200000, // 已累计2小时
timerStartDesc: '开始任务',
...overrides,
}
}
/**
* 创建超时任务
*/
export function createOvertimeTask(overrides: Partial<Task> = {}): Task {
return {
id: 6,
name: 'Overtime Task',
startDate: '2024-01-01',
endDate: '2024-01-10',
progress: 80,
estimatedHours: 40,
actualHours: 50, // 超时10小时
...overrides,
}
}
/**
* 创建逾期任务
*/
export function createOverdueTask(overrides: Partial<Task> = {}): Task {
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
return {
id: 7,
name: 'Overdue Task',
startDate: '2024-01-01',
endDate: yesterday.toISOString().split('T')[0],
progress: 60,
...overrides,
}
}
/**
* 创建不可编辑任务
*/
export function createReadonlyTask(overrides: Partial<Task> = {}): Task {
return {
id: 8,
name: 'Readonly Task',
startDate: '2024-01-01',
endDate: '2024-01-10',
progress: 100,
isEditable: false,
...overrides,
}
}
/**
* 创建带自定义属性的任务
*/
export function createCustomTask(overrides: Partial<Task> = {}): Task {
return {
id: 9,
name: 'Custom Task',
startDate: '2024-01-01',
endDate: '2024-01-10',
progress: 50,
customField1: 'Custom Value 1',
customField2: 123,
customField3: true,
...overrides,
}
}
/**
* 创建任务树结构
*/
export function createTaskTree(): Task[] {
const parent = createParentTask({
id: 1,
name: 'Parent Task',
})
const child1 = createChildTask(1, {
id: 2,
name: 'Child Task 1',
level: 1,
})
const child2 = createChildTask(1, {
id: 3,
name: 'Child Task 2',
level: 1,
})
const grandchild = createChildTask(2, {
id: 4,
name: 'Grandchild Task',
parentId: 2,
level: 2,
})
parent.children = [child1, child2]
child1.children = [grandchild]
return [parent]
}
/**
* 创建扁平任务列表
*/
export function createFlatTaskList(count: number = 10): Task[] {
return Array.from({ length: count }, (_, index) => ({
id: index + 1,
name: `Task ${index + 1}`,
startDate: '2024-01-01',
endDate: '2024-01-10',
progress: Math.floor(Math.random() * 100),
}))
}