create([ 'tenant_id' => (int) $tenant->getKey(), ]); $run = OperationRun::factory()->create([ 'workspace_id' => (int) $tenant->workspace_id, 'tenant_id' => (int) $tenant->getKey(), 'type' => 'restore.execute', 'context' => [ 'restore_run_id' => (int) $restoreRun->getKey(), ], ]); $expectedUrl = OperationRunLinks::related($run->loadMissing('tenant'), $tenant)['Restore Run'] ?? null; $response = $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get(route('admin.operations.view', ['run' => (int) $run->getKey()])) ->assertOk() ->assertSee('Open') ->assertSee('Restore Run'); $this->assertIsString($expectedUrl); $response->assertSee((string) $expectedUrl, false); } public function test_shows_only_generic_links_for_tenantless_runs_on_canonical_detail(): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $run = OperationRun::factory()->create([ 'workspace_id' => (int) $tenant->workspace_id, 'tenant_id' => null, 'type' => 'restore.execute', 'context' => [ 'restore_run_id' => 999, ], ]); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get(route('admin.operations.view', ['run' => (int) $run->getKey()])) ->assertOk() ->assertSee('Operations') ->assertSee(route('admin.operations.index'), false) ->assertDontSee('Restore Run'); } public function test_does_not_show_legacy_admin_details_cta_and_keeps_canonical_view_run_label(): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $run = OperationRun::factory()->create([ 'workspace_id' => (int) $tenant->workspace_id, 'tenant_id' => (int) $tenant->getKey(), 'type' => 'policy.sync', ]); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get(route('admin.operations.view', ['run' => (int) $run->getKey()])) ->assertOk() ->assertDontSee('Admin details') ->assertDontSee('/admin/t/'.$tenant->external_id.'/operations/r/'.$run->getKey(), false); Filament::setTenant($tenant, true); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get(route('admin.operations.index')) ->assertOk() ->assertSee('View run'); } }