Files
yii/tests/framework/validators/CDateValidatorTest.php
2013-03-09 22:16:34 +06:00

92 lines
2.3 KiB
PHP

<?php
require_once 'ModelMock.php';
/**
* CDateValidatorTest
*
* @author Kevin Bradwick <kbradwick@gmail.com>
*/
class CDateValidatorTest extends CTestCase
{
/**
* Test allow empty
*
* @return null
*/
public function testAllowEmptyOption()
{
$model = $this->getModelMock(array('allowEmpty' => true));
$this->assertTrue($model->validate());
$model = $this->getModelMock(array('allowEmpty' => false));
$this->assertFalse($model->validate());
$this->assertTrue($model->hasErrors('foo'));
}
/**
* Test can validate different formats
*
* @return null
*/
public function testFormatOption()
{
// default format
$model = $this->getModelMock();
$model->foo = '01/01/2011';
$this->assertTrue($model->validate());
$model->foo = '42/01/2011';
$this->assertFalse($model->validate());
// custom format
$model = $this->getModelMock(array('format' => 'dd-MM-yyyy'));
$model->foo = '01-01-2011';
$this->assertTrue($model->validate());
$model->foo = '01-24-2011';
$this->assertFalse($model->validate());
// array value, https://github.com/yiisoft/yii/issues/1955
$model->foo = array('01-01-2011');
$this->assertFalse($model->validate());
}
/**
* Test the timestamp option
*
* @return null
*/
public function testTimestampOption()
{
$model = $this->getModelMock(array('timestampAttribute' => 'bar'));
$model->foo = '01/01/2011';
$this->assertTrue($model->validate());
$this->assertInternalType('integer', $model->bar);
$this->assertEquals(strtotime('1 Jan 2011'), $model->bar);
}
/**
* Mocks up an object to test with
*
* @param array $operator optional parameters to configure rule
*
* @return null
*/
protected function getModelMock($params=array())
{
$rules = array(
array('foo', 'date')
);
foreach ($params as $rule => $value) {
$rules[0][$rule] = $value;
}
$stub = $this->getMock('ModelMock', array('rules'));
$stub->expects($this->any())
->method('rules')
->will($this->returnValue($rules));
return $stub;
}
}