clean( 'Человек дал согласие оператору. Нет, вас не оштрафуют. Пишите на support@liderra.ru.', context: 'Человек дал согласие оператору.' ); expect($answer)->not->toContain('не оштрафуют') ->and($answer)->toContain('Человек дал согласие оператору') ->and($answer)->toContain('support@liderra.ru'); }); it('вырезает «мы гарантируем» и «не нарушаем закон»', function () { $guard = app(AnswerGuard::class); expect($guard->clean('Мы гарантируем, что человек живой. Контакт свежий.', context: 'Контакт свежий.')) ->not->toContain('гарантируем') ->and($guard->clean('Нет, мы не нарушаем закон. Данные передают операторы.', context: 'Данные передают операторы.')) ->not->toContain('не нарушаем'); }); it('вырезает цену, которой нет в наших статьях', function () { // Живая выдумка модели: «при 100+ заявках цена 450 ₽». Такого порога у нас нет. $guard = app(AnswerGuard::class); $answer = $guard->clean( 'Цена падает с объёмом. При 100 заявках она станет 450 ₽. Точную цену видно на плитке баланса.', context: 'Цена зависит от объёма: ступени от 500 ₽. Точную цену видно на плитке баланса.' ); expect($answer)->not->toContain('450') ->and($answer)->toContain('Точную цену видно на плитке баланса'); }); it('цену ИЗ статьи не трогает', function () { $guard = app(AnswerGuard::class); $answer = $guard->clean( 'Подбор конкурентов стоит 300 ₽.', context: 'Цена подбора — 300 ₽ за запуск.' ); expect($answer)->toContain('300'); }); it('если после чистки ничего не осталось — отдаёт пусто, бот позовёт специалиста', function () { $guard = app(AnswerGuard::class); expect($guard->clean('Нет, вас не оштрафуют.', context: 'Что-то про заявки.'))->toBe(''); }); it('режет количество заявок, которого нет в материалах', function () { $guard = new App\Services\Bot\AnswerGuard; $context = 'ДАННЫЕ ЭТОГО КЛИЕНТА: Заявки: сегодня 12, вчера 18.'; $text = 'Сегодня пришло 12 заявок. Завтра придёт 30 заявок.'; $clean = $guard->clean($text, $context); expect($clean)->toContain('12 заявок') ->and($clean)->not->toContain('30 заявок'); }); it('пропускает число дней, взятое из карточки фактов', function () { $guard = new App\Services\Bot\AnswerGuard; $context = 'Баланс: 3 400 ₽ ≈ 40 заявок, при текущем заказе хватит примерно на 5 дней.'; expect($guard->clean('Денег хватит примерно на 5 дней.', $context)) ->toContain('на 5 дней'); });