toBe(ModerationReason::PRICHINA_NEIZVESTNA); })->with([ 'русская с точкой' => "\nОтклонено на модерации.", 'русская без точки' => 'Отклонено на модерации', 'русская про ожидание' => 'Ожидает модерации.', 'английская с точкой' => "\nRejected at moderation.", 'английская без точки' => 'Rejected at moderation', 'английская про ожидание' => 'Pending moderation.', 'пусто' => '', ]); /** * 🔴 Настоящую причину не трогаем ни на каком языке. Ровно ради неё весь разбор * и затевался: её приносит робот-разведчик с экрана кабинета, и она обязана доехать * до клиента слово в слово, со всеми абзацами. */ it('passes a real moderator explanation through untouched', function () { $nastoyashchaya = "Нет предупреждения: финансовые услуги\n\n" .'Объявление о финансовых услугах должно содержать наименование юридического лица.'; expect(ModerationReason::forRejected($nastoyashchaya))->toBe($nastoyashchaya); }); /** Края обрезаем, внутренние переносы нет — модератор перечисляет претензии абзацами. */ it('trims the edges but keeps the paragraphs', function () { expect(ModerationReason::normalize("\n первая\n\nвторая \n"))->toBe("первая\n\nвторая"); });