assertTrue(TaskAssignment::isValidStatus('zugewiesen')); $this->assertTrue(TaskAssignment::isValidStatus('gestartet')); $this->assertTrue(TaskAssignment::isValidStatus('abgeschlossen')); $this->assertTrue(TaskAssignment::isValidStatus('abgebrochen')); } public function testUnknownStatusesAreRejected(): void { $this->assertFalse(TaskAssignment::isValidStatus('')); $this->assertFalse(TaskAssignment::isValidStatus('done')); $this->assertFalse(TaskAssignment::isValidStatus('in-progress')); $this->assertFalse(TaskAssignment::isValidStatus('ZUGEWIESEN')); } public function testAuditSnapshotIncludesStatus(): void { $a = new TaskAssignment(1, 2, 3, 1.5, TaskAssignment::STATUS_GESTARTET); $snapshot = $a->toAuditSnapshot(); $this->assertSame(1, $snapshot['id']); $this->assertSame(2, $snapshot['task_id']); $this->assertSame(3, $snapshot['sprint_worker_id']); $this->assertSame(1.5, $snapshot['days']); $this->assertSame(TaskAssignment::STATUS_GESTARTET, $snapshot['status']); } public function testStatusesListIsCanonicalOrder(): void { // Workflow order: assigned → started → done | cancelled. Tests both // the constant order and the count, so adding a new status doesn't // silently slot in the wrong spot. $this->assertSame( [ TaskAssignment::STATUS_ZUGEWIESEN, TaskAssignment::STATUS_GESTARTET, TaskAssignment::STATUS_ABGESCHLOSSEN, TaskAssignment::STATUS_ABGEBROCHEN, ], TaskAssignment::STATUSES, ); } }