Files
portal/app/tests/Feature/Advertising/AdvertisingScheduleTest.php
T
Дмитрий 542b7d2d22 fix реклама за показы: очередь робота больше не встаёт колом, доклад об успехе не врёт, тихий ноль ловится
Р6 — задание, брошенное «в работе», держало очередь для всех клиентов навсегда.
Причина сбоя обрезается до 900 знаков, иначе портал отвергал отчёт о самом частом
виде поломки. Провал отчёта больше не глотается молча — едет в письмо человеку.
Приём отчёта ловит любую ошибку и закрывает задание сбойным вместо 500 роботу.
Новый сторож creative-jobs:reap каждые 10 минут разбирает пробку.

Р7 — обрыв на докладе «готово» объявлял провалом уже сделанную работу. Доклад
вынесен из-под обработчика сбоя, повторяется трижды, при неудаче только письмо.
Осечка ухода со страницы после «Создать» больше не считается провалом загрузки.

Р8 — пустой список размеров считался успехом, и робот заливал одни и те же файлы
по кругу, оставляя мусор в живом кабинете. Теперь громкий отказ до похода в Яндекс.

Портал 274/274, робот 41/41. Все защиты проверены вырезанием.
Выходов снятия заморозки денег по-прежнему четыре.
2026-07-27 20:42:23 +03:00

29 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
use Illuminate\Console\Scheduling\Schedule;
it('registers advertising Direct jobs in the scheduler', function () {
$events = app(Schedule::class)->events();
$summaries = array_map(fn ($e) => $e->getSummaryForDisplay(), $events);
$joined = implode("\n", $summaries);
expect($joined)->toContain('ChargeCampaignSpendJob')
->and($joined)->toContain('SyncCampaignAudienceJob')
->and($joined)->toContain('SyncCampaignModerationJob');
});
/**
* Сторож очереди робота обязан быть в расписании.
*
* Сама команда без расписания бесполезна: зависшее «в работе» задание держит очередь для
* ВСЕХ клиентов, а разбирать пробку руками некому — робот работает по ночам без людей.
*/
it('registers the creative job reaper in the scheduler', function () {
$events = app(Schedule::class)->events();
$joined = implode("\n", array_map(fn ($e) => $e->getSummaryForDisplay(), $events));
expect($joined)->toContain('creative-jobs:reap');
});