No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

81 líneas
2.4KB

  1. <?php
  2. if (session_status() !== PHP_SESSION_ACTIVE) {
  3. session_start();
  4. }
  5. use Framework\Validation\Manager;
  6. use Framework\Validation\Rule\EmailRule;
  7. use Framework\Validation\Rule\MinRule;
  8. use Framework\Validation\Rule\RequiredRule;
  9. use Framework\Validation\Exception\ValidationException;
  10. class ValidationTest extends Framework\Testing\TestCase
  11. {
  12. protected Manager $manager;
  13. public function setUp(): void
  14. {
  15. parent::setUp();
  16. $this->manager = new Manager();
  17. $this->manager->addRule('email', new EmailRule());
  18. $this->manager->addRule('min', new MinRule());
  19. $this->manager->addRule('required', new RequiredRule());
  20. }
  21. public function testInvalidEmailValuesFail()
  22. {
  23. $expected = ['email' => ['email should be an email']];
  24. [ $exception ] = $this->assertExceptionThrown(
  25. fn() => $this->manager->validate(['email' => 'foo'], ['email' => ['email']]),
  26. ValidationException::class,
  27. );
  28. $this->assertEquals($expected, $exception->getErrors());
  29. }
  30. public function testValidEmailValuesPass()
  31. {
  32. $data = $this->manager->validate(['email' => 'foo@bar.com'], ['email' => ['email']]);
  33. $this->assertEquals($data['email'], 'foo@bar.com');
  34. }
  35. public function testInvalidRequiredValuesFail()
  36. {
  37. $expected = ['email' => ['email is required']];
  38. [ $exception ] = $this->assertExceptionThrown(
  39. fn() => $this->manager->validate(['email' => ''], ['email' => ['required']]),
  40. ValidationException::class,
  41. );
  42. $this->assertEquals($expected, $exception->getErrors());
  43. }
  44. public function testValidRequiredValuesPass()
  45. {
  46. $data = $this->manager->validate(['email' => 'foo@bar.com'], ['email' => ['required']]);
  47. $this->assertEquals($data['email'], 'foo@bar.com');
  48. }
  49. public function testInvalidMinValuesFail()
  50. {
  51. $expected = ['email' => ['email should be at least 4 characters']];
  52. [ $exception ] = $this->assertExceptionThrown(
  53. fn() => $this->manager->validate(['email' => 'foo'], ['email' => ['min:4']]),
  54. ValidationException::class,
  55. );
  56. $this->assertEquals($expected, $exception->getErrors());
  57. }
  58. public function testValidMinValuesPass()
  59. {
  60. $data = $this->manager->validate(['email' => 'foo@bar.com'], ['email' => ['min:4']]);
  61. $this->assertEquals($data['email'], 'foo@bar.com');
  62. }
  63. }

Powered by TurnKey Linux.