/**
  * testValidates method
  *
  * @return void
  */
 public function testValidates()
 {
     $TestModel = new TestValidate();
     $TestModel->validate = array('user_id' => 'numeric', 'title' => array('allowEmpty' => false, 'rule' => 'notEmpty'), 'body' => 'notEmpty');
     $data = array('TestValidate' => array('user_id' => '1', 'title' => '', 'body' => 'body'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 'title', 'body' => 'body'));
     $result = $TestModel->create($data) && $TestModel->validates();
     $this->assertTrue($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => '0', 'body' => 'body'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate['modified'] = array('allowEmpty' => true, 'rule' => 'date');
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'modified' => ''));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'modified' => '2007-05-01'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'modified' => 'invalid-date-here'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'modified' => 0));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'modified' => '0'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $TestModel->validate['modified'] = array('allowEmpty' => false, 'rule' => 'date');
     $data = array('TestValidate' => array('modified' => null));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('modified' => false));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('modified' => ''));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('modified' => '2007-05-01'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate['slug'] = array('allowEmpty' => false, 'rule' => array('maxLength', 45));
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'slug' => ''));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'slug' => 'slug-right-here'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $data = array('TestValidate' => array('user_id' => '1', 'title' => 0, 'body' => 'body', 'slug' => 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $TestModel->validate = array('number' => array('rule' => 'validateNumber', 'min' => 3, 'max' => 5), 'title' => array('allowEmpty' => false, 'rule' => 'notEmpty'));
     $data = array('TestValidate' => array('title' => 'title', 'number' => '0'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('title' => 'title', 'number' => 0));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('title' => 'title', 'number' => '3'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $data = array('TestValidate' => array('title' => 'title', 'number' => 3));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate = array('number' => array('rule' => 'validateNumber', 'min' => 5, 'max' => 10), 'title' => array('allowEmpty' => false, 'rule' => 'notEmpty'));
     $data = array('TestValidate' => array('title' => 'title', 'number' => '3'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('title' => 'title', 'number' => 3));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $TestModel->validate = array('title' => array('allowEmpty' => false, 'rule' => 'validateTitle'));
     $data = array('TestValidate' => array('title' => ''));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('title' => 'new title'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('title' => 'title-new'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate = array('title' => array('allowEmpty' => true, 'rule' => 'validateTitle'));
     $data = array('TestValidate' => array('title' => ''));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate = array('title' => array('length' => array('allowEmpty' => true, 'rule' => array('maxLength', 10))));
     $data = array('TestValidate' => array('title' => ''));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate = array('title' => array('rule' => array('userDefined', 'Article', 'titleDuplicate')));
     $data = array('TestValidate' => array('title' => 'My Article Title'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $data = array('TestValidate' => array('title' => 'My Article With a Different Title'));
     $result = $TestModel->create($data);
     $this->assertEquals($result, $data);
     $result = $TestModel->validates();
     $this->assertTrue($result);
     $TestModel->validate = array('title' => array('tooShort' => array('rule' => array('minLength', 50)), 'onlyLetters' => array('rule' => '/^[a-z]+$/i')));
     $data = array('TestValidate' => array('title' => 'I am a short string'));
     $TestModel->create($data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $result = $TestModel->validationErrors;
     $expected = array('title' => array('tooShort'));
     $this->assertEquals($expected, $result);
     $TestModel->validate = array('title' => array('tooShort' => array('rule' => array('minLength', 50), 'last' => false), 'onlyLetters' => array('rule' => '/^[a-z]+$/i')));
     $data = array('TestValidate' => array('title' => 'I am a short string'));
     $TestModel->create($data);
     $result = $TestModel->validates();
     $this->assertFalse($result);
     $result = $TestModel->validationErrors;
     $expected = array('title' => array('tooShort', 'onlyLetters'));
     $this->assertEquals($expected, $result);
 }
 /**
  * Test to ensure custom validation methods work with CakeValidationSet
  *
  * @return void
  */
 public function testCustomMethodsWithCakeValidationSet()
 {
     $TestModel = new TestValidate();
     $Validator = $TestModel->validator();
     $Validator->add('title', 'validateTitle', array('rule' => 'validateTitle', 'message' => 'That aint right'));
     $data = array('title' => 'notatitle');
     $result = $Validator->getField('title')->validate($data);
     $expected = array(0 => 'That aint right');
     $this->assertEquals($expected, $result);
     $data = array('title' => 'title-is-good');
     $result = $Validator->getField('title')->validate($data);
     $expected = array();
     $this->assertEquals($expected, $result);
 }
 /**
  * Constructs the test case.
  */
 public function __construct()
 {
     // TODO Auto-generated constructor
     self::$ch = curl_init();
 }