v2.0.0-preview.2 - 增加单元和UI测试用例
This commit is contained in:
Vendored
+171
@@ -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 }),
|
||||
]
|
||||
}
|
||||
Vendored
+211
@@ -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),
|
||||
}))
|
||||
}
|
||||
Reference in New Issue
Block a user