Hej!
Po 5 godzinie spędzonej nad jednym błędem, decyduję się zapytać.
Otóż, testuję czy dane, podane w formularzu, są poprawnie walidowane przez bibliotekę Respect\Validation.
Gdy robię to w kontrolerze:
//[...]
class SignUpNewUserController extends Controller
{
public function index(Request $request, Response $response): ResponseInterface
{
$validator = new SignUpNewUserValidation();
$validator->validate($request, new DataToValidate([
'login' => v::noWhitespace(),
'email' => v::email(),
'password' => v::notEmpty()->equals('confirm'),
]));
var_dump($validator->error);
//[...]
}
}
Poprzez GET walidator nie zwraca żadnego błędu.
Dane wprowadzone w GET:
login=HaKIM&
email=example%40email.com&
password=confirm&
confirmPassword=confirm
0 błędów.
Pora na test:
//[...]
public function testCorrectlyValidatingNewUser()
{
$data = [
'login' => 'Test',
'email' => 'hello@gmail.com',
'password' => 'confirmPassword',
'confirmPassword' => 'confirmPassword'
];
$request = mockery::mock(Request::class);
$request->shouldReceive('getParam')
->andReturn($data);
$dataToValidate = new DataToValidate([
'login' => v::notEmpty(),
'email' => v::email(),
'password' => v::equals($request->getParam(['confirmPassword']))
]);
$validator = new SignUpNewUserValidation();
$validator->validate($request, $dataToValidate);
$this->assertEquals([], $validator->error);
}
[...]
Ten sam wynik zwraca mi błąd w walidowanym email'u.
object(Respect\Validation\Validator)#531 (3) {
["rules":protected]=>
array(1) {
["0000000015b587de0000000028d9d949"]=>
object(Respect\Validation\Rules\Equals)#521 (3) {
["compareTo"]=>
array(4) {
["login"]=>
string(4) "Test"
["email"]=>
string(17) "example@email.com"
["password"]=>
string(15) "confirmPassword"
["confirmPassword"]=>
string(15) "confirmPassword"
}
["name":protected]=>
string(8) "Password"
["template":protected]=>
NULL
}
}
["name":protected]=>
string(8) "Password"
["template":protected]=>
NULL
}
Time: 130 ms, Memory: 12.00MB
There was 1 failure:
1) Tests\Validation\SignUpNewUserValidationTest::testSignUpNewUserStrategy
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
Array (
+ 0 => '- Email must be valid email'
)
/opt/lampp/htdocs/paradox/tests/Validation/SignUpNewUserValidationTest.php:40
Przy okazji z var_dump na dane walidowane.
Ja już nie mam pomysłów.
Ps. Jakby ktoś miał jakąś poradę, może nie odnośnie tego błędu, to proszę pisać w komentarzach, chętnie ulepszę kod.