44 lines
1.3 KiB
PHP
44 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\OperationRun;
|
|
use App\Support\OperationRunLinks;
|
|
use Illuminate\Support\Facades\File;
|
|
|
|
it('routes all OperationRun view links through OperationRunLinks', function (): void {
|
|
$files = File::allFiles(app_path());
|
|
|
|
$violations = [];
|
|
|
|
foreach ($files as $file) {
|
|
$path = $file->getRealPath();
|
|
if (! is_string($path)) {
|
|
continue;
|
|
}
|
|
|
|
// OperationRunLinks is the canonical wrapper.
|
|
if (str_ends_with($path, '/Support/OperationRunLinks.php')) {
|
|
continue;
|
|
}
|
|
|
|
$contents = File::get($path);
|
|
|
|
if (preg_match("/\\bOperationRunResource::getUrl\(\\s*'view'/", $contents) === 1
|
|
|| preg_match("/route\(\s*'filament\.admin\.resources\.operations\.view'/", $contents) === 1) {
|
|
$violations[] = $path;
|
|
}
|
|
}
|
|
|
|
expect($violations)->toBeEmpty();
|
|
})->group('ops-ux');
|
|
|
|
it('resolves tenantless operation run links to the canonical admin.operations.view route', function (): void {
|
|
$run = OperationRun::factory()->create();
|
|
|
|
$expectedUrl = route('admin.operations.view', ['run' => (int) $run->getKey()]);
|
|
|
|
expect(OperationRunLinks::tenantlessView($run))->toBe($expectedUrl);
|
|
expect(OperationRunLinks::tenantlessView((int) $run->getKey()))->toBe($expectedUrl);
|
|
})->group('ops-ux');
|