|
@@ -0,0 +1,669 @@
|
|
|
|
+<?php
|
|
|
|
+
|
|
|
|
+class ValidatorTest extends PHPUnit_Framework_TestCase {
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Setup the test environment.
|
|
|
|
+ */
|
|
|
|
+ public function setUp()
|
|
|
|
+ {
|
|
|
|
+ Config::set('database.default', 'sqlite');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Tear down the test environment.
|
|
|
|
+ */
|
|
|
|
+ public function tearDown()
|
|
|
|
+ {
|
|
|
|
+ Config::set('database.default', 'mysql');
|
|
|
|
+ $_FILES = array();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the required validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testRequiredRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('name' => 'Taylor Otwell');
|
|
|
|
+ $rules = array('name' => 'required');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['name'] = '';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ unset($input['name']);
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['name']['tmp_name'] = 'foo';
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['name']['tmp_name'] = '';
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the confirmed validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheConfirmedRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('password' => 'foo', 'password_confirmation' => 'foo');
|
|
|
|
+ $rules = array('password' => 'confirmed');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['password_confirmation'] = 'foo_bar';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ unset($input['password_confirmation']);
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the different validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheDifferentRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('password' => 'foo', 'password_confirmation' => 'bar');
|
|
|
|
+ $rules = array('password' => 'different:password_confirmation');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['password_confirmation'] = 'foo';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ unset($input['password_confirmation']);
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the accepted validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheAcceptedRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('terms' => '1');
|
|
|
|
+ $rules = array('terms' => 'accepted');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['terms'] = 'yes';
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['terms'] = '2';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // The accepted rule implies required, so should fail if field not present.
|
|
|
|
+ unset($input['terms']);
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the numeric validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheNumericRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('amount' => '1.21');
|
|
|
|
+ $rules = array('amount' => 'numeric');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['amount'] = '1';
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['amount'] = 1.2;
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['amount'] = '1.2a';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the integer validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheIntegerRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('amount' => '1');
|
|
|
|
+ $rules = array('amount' => 'integer');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['amount'] = '0';
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['amount'] = 1.2;
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['amount'] = '1.2a';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the size validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheSizeRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('amount' => '1.21');
|
|
|
|
+ $rules = array('amount' => 'numeric|size:1.21');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|size:1');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // If no numeric rule is on the field, it is treated as a string
|
|
|
|
+ $input = array('amount' => '111');
|
|
|
|
+ $rules = array('amount' => 'size:3');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'size:4');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // The size rules checks kilobytes on files
|
|
|
|
+ $_FILES['photo']['tmp_name'] = 'foo';
|
|
|
|
+ $_FILES['photo']['size'] = 10240;
|
|
|
|
+ $rules = array('photo' => 'size:10');
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['photo']['size'] = 14000;
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the between validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheBetweenRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('amount' => '1.21');
|
|
|
|
+ $rules = array('amount' => 'numeric|between:1,2');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|between:2,3');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // If no numeric rule is on the field, it is treated as a string
|
|
|
|
+ $input = array('amount' => '111');
|
|
|
|
+ $rules = array('amount' => 'between:1,3');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'between:100,111');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // The size rules checks kilobytes on files
|
|
|
|
+ $_FILES['photo']['tmp_name'] = 'foo';
|
|
|
|
+ $_FILES['photo']['size'] = 10240;
|
|
|
|
+ $rules = array('photo' => 'between:9,11');
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['photo']['size'] = 14000;
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the between validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheMinRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('amount' => '1.21');
|
|
|
|
+ $rules = array('amount' => 'numeric|min:1');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|min:2');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // If no numeric rule is on the field, it is treated as a string
|
|
|
|
+ $input = array('amount' => '01');
|
|
|
|
+ $rules = array('amount' => 'min:2');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'min:3');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // The size rules checks kilobytes on files
|
|
|
|
+ $_FILES['photo']['tmp_name'] = 'foo';
|
|
|
|
+ $_FILES['photo']['size'] = 10240;
|
|
|
|
+ $rules = array('photo' => 'min:9');
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['photo']['size'] = 8000;
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the between validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheMaxRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('amount' => '1.21');
|
|
|
|
+ $rules = array('amount' => 'numeric|max:2');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|max:1');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // If no numeric rule is on the field, it is treated as a string
|
|
|
|
+ $input = array('amount' => '01');
|
|
|
|
+ $rules = array('amount' => 'max:3');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'max:1');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ // The size rules checks kilobytes on files
|
|
|
|
+ $_FILES['photo']['tmp_name'] = 'foo';
|
|
|
|
+ $_FILES['photo']['size'] = 10240;
|
|
|
|
+ $rules = array('photo' => 'max:11');
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['photo']['size'] = 140000;
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the in validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheInRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('size' => 'L');
|
|
|
|
+ $rules = array('size' => 'in:S,M,L');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['size'] = 'XL';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the not-in validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheNotInRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('size' => 'L');
|
|
|
|
+ $rules = array('size' => 'not_in:S,M,L');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['size'] = 'XL';
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the IP validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheIPRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('ip' => '192.168.1.1');
|
|
|
|
+ $rules = array('ip' => 'ip');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['ip'] = '192.111';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the e-mail validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheEmailRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('email' => 'example@gmail.com');
|
|
|
|
+ $rules = array('email' => 'email');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['email'] = 'blas-asok';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the URL validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheUrlRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('url' => 'http://www.google.com');
|
|
|
|
+ $rules = array('url' => 'url');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['url'] = 'blas-asok';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the active URL validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheActiveUrlRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('url' => 'http://google.com');
|
|
|
|
+ $rules = array('url' => 'active_url');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['url'] = 'http://asdlk-aselkaiwels.com';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the image validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheImageRule()
|
|
|
|
+ {
|
|
|
|
+ $_FILES['photo']['tmp_name'] = path('storage').'files/desert.jpg';
|
|
|
|
+ $rules = array('photo' => 'image');
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['photo']['tmp_name'] = path('app').'routes.php';
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the alpha validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheAlphaRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('name' => 'TaylorOtwell');
|
|
|
|
+ $rules = array('name' => 'alpha');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['name'] = 'Taylor Otwell';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the alpha_num validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheAlphaNumRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('name' => 'TaylorOtwell1');
|
|
|
|
+ $rules = array('name' => 'alpha_num');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['name'] = 'Taylor Otwell';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the alpha_num validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheAlphaDashRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('name' => 'Taylor-Otwell_1');
|
|
|
|
+ $rules = array('name' => 'alpha_dash');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['name'] = 'Taylor Otwell';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the mimes validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testTheMimesRule()
|
|
|
|
+ {
|
|
|
|
+ $_FILES['file']['tmp_name'] = path('app').'routes.php';
|
|
|
|
+ $rules = array('file' => 'mimes:php,txt');
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('file' => 'mimes:jpg,bmp');
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $_FILES['file']['tmp_name'] = path('storage').'files/desert.jpg';
|
|
|
|
+ $rules['file'] = 'mimes:jpg,bmp';
|
|
|
|
+ $this->assertTrue(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules['file'] = 'mimes:txt,bmp';
|
|
|
|
+ $this->assertFalse(Validator::make($_FILES, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test the unique validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testUniqueRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('code' => 'ZZ');
|
|
|
|
+ $rules = array('code' => 'unique:validation_unique');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input = array('code' => 'AR');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $rules = array('code' => 'unique:validation_unique,code,AR,code');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Tests the exists validation rule.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testExistsRule()
|
|
|
|
+ {
|
|
|
|
+ $input = array('code' => 'TX');
|
|
|
|
+ $rules = array('code' => 'exists:validation_unique');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['code'] = array('TX', 'NY');
|
|
|
|
+ $rules = array('code' => 'exists:validation_unique,code');
|
|
|
|
+ $this->assertTrue(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['code'] = array('TX', 'XX');
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+
|
|
|
|
+ $input['code'] = 'XX';
|
|
|
|
+ $this->assertFalse(Validator::make($input, $rules)->valid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test that the validator sets the correct messages.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testCorrectMessagesAreSet()
|
|
|
|
+ {
|
|
|
|
+ $lang = require path('app').'language/en/validation.php';
|
|
|
|
+
|
|
|
|
+ $input = array('email' => 'example-foo');
|
|
|
|
+ $rules = array('name' => 'required', 'email' => 'required|email');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $messages = $v->errors;
|
|
|
|
+ $this->assertInstanceOf('Laravel\\Messages', $messages);
|
|
|
|
+ $this->assertEquals(str_replace(':attribute', 'name', $lang['required']), $messages->first('name'));
|
|
|
|
+ $this->assertEquals(str_replace(':attribute', 'email', $lang['email']), $messages->first('email'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test that custom messages are recognized.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testCustomMessagesAreRecognize()
|
|
|
|
+ {
|
|
|
|
+ $messages = array('required' => 'Required!');
|
|
|
|
+ $rules = array('name' => 'required');
|
|
|
|
+ $v = Validator::make(array(), $rules, $messages);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $this->assertEquals('Required!', $v->errors->first('name'));
|
|
|
|
+
|
|
|
|
+ $messages['email_required'] = 'Email Required!';
|
|
|
|
+ $rules = array('name' => 'required', 'email' => 'required');
|
|
|
|
+ $v = Validator::make(array(), $rules, $messages);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $this->assertEquals('Required!', $v->errors->first('name'));
|
|
|
|
+ $this->assertEquals('Email Required!', $v->errors->first('email'));
|
|
|
|
+
|
|
|
|
+ $rules = array('custom' => 'required');
|
|
|
|
+ $v = Validator::make(array(), $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $this->assertEquals('This field is required!', $v->errors->first('custom'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test that size replacements are made on messages.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testNumericSizeReplacementsAreMade()
|
|
|
|
+ {
|
|
|
|
+ $lang = require path('app').'language/en/validation.php';
|
|
|
|
+
|
|
|
|
+ $input = array('amount' => 100);
|
|
|
|
+ $rules = array('amount' => 'numeric|size:80');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['numeric']), $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|between:70,80');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['numeric']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|min:120');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['numeric']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'numeric|max:20');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':max'), array('amount', '20'), $lang['max']['numeric']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test that string size replacements are made on messages.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testStringSizeReplacementsAreMade()
|
|
|
|
+ {
|
|
|
|
+ $lang = require path('app').'language/en/validation.php';
|
|
|
|
+
|
|
|
|
+ $input = array('amount' => '100');
|
|
|
|
+ $rules = array('amount' => 'size:80');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['string']), $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'between:70,80');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['string']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'min:120');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['string']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'max:2');
|
|
|
|
+ $v = Validator::make($input, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':max'), array('amount', '2'), $lang['max']['string']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test that string size replacements are made on messages.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testFileSizeReplacementsAreMade()
|
|
|
|
+ {
|
|
|
|
+ $lang = require path('app').'language/en/validation.php';
|
|
|
|
+
|
|
|
|
+ $_FILES['amount']['tmp_name'] = 'foo';
|
|
|
|
+ $_FILES['amount']['size'] = 10000;
|
|
|
|
+ $rules = array('amount' => 'size:80');
|
|
|
|
+ $v = Validator::make($_FILES, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['file']), $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'between:70,80');
|
|
|
|
+ $v = Validator::make($_FILES, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['file']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'min:120');
|
|
|
|
+ $v = Validator::make($_FILES, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['file']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+
|
|
|
|
+ $rules = array('amount' => 'max:2');
|
|
|
|
+ $v = Validator::make($_FILES, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+ $expect = str_replace(array(':attribute', ':max'), array('amount', '2'), $lang['max']['file']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('amount'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test that values get replaced in messages.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testValuesGetReplaced()
|
|
|
|
+ {
|
|
|
|
+ $lang = require path('app').'language/en/validation.php';
|
|
|
|
+
|
|
|
|
+ $_FILES['file']['tmp_name'] = path('storage').'files/desert.jpg';
|
|
|
|
+ $rules = array('file' => 'mimes:php,txt');
|
|
|
|
+ $v = Validator::make($_FILES, $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+
|
|
|
|
+ $expect = str_replace(array(':attribute', ':values'), array('file', 'php, txt'), $lang['mimes']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('file'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Test custom attribute names are replaced.
|
|
|
|
+ *
|
|
|
|
+ * @group laravel
|
|
|
|
+ */
|
|
|
|
+ public function testCustomAttributesAreReplaced()
|
|
|
|
+ {
|
|
|
|
+ $lang = require path('app').'language/en/validation.php';
|
|
|
|
+
|
|
|
|
+ $rules = array('test_attribute' => 'required');
|
|
|
|
+ $v = Validator::make(array(), $rules);
|
|
|
|
+ $v->valid();
|
|
|
|
+
|
|
|
|
+ $expect = str_replace(':attribute', 'attribute', $lang['required']);
|
|
|
|
+ $this->assertEquals($expect, $v->errors->first('test_attribute'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|