Skip to content

Commit 6877c23

Browse files
Make Waterline repair state filters mutually exclusive
1 parent f577358 commit 6877c23

3 files changed

Lines changed: 21 additions & 1 deletion

File tree

app/Support/ActionabilityContract.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,15 @@ private static function annotateEvidence(array $row): array
119119
*/
120120
private static function runActionability(array $payload): array
121121
{
122-
$canRepair = ($payload['can_repair'] ?? null) === true;
123122
$blockedReason = self::stringValue($payload['repair_blocked_reason'] ?? null);
124123
$statusBucket = self::stringValue($payload['status_bucket'] ?? null);
125124
$closedReason = self::stringValue($payload['closed_reason'] ?? null);
125+
$canRepair = ($payload['can_repair'] ?? null) === true
126+
|| (
127+
($payload['repair_attention'] ?? null) === true
128+
&& $blockedReason === null
129+
&& $statusBucket === 'running'
130+
);
126131

127132
$repairState = match (true) {
128133
$canRepair => 'repairable',

app/Support/ActionabilityVisibilityFilters.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ private static function applyRepairState(Builder $query, mixed $repairState): Bu
176176
}),
177177
'unknown' => $query
178178
->where('status_bucket', 'running')
179+
->where('repair_attention', false)
179180
->whereNull('repair_blocked_reason'),
180181
default => $query,
181182
};

tests/Feature/V2DashboardWorkflowListTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,13 @@ public function testV2RunningRepairStateFilterCanSelectUnknownActionability(): v
654654
Carbon::parse('2022-01-01 12:05:00'),
655655
Carbon::parse('2022-01-01 12:05:00'),
656656
);
657+
$repairable = $this->createRunningSummary(
658+
'repairable-repair-instance',
659+
'run-repairable-repair',
660+
Carbon::parse('2022-01-01 12:07:00'),
661+
Carbon::parse('2022-01-01 12:07:00'),
662+
repairAttention: true,
663+
);
657664
$this->createRunningSummary(
658665
'blocked-repair-instance',
659666
'run-blocked-repair',
@@ -669,6 +676,13 @@ public function testV2RunningRepairStateFilterCanSelectUnknownActionability(): v
669676
->assertJsonPath('data.0.id', $unknown->id)
670677
->assertJsonPath('data.0.actionability.repair_state', 'unknown')
671678
->assertJsonPath('visibility_filters.applied.repair_state', 'unknown');
679+
680+
$this->get('/waterline/api/flows/running?repair_state=repairable')
681+
->assertOk()
682+
->assertJsonCount(1, 'data')
683+
->assertJsonPath('data.0.id', $repairable->id)
684+
->assertJsonPath('data.0.actionability.repair_state', 'repairable')
685+
->assertJsonPath('visibility_filters.applied.repair_state', 'repairable');
672686
}
673687

674688
public function testV2SavedViewsCanBeUpdatedAndDeleted(): void

0 commit comments

Comments
 (0)