Skip to content

Commit

Permalink
Add more test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
chinpei215 authored and ravage84 committed Oct 31, 2018
1 parent 2d48891 commit 408b3ff
Showing 1 changed file with 337 additions and 2 deletions.
339 changes: 337 additions & 2 deletions tests/TestCase/Validation/ValidatorTest.php
Expand Up @@ -621,7 +621,7 @@ public function testAllowEmpty()
*
* @return void
*/
public function testAllowEmptyDateTime()
public function testAllowEmptyWithDateTimeFields()
{
$validator = new Validator();
$validator->allowEmpty('created')
Expand Down Expand Up @@ -667,7 +667,7 @@ public function testAllowEmptyDateTime()
*
* @return void
*/
public function testAllowEmptyFileFields()
public function testAllowEmptyWithFileFields()
{
$validator = new Validator();
$validator->allowEmpty('picture')
Expand Down Expand Up @@ -753,6 +753,341 @@ public function testAllowEmptyAsArrayFailure()
$validator->allowEmpty(['title' => 'derp', 'created' => false]);
}

/**
* Tests the allowEmptyString method
*
* @return void
*/
public function testAllowEmptyString()
{
$validator = new Validator();
$validator->allowEmptyString('title')
->scalar('title');

$this->assertTrue($validator->isEmptyAllowed('title', true));
$this->assertTrue($validator->isEmptyAllowed('title', false));

$data = [
'title' => '',
];
$this->assertEmpty($validator->errors($data));

$data = [
'title' => null,
];
$this->assertEmpty($validator->errors($data));

$data = [
'title' => [],
];
$this->assertNotEmpty($validator->errors($data));

$validator = new Validator();
$validator->allowEmptyString('title', 'update', 'message');
$this->assertFalse($validator->isEmptyAllowed('title', true));
$this->assertTrue($validator->isEmptyAllowed('title', false));

$data = [
'title' => null,
];
$expected = [
'title' => ['_empty' => 'message'],
];
$this->assertSame($expected, $validator->errors($data, true));
$this->assertEmpty($validator->errors($data, false));
}

/**
* Tests the allowEmptyArray method
*
* @return void
*/
public function testAllowEmptyArray()
{
$validator = new Validator();
$validator->allowEmptyArray('items')
->hasAtMost('items', 3);

$this->assertTrue($validator->field('items')->isEmptyAllowed());

$data = [
'items' => '',
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'items' => null,
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'items' => [],
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'items' => [1, 2, 3, 4, 5],
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$validator = new Validator();
$validator->allowEmptyArray('items', 'update', 'message');
$this->assertFalse($validator->isEmptyAllowed('items', true));
$this->assertTrue($validator->isEmptyAllowed('items', false));

$data = [
'items' => null,
];
$expected = [
'items' => ['_empty' => 'message'],
];
$this->assertSame($expected, $validator->errors($data, true));
$this->assertEmpty($validator->errors($data, false));
}

/**
* Tests the allowEmptyFile method
*
* @return void
*/
public function testAllowEmptyFile()
{
$validator = new Validator();
$validator->allowEmptyFile('photo')
->uploadedFile('photo', []);

$this->assertTrue($validator->field('photo')->isEmptyAllowed());

$data = [
'photo' => [
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => UPLOAD_ERR_NO_FILE,
]
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'photo' => null,
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'photo' => [
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => UPLOAD_ERR_FORM_SIZE,
]
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$data = [
'photo' => '',
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$data = [
'photo' => [],
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$validator = new Validator();
$validator->allowEmptyArray('photo', 'update', 'message');
$this->assertFalse($validator->isEmptyAllowed('photo', true));
$this->assertTrue($validator->isEmptyAllowed('photo', false));

$data = [
'photo' => null,
];
$expected = [
'photo' => ['_empty' => 'message'],
];
$this->assertSame($expected, $validator->errors($data, true));
$this->assertEmpty($validator->errors($data, false));
}

/**
* Tests the allowEmptyDate method
*
* @return void
*/
public function testAllowEmptyDate()
{
$validator = new Validator();
$validator->allowEmptyDate('date')
->date('date');

$this->assertTrue($validator->field('date')->isEmptyAllowed());

$data = [
'date' => [
'year' => '',
'month' => '',
'day' => ''
],
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'date' => '',
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'date' => null,
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'date' => [],
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$validator = new Validator();
$validator->allowEmptyArray('date', 'update', 'message');
$this->assertFalse($validator->isEmptyAllowed('date', true));
$this->assertTrue($validator->isEmptyAllowed('date', false));

$data = [
'date' => null,
];
$expected = [
'date' => ['_empty' => 'message'],
];
$this->assertSame($expected, $validator->errors($data, true));
$this->assertEmpty($validator->errors($data, false));
}

/**
* Tests the allowEmptyDate method
*
* @return void
*/
public function testAllowEmptyTime()
{
$validator = new Validator();
$validator->allowEmptyTime('time')
->time('time');

$this->assertTrue($validator->field('time')->isEmptyAllowed());

$data = [
'time' => [
'hour' => '',
'minute' => '',
'second' => '',
],
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'time' => '',
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'time' => null,
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'time' => [],
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$validator = new Validator();
$validator->allowEmptyArray('time', 'update', 'message');
$this->assertFalse($validator->isEmptyAllowed('time', true));
$this->assertTrue($validator->isEmptyAllowed('time', false));

$data = [
'time' => null,
];
$expected = [
'time' => ['_empty' => 'message'],
];
$this->assertSame($expected, $validator->errors($data, true));
$this->assertEmpty($validator->errors($data, false));
}

/**
* Tests the allowEmptyDate method
*
* @return void
*/
public function testAllowEmptyDateTime()
{
$validator = new Validator();
$validator->allowEmptyDate('published')
->time('published');

$this->assertTrue($validator->field('published')->isEmptyAllowed());

$data = [
'published' => [
'year' => '',
'month' => '',
'day' => '',
'hour' => '',
'minute' => '',
'second' => '',
],
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'published' => '',
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'published' => null,
];
$result = $validator->errors($data);
$this->assertEmpty($result);

$data = [
'published' => [],
];
$result = $validator->errors($data);
$this->assertNotEmpty($result);

$validator = new Validator();
$validator->allowEmptyArray('published', 'update', 'message');
$this->assertFalse($validator->isEmptyAllowed('published', true));
$this->assertTrue($validator->isEmptyAllowed('published', false));

$data = [
'published' => null,
];
$expected = [
'published' => ['_empty' => 'message'],
];
$this->assertSame($expected, $validator->errors($data, true));
$this->assertEmpty($validator->errors($data, false));
}

/**
* Test the notEmpty() method.
*
Expand Down

0 comments on commit 408b3ff

Please sign in to comment.