$value], ['x' => [new DomainIdentifier]]); expect($v->fails())->toBeFalse("rejected valid {$value}"); })->with('domains_valid'); test('DomainIdentifier rejects invalid', function (string $value) { $v = Validator::make(['x' => $value], ['x' => [new DomainIdentifier]]); expect($v->fails())->toBeTrue("accepted invalid {$value}"); })->with('domains_invalid'); dataset('phones_valid', [ ['79991234567'], ['74955551212'], ['78001234567'], ]); dataset('phones_invalid', [ ['89991234567'], // не 7 в начале ['7999123456'], // 10 цифр ['799912345678'], // 12 цифр ['+79991234567'], // плюс ['7 999 123 45 67'], // пробелы ['79991234abc'], // буквы ]); test('PhoneIdentifier accepts valid', function (string $v) { $val = Validator::make(['x' => $v], ['x' => [new PhoneIdentifier]]); expect($val->fails())->toBeFalse(); })->with('phones_valid'); test('PhoneIdentifier rejects invalid', function (string $v) { $val = Validator::make(['x' => $v], ['x' => [new PhoneIdentifier]]); expect($val->fails())->toBeTrue(); })->with('phones_invalid'); test('SmsSenderRule accepts alpha and short numeric', function () { foreach (['TINKOFF', 'SBER', '900', '1234', 'BANK-1', 'alfa_bank'] as $v) { $r = Validator::make(['x' => $v], ['x' => [new SmsSenderRule]]); expect($r->fails())->toBeFalse("rejected valid {$v}"); } }); test('SmsSenderRule rejects 11-digit phone (supplier blocks it)', function () { foreach (['79991234567', '12345678901'] as $v) { $r = Validator::make(['x' => $v], ['x' => [new SmsSenderRule]]); expect($r->fails())->toBeTrue("accepted invalid {$v}"); } }); test('SmsSenderRule rejects too long', function () { $longString = str_repeat('A', 31); $r = Validator::make(['x' => $longString], ['x' => [new SmsSenderRule]]); expect($r->fails())->toBeTrue(); }); test('SmsSenderRule combined with required rejects empty string', function () { // Laravel skips non-implicit rules для пустых строк; в реальном FormRequest // signal-поля будут обязательными — проверяем связку 'required' + наша rule. $r = Validator::make(['x' => ''], ['x' => ['required', new SmsSenderRule]]); expect($r->fails())->toBeTrue(); }); test('SmsSenderRule rejects special chars', function () { foreach (['SBER!', 'a@b', 'with space', 'punto.ru'] as $v) { $r = Validator::make(['x' => $v], ['x' => [new SmsSenderRule]]); expect($r->fails())->toBeTrue("accepted invalid {$v}"); } });