mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-06-01 19:01:37 +00:00
Multiple TaskFactory.create(1, {id: N, ...}, false) calls for the same
project were all defaulting to index=1 (from {increment} with count=1),
which collides on the newly added UNIQUE(project_id, index) constraint.
Mirror the numeric id override to index so each row stays unique and
matches the id == index convention used by raw seedTasks helpers.
Fixes the e2e playwright seed failures in subtask-duplicates, list/table
filter/search, kanban filter/search, and overview specs.
35 lines
883 B
TypeScript
35 lines
883 B
TypeScript
import {faker} from '@faker-js/faker'
|
|
import {Factory} from '../support/factory'
|
|
|
|
export class TaskFactory extends Factory {
|
|
static table = 'tasks'
|
|
|
|
static factory() {
|
|
const now = new Date()
|
|
|
|
return {
|
|
id: '{increment}',
|
|
title: faker.lorem.words(3),
|
|
done: false,
|
|
project_id: 1,
|
|
created_by_id: 1,
|
|
index: '{increment}',
|
|
created: now.toISOString(),
|
|
updated: now.toISOString(),
|
|
}
|
|
}
|
|
|
|
// Mirror numeric `id` overrides onto `index` so sequential single-row
|
|
// creates don't collide on UNIQUE(project_id, index). Matches the
|
|
// id == index convention used by raw seedTasks helpers.
|
|
static async create(count = 1, override: Record<string, unknown> = {}, truncate = true) {
|
|
if (
|
|
typeof override.id === 'number' &&
|
|
!('index' in override)
|
|
) {
|
|
override = {...override, index: override.id}
|
|
}
|
|
return super.create(count, override, truncate)
|
|
}
|
|
}
|