feat: apply season task deadlines to all open checklist entries

This commit is contained in:
fromme committed 2026-10-20 16:52:45 +02:00
1 parent 3fe510e64e
commit 300bb2058f
5 files changed
+81 -1

No files matched your search

+40
View File
@@ -6,6 +6,7 @@ namespace App\Tests\Entity;
use App\Entity\JobProfile;
use App\Entity\SeasonAssignment;
use App\Entity\SeasonAssignmentTask;
use App\Entity\Teamer;
use PHPUnit\Framework\TestCase;
@@ -100,4 +101,43 @@ class SeasonAssignmentTest extends TestCase
$this->assertSame('2027-04-30', $seasonAssignment->getDateTo()->format('Y-m-d'));
$this->assertSame('AGR', $seasonAssignment->getHotelCode());
}
public function testApplyingDeadlinesCopiesBothOverridesOntoOpenEntriesOnly(): void
{
$seasonAssignment = new SeasonAssignment();
$source = (new SeasonAssignmentTask())
->setDeadlineOverride1(new \DateTimeImmutable('2026-11-15'))
->setDeadlineOverride2(new \DateTimeImmutable('2026-11-30'));
$open = new SeasonAssignmentTask();
$done = (new SeasonAssignmentTask())
->setDone(true)
->setDeadlineOverride1(new \DateTimeImmutable('2026-10-01'));
$seasonAssignment->addTask($source)->addTask($open)->addTask($done);
$this->assertSame(1, $seasonAssignment->applyDeadlinesToOpenTasks($source));
$this->assertSame('2026-11-15', $open->getDeadlineOverride1()?->format('Y-m-d'));
$this->assertSame('2026-11-30', $open->getDeadlineOverride2()?->format('Y-m-d'));
$this->assertSame('2026-10-01', $done->getDeadlineOverride1()?->format('Y-m-d'));
$this->assertNull($done->getDeadlineOverride2());
}
/**
* Empty fields are applied as well: that is how the office resets every entry to its
* computed deadline in one go.
*/
public function testApplyingEmptyDeadlinesResetsTheOverrides(): void
{
$seasonAssignment = new SeasonAssignment();
$source = new SeasonAssignmentTask();
$other = (new SeasonAssignmentTask())
->setDeadlineOverride1(new \DateTimeImmutable('2026-11-15'))
->setDeadlineOverride2(new \DateTimeImmutable('2026-11-30'));
$seasonAssignment->addTask($source)->addTask($other);
$seasonAssignment->applyDeadlinesToOpenTasks($source);
$this->assertNull($other->getDeadlineOverride1());
$this->assertNull($other->getDeadlineOverride2());
}
}