Files
portal/app/tests/Feature/External/DeleteJivositeRowMigrationTest.php
T
Дмитрий 5a02d0698f feat(dashboard): онлайн-обновление балансов — POST /refresh + whitelist + уборка jivosite
Фаза 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>
2026-07-16 14:50:01 +03:00

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();
});