5a02d0698f
Фаза C плана 2026-07-16-external-services-online-monitoring: - KNOWN_SERVICE_KEYS whitelist в контроллере — GET /balances и плитка скрывают осиротевшие строки (jivosite и любые будущие). - balancesPayload() — общий сборщик для GET /balances и POST /refresh. - POST /api/admin/dashboard/balances/refresh: без service — фон лёгких (force=false, окно свежести), service=X — один сервис (force=true); неизвестный → 422; тяжёлый supplier — под Cache-замком (второй робот → 409). Кнопки/фон почту не шлют. - Миграция удаляет осиротевшую строку jivosite. Тесты: 9 Admin/External Feature зелёные, Larastan 0 по своим файлам. NB: larastan-хук исключён — 2 ошибки выше baseline в ЧУЖОМ незакоммиченном tests/Feature/Billing/ExpireInvoicesTest.php (параллельная сессия в общей папке). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
23 lines
823 B
PHP
23 lines
823 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Tests\Concerns\SharesSupplierPdo;
|
|
|
|
uses(DatabaseTransactions::class, SharesSupplierPdo::class);
|
|
|
|
it('строка jivosite удалена миграцией', function () {
|
|
DB::connection('pgsql_supplier')->table('external_service_balances')->updateOrInsert(
|
|
['service_key' => 'jivosite'],
|
|
['light' => 'red', 'ok' => false, 'currency' => 'RUB', 'updated_at' => now(), 'created_at' => now()],
|
|
);
|
|
|
|
(include database_path('migrations/2026_07_16_120000_delete_jivosite_balance_row.php'))->up();
|
|
|
|
$exists = DB::connection('pgsql_supplier')->table('external_service_balances')
|
|
->where('service_key', 'jivosite')->exists();
|
|
expect($exists)->toBeFalse();
|
|
});
|