From f18ebf2117c6719b89b23fbbd7b9518054181b07 Mon Sep 17 00:00:00 2001 From: "mariano.iglesias" Date: Fri, 6 Apr 2007 17:33:49 +0000 Subject: [PATCH] Test added to replicate #2360 git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@4805 3807eeeb-6ff5-0310-8944-8be069107fe0 --- .../cases/libs/view/helpers/form.test.php | 106 +++++++++++++++++- 1 file changed, 100 insertions(+), 6 deletions(-) diff --git a/cake/tests/cases/libs/view/helpers/form.test.php b/cake/tests/cases/libs/view/helpers/form.test.php index 18b4b024f..8c1c7baec 100644 --- a/cake/tests/cases/libs/view/helpers/form.test.php +++ b/cake/tests/cases/libs/view/helpers/form.test.php @@ -46,8 +46,13 @@ } } + /** + * Short description for class. + * + * @package cake.tests + * @subpackage cake.tests.cases.libs.view.helpers + */ class Contact extends Model { - var $primaryKey = 'id'; var $useTable = false; @@ -60,13 +65,62 @@ )); } } + + /** + * Short description for class. + * + * @package cake.tests + * @subpackage cake.tests.cases.libs.view.helpers + */ + class UserForm extends Model { + var $useTable = false; + var $primaryKey = 'id'; + var $name = 'UserForm'; + + var $hasMany = array('OpenidUrl'); + + function loadInfo() { + return new Set(array( + array('name' => 'id', 'type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'), + array('name' => 'name', 'type' => 'string', 'null' => '', 'default' => '', 'length' => '255'), + array('name' => 'created', 'type' => 'date', 'null' => '1', 'default' => '', 'length' => ''), + array('name' => 'updated', 'type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null) + )); + } + } + + /** + * Short description for class. + * + * @package cake.tests + * @subpackage cake.tests.cases.libs.view.helpers + */ + class OpenidUrl extends Model { + var $useTable = false; + var $primaryKey = 'id'; + var $name = 'OpenidUrl'; + + var $belongsTo = array('UserForm'); + + function loadInfo() { + return new Set(array( + array('name' => 'id', 'type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'), + array('name' => 'user_id', 'type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'), + array('name' => 'url', 'type' => 'string', 'null' => '', 'default' => '', 'length' => '255'), + )); + } + + function beforeValidate() { + $this->invalidate('openid_not_registered'); + return true; + } + } /** * Short description for class. * - * @package test_suite - * @subpackage test_suite.cases.libs - * @since CakePHP Test Suite v 1.0.0.0 + * @package cake.tests + * @subpackage cake.tests.cases.libs.view.helpers */ class FormHelperTest extends UnitTestCase { @@ -77,11 +131,51 @@ class FormHelperTest extends UnitTestCase { ClassRegistry::addObject('view', $view); ClassRegistry::addObject('Contact', new Contact()); } + + function testFormValidationAssociated() { + $this->UserForm = new UserForm(); + ClassRegistry::addObject('UserForm', $this->UserForm); + + $this->UserForm->OpenidUrl = new OpenidUrl(); + ClassRegistry::addObject('OpenidUrl', $this->UserForm->OpenidUrl); + + $data = array( + 'UserForm' => array( + 'name' => 'user' + ), + 'OpenidUrl' => array( + 'url' => 'http://www.cricava.com' + ) + ); + + $result = $this->UserForm->OpenidUrl->create($data); + $this->assertTrue($result); + + $result = $this->UserForm->OpenidUrl->validates(); + $this->assertFalse($result); + + $result = $this->Form->create('UserForm', array('type' => 'post', 'action' => 'login')); + $this->assertPattern('/^]*>$/', $result); + + $expected = array( + 'OpenidUrl' => array( + 'openid_not_registered' => 1 + ) + ); + + $this->assertEqual($this->Form->validationErrors, $expected); + + $result = $this->Form->error('OpenidUrl.openid_not_registered', 'Error, not registered', array('wrap' => false)); + $this->assertEqual($result, 'Error, not registered'); + + unset($this->UserForm->OpenidUrl); + unset($this->UserForm); + } function testFormInput() { $result = $this->Form->input('Model/field', array('type' => 'text')); - $expected = '
'; - //$this->assertEqual($result, $expected); + $expected = '
'; + $this->assertEqual($result, $expected); $result = $this->Form->input('Model/password'); $expected = '
';