## Summary - add tenant triage review-state persistence, fingerprinting, resolver logic, service layer, and migration for current affected-set tracking - surface review-state and affected-set progress across tenant registry, tenant dashboard arrival continuity, and workspace overview - extend RBAC, audit/badge support, specs, and test coverage for portfolio triage review-state workflows - suppress expected hidden-page background transport failures in the global unhandled rejection logger while keeping visible-page failures logged ## Validation - targeted Pest coverage added for tenant registry, workspace overview, arrival context, RBAC authorization, badges, fingerprinting, resolver behavior, and logger asset behavior - code formatted with `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` ## Notes - full suite was not re-run in this final step - branch includes the spec artifacts under `specs/189-portfolio-triage-review-state/` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #220
31 lines
1.4 KiB
PHP
31 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\TenantTriageReview;
|
|
use App\Support\Badges\BadgeCatalog;
|
|
use App\Support\Badges\BadgeDomain;
|
|
|
|
it('maps triage review states to centralized badge semantics', function (): void {
|
|
$notReviewed = BadgeCatalog::spec(BadgeDomain::TenantTriageReviewState, TenantTriageReview::DERIVED_STATE_NOT_REVIEWED);
|
|
$reviewed = BadgeCatalog::spec(BadgeDomain::TenantTriageReviewState, TenantTriageReview::STATE_REVIEWED);
|
|
$followUpNeeded = BadgeCatalog::spec(BadgeDomain::TenantTriageReviewState, TenantTriageReview::STATE_FOLLOW_UP_NEEDED);
|
|
$changedSinceReview = BadgeCatalog::spec(BadgeDomain::TenantTriageReviewState, TenantTriageReview::DERIVED_STATE_CHANGED_SINCE_REVIEW);
|
|
|
|
expect($notReviewed->label)->toBe('Not reviewed')
|
|
->and($notReviewed->color)->toBe('gray')
|
|
->and($reviewed->label)->toBe('Reviewed')
|
|
->and($reviewed->color)->toBe('success')
|
|
->and($followUpNeeded->label)->toBe('Follow-up needed')
|
|
->and($followUpNeeded->color)->toBe('danger')
|
|
->and($changedSinceReview->label)->toBe('Changed since review')
|
|
->and($changedSinceReview->color)->toBe('warning');
|
|
});
|
|
|
|
it('falls back to the unknown badge semantics for invalid review states', function (): void {
|
|
$unknown = BadgeCatalog::spec(BadgeDomain::TenantTriageReviewState, 'invalid_state');
|
|
|
|
expect($unknown->label)->toBe('Unknown')
|
|
->and($unknown->color)->toBe('gray');
|
|
});
|