From 8a87de1462b1585734351c4bb664ac3c98ddd843 Mon Sep 17 00:00:00 2001 From: 406-mot-acceptable Date: Tue, 21 Apr 2026 10:04:19 +0200 Subject: [PATCH] Set incident status to fixed when incident update status is fixed --- src/Actions/Update/CreateUpdate.php | 1 + .../Unit/Actions/Update/CreateUpdateTest.php | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/Actions/Update/CreateUpdate.php b/src/Actions/Update/CreateUpdate.php index b3b5fd55..a723d81d 100644 --- a/src/Actions/Update/CreateUpdate.php +++ b/src/Actions/Update/CreateUpdate.php @@ -22,6 +22,7 @@ public function handle(Incident|Schedule $resource, CreateIncidentUpdateRequestD $resource->updates()->save($update); if ($resource instanceof Incident && $data->status === IncidentStatusEnum::fixed) { + $resource->update(['status' => IncidentStatusEnum::fixed]); $this->updateComponentsToOperational($resource); } diff --git a/tests/Unit/Actions/Update/CreateUpdateTest.php b/tests/Unit/Actions/Update/CreateUpdateTest.php index cf9e8e62..121fcc80 100644 --- a/tests/Unit/Actions/Update/CreateUpdateTest.php +++ b/tests/Unit/Actions/Update/CreateUpdateTest.php @@ -41,6 +41,38 @@ ->latestStatus->toEqual(IncidentStatusEnum::identified); }); +it('transitions parent incident status to fixed when incident update status is fixed', function () { + $incident = Incident::factory()->create([ + 'status' => IncidentStatusEnum::investigating, + ]); + + $data = CreateIncidentUpdateRequestData::from([ + 'message' => 'This issue has been fixed.', + 'status' => IncidentStatusEnum::fixed, + ]); + + app(CreateUpdate::class)->handle($incident, $data); + + expect($incident->fresh()) + ->status->toEqual(IncidentStatusEnum::fixed); +}); + +it('does not change parent incident status when incident update status is not fixed', function () { + $incident = Incident::factory()->create([ + 'status' => IncidentStatusEnum::investigating, + ]); + + $data = CreateIncidentUpdateRequestData::from([ + 'message' => 'Still looking into this.', + 'status' => IncidentStatusEnum::identified, + ]); + + app(CreateUpdate::class)->handle($incident, $data); + + expect($incident->fresh()) + ->status->toEqual(IncidentStatusEnum::investigating); +}); + it('sets linked component status to operational when incident update status is fixed', function () { $incident = Incident::factory()->create([ 'status' => IncidentStatusEnum::investigating,