2007-02-06 17:18:23 +00:00
< ? php
/* SVN FILE: $Id$ */
/**
* Short description for file .
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP Test Suite < https :// trac . cakephp . org / wiki / Developement / TestSuite >
* Copyright ( c ) 2006 , Larry E . Masters Shorewood , IL . 60431
* Author ( s ) : Larry E . Masters aka PhpNut < phpnut @ gmail . com >
*
* Licensed under The Open Group Test Suite License
* Redistributions of files must retain the above copyright notice .
*
* @ filesource
* @ author Larry E . Masters aka PhpNut < phpnut @ gmail . com >
* @ copyright Copyright ( c ) 2006 , Larry E . Masters Shorewood , IL . 60431
* @ link http :// www . phpnut . com / projects /
* @ package test_suite
* @ subpackage test_suite . cases . app
* @ since CakePHP Test Suite v 1.0 . 0.0
* @ version $Revision $
* @ modifiedby $LastChangedBy $
* @ lastmodified $Date $
* @ license http :// www . opensource . org / licenses / opengroup . php The Open Group Test Suite License
*/
2007-06-23 07:44:39 +00:00
if ( ! defined ( 'CAKEPHP_UNIT_TEST_EXECUTION' )) {
define ( 'CAKEPHP_UNIT_TEST_EXECUTION' , 1 );
}
2007-03-16 23:35:25 +00:00
2007-07-08 01:17:57 +00:00
require_once CAKE . 'app_helper.php' ;
2007-09-16 18:32:02 +00:00
uses (
'class_registry' , 'controller' . DS . 'controller' , 'model' . DS . 'model' ,
'view' . DS . 'helper' , 'view' . DS . 'helpers' . DS . 'html' , 'view' . DS . 'view' ,
'view' . DS . 'helpers' . DS . 'form'
);
2007-07-08 01:17:57 +00:00
2007-06-23 07:44:39 +00:00
class ContactTestController extends Controller {
var $name = 'ContactTest' ;
var $uses = null ;
}
class Contact extends Model {
var $primaryKey = 'id' ;
var $useTable = false ;
var $name = 'Contact' ;
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' => 'published' , 'type' => 'date' , 'null' => true , 'default' => null , 'length' => null ),
array ( 'name' => 'created' , 'type' => 'date' , 'null' => '1' , 'default' => '' , 'length' => '' ),
array ( 'name' => 'updated' , 'type' => 'datetime' , 'null' => '1' , 'default' => '' , 'length' => null )));
2007-03-16 23:35:25 +00:00
}
2007-06-23 07:44:39 +00:00
}
2007-04-25 00:24:19 +00:00
2007-06-23 07:44:39 +00:00
class UserForm extends Model {
var $useTable = false ;
var $primaryKey = 'id' ;
var $name = 'UserForm' ;
var $hasMany = array ( 'OpenidUrl' => array ( 'className' => 'OpenidUrl' , 'foreignKey' => 'user_form_id' ));
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 )));
2007-04-06 17:33:49 +00:00
}
2007-06-23 07:44:39 +00:00
}
2007-04-25 00:24:19 +00:00
2007-06-23 07:44:39 +00:00
class OpenidUrl extends Model {
var $useTable = false ;
var $primaryKey = 'id' ;
var $name = 'OpenidUrl' ;
var $belongsTo = array ( 'UserForm' => array ( 'className' => 'UserForm' , 'foreignKey' => 'user_form_id' ));
2007-04-25 00:24:19 +00:00
2007-06-23 07:44:39 +00:00
function loadInfo () {
return new Set ( array (
array ( 'name' => 'id' , 'type' => 'integer' , 'null' => '' , 'default' => '' , 'length' => '8' ),
array ( 'name' => 'user_form_id' , 'type' => 'integer' , 'null' => '' , 'default' => '' , 'length' => '8' ),
array ( 'name' => 'url' , 'type' => 'string' , 'null' => '' , 'default' => '' , 'length' => '255' ),));
2007-04-06 17:33:49 +00:00
}
2007-04-29 03:10:44 +00:00
2007-06-23 07:44:39 +00:00
function beforeValidate () {
$this -> invalidate ( 'openid_not_registered' );
return true ;
}
}
2007-04-29 03:10:44 +00:00
2007-06-23 07:44:39 +00:00
class ValidateUser extends Model {
var $primaryKey = 'id' ;
var $useTable = false ;
var $name = 'ValidateUser' ;
var $hasOne = array ( 'ValidateProfile' => array ( 'className' => 'ValidateProfile' , 'foreignKey' => 'user_id' ));
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' => 'email' , '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 )));
2007-04-26 11:52:56 +00:00
}
2007-04-29 03:10:44 +00:00
2007-06-23 07:44:39 +00:00
function beforeValidate () {
$this -> invalidate ( 'email' );
return false ;
}
}
2007-04-29 03:10:44 +00:00
2007-06-23 07:44:39 +00:00
class ValidateProfile extends Model {
var $primaryKey = 'id' ;
var $useTable = false ;
var $name = 'ValidateProfile' ;
var $hasOne = array ( 'ValidateItem' => array ( 'className' => 'ValidateItem' , 'foreignKey' => 'profile_id' ));
var $belongsTo = array ( 'ValidateUser' => array ( 'className' => 'ValidateUser' , 'foreignKey' => 'user_id' ));
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' => 'full_name' , 'type' => 'string' , 'null' => '' , 'default' => '' , 'length' => '255' ),
array ( 'name' => 'city' , '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 )));
2007-04-26 11:52:56 +00:00
}
2007-04-29 03:10:44 +00:00
2007-06-23 07:44:39 +00:00
function beforeValidate () {
$this -> invalidate ( 'full_name' );
$this -> invalidate ( 'city' );
return false ;
}
}
2007-04-29 03:10:44 +00:00
2007-06-23 07:44:39 +00:00
class ValidateItem extends Model {
var $primaryKey = 'id' ;
var $useTable = false ;
var $name = 'ValidateItem' ;
var $belongsTo = array ( 'ValidateProfile' => array ( 'className' => 'ValidateProfile' , 'foreignKey' => 'profile_id' ));
function loadInfo () {
return new Set ( array (
array ( 'name' => 'id' , 'type' => 'integer' , 'null' => '' , 'default' => '' , 'length' => '8' ),
array ( 'name' => 'profile_id' , 'type' => 'integer' , 'null' => '' , 'default' => '' , 'length' => '8' ),
array ( 'name' => 'name' , 'type' => 'string' , 'null' => '' , 'default' => '' , 'length' => '255' ),
array ( 'name' => 'description' , '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 )));
2007-04-26 11:52:56 +00:00
}
2007-03-16 23:35:25 +00:00
2007-06-23 07:44:39 +00:00
function beforeValidate () {
$this -> invalidate ( 'description' );
return false ;
}
}
2007-02-06 17:18:23 +00:00
/**
* Short description for class .
*
2007-04-06 17:33:49 +00:00
* @ package cake . tests
* @ subpackage cake . tests . cases . libs . view . helpers
2007-02-06 17:18:23 +00:00
*/
2007-04-26 11:52:56 +00:00
class FormHelperTest extends CakeTestCase {
2007-02-06 17:18:23 +00:00
2007-06-23 08:40:52 +00:00
function setUp () {
Router :: reload ();
2007-09-16 18:32:02 +00:00
ClassRegistry :: addObject ( 'view' , $view );
ClassRegistry :: addObject ( 'Contact' , new Contact ());
ClassRegistry :: addObject ( 'OpenidUrl' , new OpenidUrl ());
ClassRegistry :: addObject ( 'UserForm' , new UserForm ());
ClassRegistry :: addObject ( 'ValidateItem' , new ValidateItem ());
ClassRegistry :: addObject ( 'ValidateUser' , new ValidateUser ());
ClassRegistry :: addObject ( 'ValidateProfile' , new ValidateProfile ());
2007-06-23 08:40:52 +00:00
}
2007-04-26 11:52:56 +00:00
function startTest ( $method ) {
2007-04-28 07:48:31 +00:00
$this -> Form =& new FormHelper ();
$this -> Form -> Html =& new HtmlHelper ();
2007-06-23 07:44:39 +00:00
$this -> Controller =& new ContactTestController ();
2007-04-28 07:48:31 +00:00
$this -> View =& new View ( $this -> Controller );
2007-02-06 17:18:23 +00:00
}
2007-04-29 03:10:44 +00:00
2007-04-28 07:48:31 +00:00
function endTest ( $method ) {
2007-04-30 09:52:37 +00:00
if ( isset ( $this -> Form )) {
unset ( $this -> Form -> Html );
unset ( $this -> Form );
}
2007-04-28 07:48:31 +00:00
unset ( $this -> Controller );
unset ( $this -> View );
}
2007-04-25 00:24:19 +00:00
2007-10-04 18:15:48 +00:00
function testFormCreateWithSecurity () {
$this -> Form -> params [ '_Token' ] = array ( 'key' => 'testKey' );
$result = $this -> Form -> create ( 'Contact' , array ( 'url' => '/contacts/add' ));
2007-10-04 19:43:32 +00:00
$this -> assertPattern ( '/^<form[^<>]*>.+$/' , $result );
2007-10-04 18:15:48 +00:00
$this -> assertPattern ( '/^<form[^<>]+method="post"[^<>]*>.+$/' , $result );
$this -> assertPattern ( '/^<form[^<>]+action="[^"]+"[^<>]*>.+$/' , $result );
$this -> assertNoPattern ( '/^<form[^<>]+[^id|method|action]=[^<>]*>/' , $result );
$this -> assertPattern ( '/<input[^<>]+type="hidden"[^<>]*\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+name="data\[__Token\]\[key\]"[^<>]*\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+value="testKey"[^<>]*\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+id="\w+"[^<>]*\/>/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|value|id]=[^<>]*>/' , $result );
$result = $this -> Form -> create ( 'Contact' , array ( 'url' => '/contacts/add' , 'id' => 'MyForm' ));
$this -> assertPattern ( '/^<form[^<>]+id="MyForm"[^<>]*>.+$/' , $result );
$this -> assertPattern ( '/^<form[^<>]+method="post"[^<>]*>.+$/' , $result );
$this -> assertPattern ( '/^<form[^<>]+action="[^"]+"[^<>]*>.+$/' , $result );
$this -> assertNoPattern ( '/^<form[^<>]+[^id|method|action]=[^<>]*>/' , $result );
$this -> assertPattern ( '/<input[^<>]+type="hidden"[^<>]*\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+name="data\[__Token\]\[key\]"[^<>]*\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+value="testKey"[^<>]*\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+id="\w+"[^<>]*\/>/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|value|id]=[^<>]*>/' , $result );
}
2007-10-04 18:16:44 +00:00
function testFormValidationAssociated () {
2007-09-16 18:32:02 +00:00
$this -> UserForm =& ClassRegistry :: getObject ( 'UserForm' );
$this -> UserForm -> OpenidUrl =& ClassRegistry :: getObject ( 'OpenidUrl' );
2007-04-25 00:24:19 +00:00
2007-07-07 23:30:40 +00:00
$data = array ( 'UserForm' => array ( 'name' => 'user' ), 'OpenidUrl' => array ( 'url' => 'http://www.cakephp.org' ));
2007-04-25 00:24:19 +00:00
2007-04-06 17:33:49 +00:00
$result = $this -> UserForm -> OpenidUrl -> create ( $data );
$this -> assertTrue ( $result );
2007-04-25 00:24:19 +00:00
2007-04-06 17:33:49 +00:00
$result = $this -> UserForm -> OpenidUrl -> validates ();
$this -> assertFalse ( $result );
2007-04-25 00:24:19 +00:00
2007-04-06 17:33:49 +00:00
$result = $this -> Form -> create ( 'UserForm' , array ( 'type' => 'post' , 'action' => 'login' ));
$this -> assertPattern ( '/^<form\s+id="[^"]+"\s+method="post"\s+action="\/user_forms\/login\/"[^>]*>$/' , $result );
2007-04-25 00:24:19 +00:00
2007-06-23 07:44:39 +00:00
$expected = array ( 'OpenidUrl' => array ( 'openid_not_registered' => 1 ));
2007-04-06 17:33:49 +00:00
$this -> assertEqual ( $this -> Form -> validationErrors , $expected );
2007-04-25 00:24:19 +00:00
2007-04-06 17:33:49 +00:00
$result = $this -> Form -> error ( 'OpenidUrl.openid_not_registered' , 'Error, not registered' , array ( 'wrap' => false ));
$this -> assertEqual ( $result , 'Error, not registered' );
2007-04-25 00:24:19 +00:00
2007-04-06 17:33:49 +00:00
unset ( $this -> UserForm -> OpenidUrl );
unset ( $this -> UserForm );
}
2007-04-29 03:10:44 +00:00
2007-10-04 18:16:44 +00:00
function testFormValidationAssociatedFirstLevel () {
2007-09-16 18:32:02 +00:00
$this -> ValidateUser =& ClassRegistry :: getObject ( 'ValidateUser' );
$this -> ValidateUser -> ValidateProfile =& ClassRegistry :: getObject ( 'ValidateProfile' );
2007-04-29 03:10:44 +00:00
2007-09-16 18:32:02 +00:00
$data = array ( 'ValidateUser' => array ( 'name' => 'mariano' ), 'ValidateProfile' => array ( 'full_name' => 'Mariano Iglesias' ));
2007-04-26 11:52:56 +00:00
2007-09-16 18:32:02 +00:00
$this -> assertTrue ( $this -> ValidateUser -> create ( $data ));
$this -> assertFalse ( $this -> ValidateUser -> validates ());
$this -> assertFalse ( $this -> ValidateUser -> ValidateProfile -> validates ());
2007-04-29 03:10:44 +00:00
2007-04-26 12:02:51 +00:00
$result = $this -> Form -> create ( 'ValidateUser' , array ( 'type' => 'post' , 'action' => 'add' ));
$this -> assertPattern ( '/^<form\s+id="[^"]+"\s+method="post"\s+action="\/validate_users\/add\/"[^>]*>$/' , $result );
2007-04-29 03:10:44 +00:00
2007-09-16 18:32:02 +00:00
$expected = array (
'ValidateUser' => array ( 'email' => 1 ),
'ValidateProfile' => array ( 'full_name' => 1 , 'city' => 1 )
);
2007-04-26 11:52:56 +00:00
$this -> assertEqual ( $this -> Form -> validationErrors , $expected );
2007-04-26 12:02:51 +00:00
unset ( $this -> ValidateUser -> ValidateProfile );
unset ( $this -> ValidateUser );
2007-04-26 11:52:56 +00:00
}
2007-04-29 03:10:44 +00:00
2007-10-04 18:16:44 +00:00
function testFormValidationAssociatedSecondLevel () {
2007-09-16 18:32:02 +00:00
$this -> ValidateUser =& ClassRegistry :: getObject ( 'ValidateUser' );
$this -> ValidateUser -> ValidateProfile =& ClassRegistry :: getObject ( 'ValidateProfile' );
$this -> ValidateUser -> ValidateProfile -> ValidateItem =& ClassRegistry :: getObject ( 'ValidateItem' );
2007-04-29 03:10:44 +00:00
2007-09-16 18:32:02 +00:00
$data = array (
'ValidateUser' => array ( 'name' => 'mariano' ),
'ValidateProfile' => array ( 'full_name' => 'Mariano Iglesias' ),
'ValidateItem' => array ( 'name' => 'Item' )
);
2007-04-26 11:52:56 +00:00
2007-09-16 18:32:02 +00:00
$this -> assertTrue ( $this -> ValidateUser -> create ( $data ));
$this -> assertFalse ( $this -> ValidateUser -> validates ());
$this -> assertFalse ( $this -> ValidateUser -> ValidateProfile -> validates ());
$this -> assertFalse ( $this -> ValidateUser -> ValidateProfile -> ValidateItem -> validates ());
2007-04-29 03:10:44 +00:00
2007-04-26 12:02:51 +00:00
$result = $this -> Form -> create ( 'ValidateUser' , array ( 'type' => 'post' , 'action' => 'add' ));
$this -> assertPattern ( '/^<form\s+id="[^"]+"\s+method="post"\s+action="\/validate_users\/add\/"[^>]*>$/' , $result );
2007-04-29 03:10:44 +00:00
2007-09-16 18:32:02 +00:00
$expected = array (
'ValidateUser' => array ( 'email' => 1 ),
'ValidateProfile' => array ( 'full_name' => 1 , 'city' => 1 ),
'ValidateItem' => array ( 'description' => 1 )
);
2007-04-26 11:52:56 +00:00
$this -> assertEqual ( $this -> Form -> validationErrors , $expected );
2007-04-29 03:10:44 +00:00
2007-04-26 12:02:51 +00:00
unset ( $this -> ValidateUser -> ValidateProfile -> ValidateItem );
unset ( $this -> ValidateUser -> ValidateProfile );
unset ( $this -> ValidateUser );
2007-04-26 11:52:56 +00:00
}
2007-02-06 17:18:23 +00:00
2007-10-04 18:16:44 +00:00
function testFormInput () {
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> input ( 'Model.field' , array ( 'type' => 'text' ));
2007-04-06 17:33:49 +00:00
$expected = '<div class="input"><label for="ModelField">Field</label><input name="data[Model][field]" type="text" value="" id="ModelField" /></div>' ;
$this -> assertEqual ( $result , $expected );
2007-02-06 17:18:23 +00:00
2007-03-16 23:35:25 +00:00
$result = $this -> Form -> input ( 'Model/password' );
2007-02-26 18:58:18 +00:00
$expected = '<div class="input"><label for="ModelPassword">Password</label><input type="password" name="data[Model][password]" value="" id="ModelPassword" /></div>' ;
$this -> assertEqual ( $result , $expected );
2007-04-01 04:55:56 +00:00
$result = $this -> Form -> input ( 'test' , array ( 'options' => array ( 'First' , 'Second' ), 'empty' => true ));
$this -> assertPattern ( '/<select [^<>]+>\s+<option value=""\s*><\/option>\s+<option value="0"/' , $result );
2007-04-25 00:24:19 +00:00
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> input ( 'Model.field' , array ( 'type' => 'file' , 'class' => 'textbox' ));
2007-04-13 11:56:03 +00:00
$this -> assertPattern ( '/class="textbox"/' , $result );
2007-04-29 03:10:44 +00:00
2007-08-11 14:47:53 +00:00
$result = $this -> Form -> input ( 'Model.field' , array ( 'type' => 'time' , 'timeFormat' => 24 ));
$result = explode ( ':' , $result );
$this -> assertPattern ( '/option value="23"/' , $result [ 0 ]);
$this -> assertNoPattern ( '/option value="24"/' , $result [ 0 ]);
$result = $this -> Form -> input ( 'Model.field' , array ( 'type' => 'time' , 'timeFormat' => 12 ));
$result = explode ( ':' , $result );
$this -> assertPattern ( '/option value="12"/' , $result [ 0 ]);
$this -> assertNoPattern ( '/option value="13"/' , $result [ 0 ]);
$result = $this -> Form -> input ( 'Model.field' , array ( 'type' => 'datetime' , 'timeFormat' => 24 ));
$result = explode ( '</select><select' , $result );
$result = explode ( ':' , $result [ 1 ]);
$this -> assertPattern ( '/option value="23"/' , $result [ 0 ]);
$this -> assertNoPattern ( '/option value="24"/' , $result [ 0 ]);
$result = $this -> Form -> input ( 'Model.field' , array ( 'type' => 'datetime' , 'timeFormat' => 12 ));
$result = explode ( '</select><select' , $result );
$result = explode ( ':' , $result [ 1 ]);
$this -> assertPattern ( '/option value="12"/' , $result [ 0 ]);
$this -> assertNoPattern ( '/option value="13"/' , $result [ 0 ]);
2007-04-28 07:48:31 +00:00
$this -> Form -> data = array ( 'Model' => array ( 'field' => 'Hello & World > weird chars' ));
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> input ( 'Model.field' );
2007-04-28 07:48:31 +00:00
$expected = '<div class="input"><label for="ModelField">Field</label><input name="data[Model][field]" type="text" value="Hello & World > weird chars" id="ModelField" /></div>' ;
$this -> assertEqual ( $result , $expected );
unset ( $this -> Form -> data );
2007-07-07 23:30:40 +00:00
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = 'Badness!' ;
$result = $this -> Form -> input ( 'Model.field' );
$expected = '<div class="input"><label for="ModelField">Field</label><input name="data[Model][field]" type="text" value="" id="ModelField" /></div>' ;
$this -> assertPattern ( '/^<div[^<>]+class="input"[^<>]*><label[^<>]+for="ModelField"[^<>]*>Field<\/label><input[^<>]+class="[^"]*form-error"[^<>]+\/><div[^<>]+class="error-message">Badness!<\/div><\/div>$/' , $result );
$result = $this -> Form -> input ( 'Model.field' , array ( 'after' => 'A message to you, Rudy' ));
$this -> assertPattern ( '/^<div[^<>]+class="input"[^<>]*><label[^<>]+for="ModelField"[^<>]*>Field<\/label><input[^<>]+class="[^"]*form-error"[^<>]+\/>A message to you, Rudy<div[^<>]+class="error-message">Badness!<\/div><\/div>$/' , $result );
$result = $this -> Form -> input ( 'Model.field' , array ( 'after' => 'A message to you, Rudy' , 'error' => false ));
$this -> assertPattern ( '/^<div[^<>]+class="input"[^<>]*><label[^<>]+for="ModelField"[^<>]*>Field<\/label><input[^<>]+class="[^"]*form-error"[^<>]+\/>A message to you, Rudy<\/div>$/' , $result );
unset ( $this -> Form -> validationErrors [ 'Model' ][ 'field' ]);
$result = $this -> Form -> input ( 'Model.field' , array ( 'after' => 'A message to you, Rudy' ));
$this -> assertPattern ( '/^<div[^<>]+class="input"[^<>]*><label[^<>]+for="ModelField"[^<>]*>Field<\/label><input[^<>]+\/>A message to you, Rudy<\/div>$/' , $result );
$this -> assertNoPattern ( '/form-error/' , $result );
$this -> assertNoPattern ( '/error-message/' , $result );
2007-10-15 07:47:13 +00:00
$this -> Form -> data = array ( 'Model' => array ( 'user_id' => 'value' ));
$view =& ClassRegistry :: getObject ( 'view' );
$view -> viewVars [ 'users' ] = array ( 'value' => 'good' , 'other' => 'bad' );
$result = $this -> Form -> input ( 'Model.user_id' , array ( 'empty' => true ));
$this -> assertPattern ( '/^<div[^<>]+class="input"[^<>]*><label[^<>]+for="ModelUserId"[^<>]*>User<\/label>/' , $result );
$this -> assertPattern ( '/<select [^<>]+>\s+<option value=""\s*><\/option>\s+<option value="value"/' , $result );
$this -> Form -> data = array ( 'User' => array ( 'User' => array ( 'value' )));
$view =& ClassRegistry :: getObject ( 'view' );
$view -> viewVars [ 'users' ] = array ( 'value' => 'good' , 'other' => 'bad' );
$result = $this -> Form -> input ( 'User.User' , array ( 'empty' => true ));
$this -> assertPattern ( '/^<div[^<>]+class="input"[^<>]*><label[^<>]+for="UserUser"[^<>]*>User<\/label>/' , $result );
$this -> assertPattern ( '/<select[^<>]+>\s+<option value=""\s*><\/option>\s+<option value="value"/' , $result );
$this -> assertPattern ( '/<select[^<>]+multiple="multiple"[^<>\/]*>/' , $result );
$this -> assertNoPattern ( '/<select[^<>]+[^name|id|multiple]=[^<>\/]*>/' , $result );
2007-02-26 18:58:18 +00:00
}
2007-10-14 23:41:05 +00:00
function testFormInputs () {
$this -> Form -> create ( 'Contact' );
$result = $this -> Form -> inputs ( 'The Legend' );
$this -> assertPattern ( '/<legend>The Legend<\/legend>/' , $result );
$this -> Form -> params [ 'prefix' ] = 'admin' ;
$this -> Form -> action = 'admin_edit' ;
$result = $this -> Form -> inputs ();
$this -> assertPattern ( '/<legend>Edit Contact<\/legend>/' , $result );
}
2007-10-04 18:16:44 +00:00
function testLabel () {
2007-03-16 23:35:25 +00:00
$this -> Form -> text ( 'Person/name' );
$result = $this -> Form -> label ();
$this -> assertEqual ( $result , '<label for="PersonName">Name</label>' );
2007-03-22 18:47:38 +00:00
$this -> Form -> text ( 'Person.name' );
$result = $this -> Form -> label ();
$this -> assertEqual ( $result , '<label for="PersonName">Name</label>' );
$this -> Form -> text ( 'Person.Name' );
$result = $this -> Form -> label ();
$this -> assertEqual ( $result , '<label for="PersonName">Name</label>' );
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> label ( 'Person.first_name' );
2007-04-29 03:10:44 +00:00
$this -> assertEqual ( $result , '<label for="PersonFirstName">First Name</label>' );
2007-03-16 23:35:25 +00:00
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> label ( 'Person.first_name' , 'Your first name' );
2007-04-29 03:10:44 +00:00
$this -> assertEqual ( $result , '<label for="PersonFirstName">Your first name</label>' );
2007-03-16 23:35:25 +00:00
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> label ( 'Person.first_name' , 'Your first name' , array ( 'class' => 'my-class' ));
2007-04-29 03:10:44 +00:00
$this -> assertEqual ( $result , '<label for="PersonFirstName" class="my-class">Your first name</label>' );
2007-03-16 23:35:25 +00:00
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> label ( 'Person.first_name' , 'Your first name' , array ( 'class' => 'my-class' , 'id' => 'LabelID' ));
2007-04-29 03:10:44 +00:00
$this -> assertEqual ( $result , '<label for="PersonFirstName" class="my-class" id="LabelID">Your first name</label>' );
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> label ( 'Person.first_name' , '' );
2007-04-29 03:10:44 +00:00
$this -> assertEqual ( $result , '<label for="PersonFirstName"></label>' );
2007-03-16 23:35:25 +00:00
}
2007-10-04 18:16:44 +00:00
function testTextbox () {
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> text ( 'Model.field' );
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[field\]"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+type="text"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value=""[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="ModelField"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|id|value]=[^<>]*>/' , $result );
2007-02-26 18:58:18 +00:00
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> text ( 'Model.field' , array ( 'type' => 'password' ));
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[field\]"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+type="password"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value=""[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="ModelField"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|id|value]=[^<>]*>/' , $result );
2007-02-26 18:58:18 +00:00
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> text ( 'Model.field' , array ( 'id' => 'theID' ));
2007-02-26 18:58:18 +00:00
$expected = '<input name="data[Model][field]" type="text" id="theID" value="" />' ;
$this -> assertEqual ( $result , $expected );
2007-03-16 23:35:25 +00:00
$this -> Form -> validationErrors [ 'Model' ][ 'text' ] = 1 ;
$this -> Form -> data [ 'Model' ][ 'text' ] = 'test' ;
$result = $this -> Form -> text ( 'Model/text' , array ( 'id' => 'theID' ));
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[text\]"[^<>]+id="theID"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value="test"[^<>]+class="form-error"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|id|value|class]=[^<>]*>/' , $result );
}
2007-10-04 18:16:44 +00:00
function testDefaultValue () {
2007-03-23 17:32:02 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = 'test' ;
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> text ( 'Model.field' , array ( 'default' => 'default value' ));
2007-03-23 17:32:02 +00:00
$this -> assertPattern ( '/^<input[^<>]+value="test"[^<>]+\/>$/' , $result );
unset ( $this -> Form -> data [ 'Model' ][ 'field' ]);
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> text ( 'Model.field' , array ( 'default' => 'default value' ));
2007-03-23 17:32:02 +00:00
$this -> assertPattern ( '/^<input[^<>]+value="default value"[^<>]+\/>$/' , $result );
}
2007-10-04 18:16:44 +00:00
function testFieldError () {
2007-03-23 16:06:48 +00:00
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = 1 ;
$result = $this -> Form -> error ( 'Model.field' );
$this -> assertEqual ( $result , '<div class="error-message">Error in field Field</div>' );
$result = $this -> Form -> error ( 'Model.field' , null , array ( 'wrap' => false ));
$this -> assertEqual ( $result , 'Error in field Field' );
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = " This field contains invalid input " ;
$result = $this -> Form -> error ( 'Model.field' , null , array ( 'wrap' => false ));
$this -> assertEqual ( $result , 'This field contains invalid input' );
$result = $this -> Form -> error ( 'Model.field' , " <strong>Badness!</strong> " , array ( 'wrap' => false ));
$this -> assertEqual ( $result , '<strong>Badness!</strong>' );
$result = $this -> Form -> error ( 'Model.field' , " <strong>Badness!</strong> " , array ( 'wrap' => false , 'escape' => true ));
$this -> assertEqual ( $result , '<strong>Badness!</strong>' );
$result = $this -> Form -> error ( 'Model.field' , " <strong>Badness!</strong> " , array ( 'wrap' => false , 'escape' => false ));
$this -> assertEqual ( $result , '<strong>Badness!</strong>' );
}
2007-10-04 18:16:44 +00:00
function testPassword () {
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> password ( 'Model.field' );
2007-03-16 23:35:25 +00:00
$expected = '<input name="data[Model][field]" type="password" value="" id="ModelField" />' ;
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[field\]"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+type="password"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value=""[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="ModelField"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|id|value]=[^<>]*>/' , $result );
$this -> Form -> validationErrors [ 'Model' ][ 'passwd' ] = 1 ;
$this -> Form -> data [ 'Model' ][ 'passwd' ] = 'test' ;
$result = $this -> Form -> password ( 'Model/passwd' , array ( 'id' => 'theID' ));
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[passwd\]"[^<>]+id="theID"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value="test"[^<>]+class="form-error"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|id|value|class]=[^<>]*>/' , $result );
}
2007-10-04 18:16:44 +00:00
function testRadio () {
2007-10-15 07:47:13 +00:00
$result = $this -> Form -> radio ( 'Model.field' , array ( 'option A' ));
$this -> assertPattern ( '/id="Field0"/' , $result );
$this -> assertNoPattern ( '/id="ModelField"/' , $result );
$this -> assertNoPattern ( '/^<fieldset><legend>Field<\/legend>$/' , $result );
$this -> assertPattern ( '/(<input[^<>]+name="data\[Model\]\[field\]"[^<>]+>.+){1}/' , $result );
2007-08-17 08:50:16 +00:00
$result = $this -> Form -> radio ( 'Model.field' , array ( 'option A' , 'option B' ));
2007-08-27 00:11:36 +00:00
$this -> assertPattern ( '/id="Field0"/' , $result );
$this -> assertPattern ( '/id="Field1"/' , $result );
2007-08-17 08:50:16 +00:00
$this -> assertNoPattern ( '/id="ModelField"/' , $result );
2007-08-17 09:15:19 +00:00
$this -> assertNoPattern ( '/checked="checked"/' , $result );
2007-10-15 07:47:13 +00:00
$this -> assertPattern ( '/^<fieldset><legend>Field<\/legend><input[^<>]+>(<input[^<>]+><label[^<>]+>option [AB]<\/label>)+<\/fieldset>$/' , $result );
2007-10-09 20:44:28 +00:00
$this -> assertPattern ( '/(<input[^<>]+name="data\[Model\]\[field\]"[^<>]+>.+){2}/' , $result );
2007-10-14 23:41:05 +00:00
2007-10-11 16:45:23 +00:00
$result = $this -> Form -> radio ( 'Model.field' , array ( 'option A' , 'option B' ), array ( 'separator' => '<br/>' ));
$this -> assertPattern ( '/id="Field0"/' , $result );
$this -> assertPattern ( '/id="Field1"/' , $result );
$this -> assertNoPattern ( '/id="ModelField"/' , $result );
$this -> assertNoPattern ( '/checked="checked"/' , $result );
2007-10-15 07:47:13 +00:00
$this -> assertPattern ( '/^<fieldset><legend>Field<\/legend><input[^<>]+><input[^<>]+><label[^<>]+>option A<\/label><br[^<>+]><input[^<>]+><label[^<>]+>option B<\/label><\/fieldset>$/' , $result );
2007-10-11 16:45:23 +00:00
$this -> assertPattern ( '/(<input[^<>]+name="data\[Model\]\[field\]"[^<>]+>.+){2}/' , $result );
2007-10-09 20:44:28 +00:00
$result = $this -> Form -> radio ( 'Model.field' , array ( '1' => 'Yes' , '0' => 'No' ), array ( 'value' => '1' ));
2007-09-07 01:22:03 +00:00
$this -> assertPattern ( '/id="Field1".*checked="checked"/' , $result );
$this -> assertPattern ( '/id="Field0"/' , $result );
2007-10-15 07:47:13 +00:00
$this -> assertPattern ( '/(<input[^<>]+name="data\[Model\]\[field\]"[^<>]+>.+){2}/' , $result );
2007-09-07 01:22:03 +00:00
2007-10-09 20:44:28 +00:00
$result = $this -> Form -> radio ( 'Model.field' , array ( '1' => 'Yes' , '0' => 'No' ), array ( 'value' => '0' ));
2007-09-07 01:22:03 +00:00
$this -> assertPattern ( '/id="Field1"/' , $result );
$this -> assertPattern ( '/id="Field0".*checked="checked"/' , $result );
2007-10-15 07:47:13 +00:00
$this -> assertPattern ( '/(<input[^<>]+name="data\[Model\]\[field\]"[^<>]+>.+){2}/' , $result );
$result = $this -> Form -> input ( 'Newsletter.subscribe' , array ( 'legend' => 'Legend title' , 'type' => 'radio' , 'options' => array ( '0' => 'Unsubscribe' , '1' => 'Subscribe' )));
$expected = '<div class="input"><fieldset><legend>Legend title</legend><input type="hidden" name="data[Newsletter][subscribe]" value="" id="NewsletterSubscribe_" /><input type="radio" name="data[Newsletter][subscribe]" id="Subscribe0" value="0" /><label for="Subscribe0">Unsubscribe</label><input type="radio" name="data[Newsletter][subscribe]" id="Subscribe1" value="1" /><label for="Subscribe1">Subscribe</label></fieldset></div>' ;
$this -> assertEqual ( $result , $expected );
$result = $this -> Form -> input ( 'Newsletter.subscribe' , array ( 'legend' => false , 'type' => 'radio' , 'options' => array ( '0' => 'Unsubscribe' , '1' => 'Subscribe' )));
$expected = '<div class="input"><input type="hidden" name="data[Newsletter][subscribe]" value="" id="NewsletterSubscribe_" /><input type="radio" name="data[Newsletter][subscribe]" id="Subscribe0" value="0" /><label for="Subscribe0">Unsubscribe</label><input type="radio" name="data[Newsletter][subscribe]" id="Subscribe1" value="1" /><label for="Subscribe1">Subscribe</label></div>' ;
$this -> assertEqual ( $result , $expected );
$result = $this -> Form -> input ( 'Newsletter.subscribe' , array ( 'legend' => 'Legend title' , 'label' => false , 'type' => 'radio' , 'options' => array ( '0' => 'Unsubscribe' , '1' => 'Subscribe' )));
$expected = '<div class="input"><fieldset><legend>Legend title</legend><input type="hidden" name="data[Newsletter][subscribe]" value="" id="NewsletterSubscribe_" /><input type="radio" name="data[Newsletter][subscribe]" id="Subscribe0" value="0" />Unsubscribe<input type="radio" name="data[Newsletter][subscribe]" id="Subscribe1" value="1" />Subscribe</fieldset></div>' ;
$this -> assertEqual ( $result , $expected );
$result = $this -> Form -> input ( 'Newsletter.subscribe' , array ( 'legend' => false , 'label' => false , 'type' => 'radio' , 'options' => array ( '0' => 'Unsubscribe' , '1' => 'Subscribe' )));
$expected = '<div class="input"><input type="hidden" name="data[Newsletter][subscribe]" value="" id="NewsletterSubscribe_" /><input type="radio" name="data[Newsletter][subscribe]" id="Subscribe0" value="0" />Unsubscribe<input type="radio" name="data[Newsletter][subscribe]" id="Subscribe1" value="1" />Subscribe</div>' ;
$this -> assertEqual ( $result , $expected );
2007-08-17 08:50:16 +00:00
}
2007-10-04 18:16:44 +00:00
function testSelect () {
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> select ( 'Model.field' , array ());
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/^<select [^<>]+>\n<option [^<>]+>/' , $result );
2007-05-25 03:16:47 +00:00
$this -> assertPattern ( '/<option value=""><\/option>/' , $result );
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/<\/select>$/' , $result );
$this -> assertPattern ( '/<select[^<>]+name="data\[Model\]\[field\]"[^<>]*>/' , $result );
$this -> assertPattern ( '/<select[^<>]+id="ModelField"[^<>]*>/' , $result );
$this -> assertNoPattern ( '/^<select[^<>]+name="[^<>]+name="[^<>]+>$/' , $result );
$this -> Form -> data = array ( 'Model' => array ( 'field' => 'value' ));
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> select ( 'Model.field' , array ( 'value' => 'good' , 'other' => 'bad' ));
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/option value=""/' , $result );
$this -> assertPattern ( '/option value="value"\s+selected="selected"/' , $result );
$this -> assertPattern ( '/option value="other"/' , $result );
$this -> assertPattern ( '/<\/option>\s+<option/' , $result );
$this -> assertPattern ( '/<\/option>\s+<\/select>/' , $result );
$this -> assertNoPattern ( '/option value="other"\s+selected="selected"/' , $result );
$this -> assertNoPattern ( '/<select[^<>]+[^name|id]=[^<>]*>/' , $result );
$this -> assertNoPattern ( '/<option[^<>]+[^value|selected]=[^<>]*>/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-05 00:34:56 +00:00
$this -> Form -> data = array ();
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> select ( 'Model.field' , array ( 'value' => 'good' , 'other' => 'bad' ));
2007-05-05 00:34:56 +00:00
$this -> assertPattern ( '/option value=""/' , $result );
$this -> assertPattern ( '/option value="value"/' , $result );
$this -> assertPattern ( '/option value="other"/' , $result );
$this -> assertPattern ( '/<\/option>\s+<option/' , $result );
$this -> assertPattern ( '/<\/option>\s+<\/select>/' , $result );
$this -> assertNoPattern ( '/option value="field"\s+selected="selected"/' , $result );
$this -> assertNoPattern ( '/option value="other"\s+selected="selected"/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> select ( 'Model.field' , array ( 'first' => 'first "html" <chars>' , 'second' => 'value' ), null , array (), false );
2007-05-05 00:34:56 +00:00
$this -> assertPattern ( '/' .
2007-08-13 20:20:01 +00:00
'<select[^>]*>\s*' .
2007-05-05 00:34:56 +00:00
'<option\s+value="first"[^>]*>first "html" <chars><\/option>\s+' .
'<option\s+value="second"[^>]*>value<\/option>\s+' .
2007-08-13 20:20:01 +00:00
'<\/select>/i' ,
$result );
2007-05-21 05:15:26 +00:00
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> select ( 'Model.field' , array ( 'first' => 'first "html" <chars>' , 'second' => 'value' ), null , array ( 'escape' => false ), false );
2007-05-05 00:34:56 +00:00
$this -> assertPattern ( '/' .
2007-08-13 20:20:01 +00:00
'<select[^>]*>\s*' .
'<option[^<>\/]+value="first"[^>]*>first "html" <chars><\/option>\s+' .
'<option[^<>\/]+value="second"[^>]*>value<\/option>\s+' .
2007-05-05 00:34:56 +00:00
'<\/select>' .
2007-08-13 20:20:01 +00:00
'/i' ,
$result );
}
2007-10-04 18:16:44 +00:00
function testSelectMultiple () {
2007-08-13 20:20:01 +00:00
$result = $this -> Form -> select ( 'Model.multi_field' , array ( 'first' , 'second' , 'third' ), null , array ( 'multiple' => true ));
$this -> assertPattern ( '/^<select[^<>]+name="data\[Model\]\[multi_field\]\[\]"[^<>\/]*>/' , $result );
$this -> assertPattern ( '/^<select[^<>]+id="ModelMultiField"[^<>\/]*>/' , $result );
$this -> assertPattern ( '/^<select[^<>]+multiple="multiple"[^<>\/]*>/' , $result );
$this -> assertNoPattern ( '/^<select[^<>]+[^name|id|multiple]=[^<>\/]*>/' , $result );
$this -> assertNoPattern ( '/option value=""/' , $result );
$this -> assertNoPattern ( '/selected/' , $result );
$this -> assertPattern ( '/<option[^<>]+value="0">first/' , $result );
$this -> assertPattern ( '/<option[^<>]+value="1">second/' , $result );
$this -> assertPattern ( '/<option[^<>]+value="2">third/' , $result );
$this -> assertNoPattern ( '/<option[^<>]+value="[^012]"[^<>\/]*>/' , $result );
$this -> assertPattern ( '/<\/select>$/' , $result );
$result = $this -> Form -> select ( 'Model.multi_field' , array ( 'first' , 'second' , 'third' ), null , array ( 'multiple' => 'multiple' ));
$this -> assertPattern ( '/^<select[^<>]+multiple="multiple"[^<>\/]*>/' , $result );
$this -> assertNoPattern ( '/^<select[^<>]+[^name|id|multiple]=[^<>\/]*>/' , $result );
$result = $this -> Form -> select ( 'Model.multi_field' , array ( 'first' , 'second' , 'third' ), array ( 0 , 1 ), array ( 'multiple' => true ));
$this -> assertPattern ( '/<option[^<>]+value="0"[^<>]+selected="selected">first/' , $result );
$this -> assertPattern ( '/<option[^<>]+value="1"[^<>]+selected="selected">second/' , $result );
$this -> assertPattern ( '/<option[^<>]+value="2">third/' , $result );
$this -> assertNoPattern ( '/<option[^<>]+value="[^012]"[^<>\/]*>/' , $result );
2007-03-16 23:35:25 +00:00
}
2007-05-25 03:16:47 +00:00
2007-10-04 18:16:44 +00:00
function testCheckbox () {
2007-07-26 14:23:38 +00:00
$result = $this -> Form -> checkbox ( 'Model.field' , array ( 'id' => 'theID' , 'value' => 'myvalue' ));
$this -> assertPattern ( '/^<input[^<>]+type="hidden"[^<>]+\/><input[^<>]+type="checkbox"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+[^type|name|id|value]=[^<>]*\/><input[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+\/><input[^<>]+[^type|name|id|value]=[^<>]*>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[field\]"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+type="hidden"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value="0"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="theID_"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+name="data\[Model\]\[field\]"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+type="checkbox"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+value="myvalue"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+id="theID"[^<>]+\/>$/' , $result );
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = 1 ;
$this -> Form -> data [ 'Model' ][ 'field' ] = 'myvalue' ;
$result = $this -> Form -> checkbox ( 'Model.field' , array ( 'id' => 'theID' , 'value' => 'myvalue' ));
$this -> assertNoPattern ( '/^<input[^<>]+[^type|name|id|value]=[^<>]*\/><input[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+\/><input[^<>]+[^type|name|id|value|class|checked]=[^<>]*>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+class="form-error"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+checked="checked"[^<>]+\/>$/' , $result );
$result = $this -> Form -> checkbox ( 'Model.field' , array ( 'value' => 'myvalue' ));
$this -> assertNoPattern ( '/^<input[^<>]+[^type|name|id|value]=[^<>]*\/><input[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+\/><input[^<>]+[^type|name|id|value|class|checked]=[^<>]*>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="ModelField_"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value="0"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+id="ModelField"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+value="myvalue"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+checked="checked"[^<>]+\/>$/' , $result );
$this -> Form -> data [ 'Model' ][ 'field' ] = '' ;
$result = $this -> Form -> checkbox ( 'Model.field' , array ( 'id' => 'theID' ));
$this -> assertPattern ( '/^<input[^<>]+value="0"[^<>]+\/><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+\/><input[^<>]+value="1"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+\/><input[^<>]+checked="checked"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+\/><input[^<>]+[^type|name|id|value|class|checked]=[^<>]*>$/' , $result );
unset ( $this -> Form -> validationErrors [ 'Model' ][ 'field' ]);
$result = $this -> Form -> checkbox ( 'Model.field' , array ( 'value' => 'myvalue' ));
$this -> assertNoPattern ( '/^<input[^<>]+[^type|name|id|value]=[^<>]*\/><input[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+\/><input[^<>]+[^type|name|id|value]=[^<>]*>$/' , $result );
$this -> assertEqual ( $result , '<input type="hidden" name="data[Model][field]" value="0" id="ModelField_" /><input type="checkbox" name="data[Model][field]" value="myvalue" id="ModelField" />' );
$result = $this -> Form -> checkbox ( 'Contact.field' , array ( 'value' => 'myvalue' ));
$this -> assertEqual ( $result , '<input type="hidden" name="data[Contact][field]" value="0" id="ContactField_" /><input type="checkbox" name="data[Contact][field]" value="myvalue" id="ContactField" />' );
$result = $this -> Form -> checkbox ( 'Model.field' );
$this -> assertEqual ( $result , '<input type="hidden" name="data[Model][field]" value="0" id="ModelField_" /><input type="checkbox" name="data[Model][field]" value="1" id="ModelField" />' );
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = 1 ;
$this -> Form -> data [ 'Contact' ][ 'published' ] = 1 ;
$result = $this -> Form -> checkbox ( 'Contact.published' , array ( 'id' => 'theID' ));
$this -> assertEqual ( $result , '<input type="hidden" name="data[Contact][published]" value="0" id="theID_" /><input type="checkbox" name="data[Contact][published]" id="theID" value="1" checked="checked" />' );
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = 1 ;
$this -> Form -> data [ 'Contact' ][ 'published' ] = 0 ;
$result = $this -> Form -> checkbox ( 'Contact.published' , array ( 'id' => 'theID' ));
$this -> assertEqual ( $result , '<input type="hidden" name="data[Contact][published]" value="0" id="theID_" /><input type="checkbox" name="data[Contact][published]" id="theID" value="1" />' );
}
2007-10-04 18:16:44 +00:00
function testMonth () {
2007-05-24 23:14:14 +00:00
$result = $this -> Form -> month ( 'Model.field' );
$this -> assertPattern ( '/' .
'<option\s+value="01"[^>]*>January<\/option>\s+' .
'<option\s+value="02"[^>]*>February<\/option>\s+' .
2007-05-25 03:16:47 +00:00
'/i' , $result );
2007-05-24 23:14:14 +00:00
}
2007-05-25 03:16:47 +00:00
2007-10-04 18:16:44 +00:00
function testDay () {
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> day ( 'Model.field' , false );
$this -> assertPattern ( '/option value="12"/' , $result );
$this -> assertPattern ( '/option value="13"/' , $result );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10 23:12:32' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> day ( 'Model.field' );
$this -> assertPattern ( '/option value="10" selected="selected"/' , $result );
$this -> assertNoPattern ( '/option value="32"/' , $result );
$this -> Form -> data [ 'Model' ][ 'field' ] = '' ;
$result = $this -> Form -> day ( 'Model.field' , '10' );
$this -> assertPattern ( '/option value="10" selected="selected"/' , $result );
$this -> assertPattern ( '/option value="23"/' , $result );
$this -> assertPattern ( '/option value="24"/' , $result );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10 23:12:32' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> day ( 'Model.field' , true );
$this -> assertPattern ( '/option value="10" selected="selected"/' , $result );
$this -> assertPattern ( '/option value="23"/' , $result );
2007-04-25 00:24:19 +00:00
2007-04-01 04:55:56 +00:00
}
2007-10-04 18:16:44 +00:00
function testHour () {
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> hour ( 'Model.field' , false );
2007-04-01 15:07:27 +00:00
$this -> assertPattern ( '/option value="12"/' , $result );
$this -> assertNoPattern ( '/option value="13"/' , $result );
2007-04-25 00:24:19 +00:00
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10 00:12:32' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> hour ( 'Model.field' , false );
$this -> assertPattern ( '/option value="12" selected="selected"/' , $result );
$this -> assertNoPattern ( '/option value="13"/' , $result );
$this -> Form -> data [ 'Model' ][ 'field' ] = '' ;
$result = $this -> Form -> hour ( 'Model.field' , true );
$this -> assertPattern ( '/option value="23"/' , $result );
$this -> assertNoPattern ( '/option value="24"/' , $result );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10 00:12:32' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> hour ( 'Model.field' , true );
2007-04-01 15:07:27 +00:00
$this -> assertPattern ( '/option value="23"/' , $result );
2007-05-25 03:16:47 +00:00
$this -> assertPattern ( '/option value="00" selected="selected"/' , $result );
2007-04-01 15:07:27 +00:00
$this -> assertNoPattern ( '/option value="24"/' , $result );
}
2007-04-25 00:24:19 +00:00
2007-10-04 18:16:44 +00:00
function testYear () {
2007-06-08 01:17:40 +00:00
2007-04-01 14:31:23 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 );
$this -> assertPattern ( '/option value="2006"/' , $result );
$this -> assertPattern ( '/option value="2007"/' , $result );
$this -> assertNoPattern ( '/option value="2005"/' , $result );
$this -> assertNoPattern ( '/option value="2008"/' , $result );
2007-05-25 03:16:47 +00:00
$this -> data [ 'Model' ][ 'field' ] = '' ;
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 , null , array ( 'class' => 'year' ));
$expecting = " <select name= \" data[Model][field_year] \" class= \" year \" id= \" ModelFieldYear \" > \n <option value= \" \" ></option> \n <option value= \" 2006 \" >2006</option> \n <option value= \" 2007 \" >2007</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 , null , array (), false );
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" 2006 \" selected= \" selected \" >2006</option> \n <option value= \" 2007 \" >2007</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
$this -> Form -> data [ 'Model' ][ 'field' ] = '' ;
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 , false );
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" \" ></option> \n <option value= \" 2006 \" >2006</option> \n <option value= \" 2007 \" >2007</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 , false , array (), false );
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" 2006 \" selected= \" selected \" >2006</option> \n <option value= \" 2007 \" >2007</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
$this -> Form -> data [ 'Model' ][ 'field' ] = '' ;
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 , 2007 );
2007-05-25 03:16:47 +00:00
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" \" ></option> \n <option value= \" 2006 \" >2006</option> \n <option value= \" 2007 \" selected= \" selected \" >2007</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10' ;
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2007 , 2007 , array (), false );
2007-05-25 03:16:47 +00:00
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" 2006 \" selected= \" selected \" >2006</option> \n <option value= \" 2007 \" >2007</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
$this -> Form -> data [ 'Model' ][ 'field' ] = '' ;
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2008 , 2007 , array (), false );
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" 2006 \" >2006</option> \n <option value= \" 2007 \" selected= \" selected \" >2007</option> \n <option value= \" 2008 \" >2008</option> \n </select> " ;
2007-05-25 03:16:47 +00:00
$this -> assertEqual ( $result , $expecting );
2007-05-30 01:21:58 +00:00
$this -> Form -> data [ 'Model' ][ 'field' ] = '2006-10-10' ;
2007-05-25 03:16:47 +00:00
$result = $this -> Form -> year ( 'Model.field' , 2006 , 2008 , null , array (), false );
$expecting = " <select name= \" data[Model][field_year] \" id= \" ModelFieldYear \" > \n <option value= \" 2006 \" selected= \" selected \" >2006</option> \n <option value= \" 2007 \" >2007</option> \n <option value= \" 2008 \" >2008</option> \n </select> " ;
$this -> assertEqual ( $result , $expecting );
2007-04-01 14:31:23 +00:00
}
2007-04-25 00:24:19 +00:00
2007-10-04 18:16:44 +00:00
function testTextArea () {
2007-03-16 23:35:25 +00:00
$this -> Form -> data = array ( 'Model' => array ( 'field' => 'some test data' ));
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> textarea ( 'Model.field' );
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/^<textarea[^<>]+name="data\[Model\]\[field\]"[^<>]+id="ModelField"/' , $result );
$this -> assertPattern ( '/^<textarea[^<>]+>some test data<\/textarea>$/' , $result );
$this -> assertNoPattern ( '/^<textarea[^<>]+value="[^<>]+>/' , $result );
$this -> assertNoPattern ( '/^<textarea[^<>]+name="[^<>]+name="[^<>]+>$/' , $result );
$this -> assertNoPattern ( '/<textarea[^<>]+[^name|id]=[^<>]*>/' , $result );
$result = $this -> Form -> textarea ( 'Model/tmp' );
$this -> assertPattern ( '/^<textarea[^<>]+name="data\[Model\]\[tmp\]"[^<>]+><\/textarea>/' , $result );
}
2007-10-04 18:16:44 +00:00
function testHiddenField () {
2007-03-16 23:35:25 +00:00
$this -> Form -> validationErrors [ 'Model' ][ 'field' ] = 1 ;
$this -> Form -> data [ 'Model' ][ 'field' ] = 'test' ;
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> hidden ( 'Model.field' , array ( 'id' => 'theID' ));
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/^<input[^<>]+type="hidden"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+name="data\[Model\]\[field\]"[^<>]+id="theID"[^<>]+value="test"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
2007-05-21 05:15:26 +00:00
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|id|value|class]=[^<>]*>/' , $result );
2007-03-16 23:35:25 +00:00
}
2007-10-04 18:16:44 +00:00
function testFileUploadField () {
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> file ( 'Model.upload' );
2007-03-16 23:35:25 +00:00
$this -> assertPattern ( '/^<input type="file"[^<>]+name="data\[Model\]\[upload\]"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input type="file"[^<>]+value=""[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input type="file"[^<>]+id="ModelUpload"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/^<input[^<>]+name="[^<>]+name="[^<>]+\/>$/' , $result );
2007-04-01 04:55:56 +00:00
$this -> assertNoPattern ( '/<input[^<>]+[^type|name|value|id]=[^<>]*>$/' , $result );
2007-03-16 23:35:25 +00:00
}
2007-10-04 18:16:44 +00:00
function testSubmitButton () {
2007-03-16 23:35:25 +00:00
$result = $this -> Form -> submit ( 'Test Submit' );
$this -> assertPattern ( '/^<div\s+class="submit"><input type="submit"[^<>]+value="Test Submit"[^<>]+\/><\/div>$/' , $result );
2007-04-25 00:24:19 +00:00
2007-03-16 23:35:25 +00:00
$result = $this -> Form -> submit ( 'Test Submit' , array ( 'class' => 'save' , 'div' => false ));
$this -> assertPattern ( '/^<input type="submit"[^<>]+value="Test Submit"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<[^<>]+class="save"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|class|value]=[^<>]*>/' , $result );
$result = $this -> Form -> submit ( 'Test Submit' , array ( 'div' => array ( 'id' => 'SaveButton' )));
$this -> assertPattern ( '/^<div[^<>]+id="SaveButton"[^<>]*><input type="submit"[^<>]+value="Test Submit"[^<>]+\/><\/div>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^type|value]=[^<>]*>/' , $result );
2007-04-29 03:10:44 +00:00
2007-04-28 07:42:54 +00:00
$result = $this -> Form -> submit ( 'Next >' );
$this -> assertPattern ( '/^<div\s+class="submit"><input type="submit"[^<>]+value="Next >"[^<>]+\/><\/div>$/' , $result );
2007-04-29 03:10:44 +00:00
2007-10-09 20:44:28 +00:00
$result = $this -> Form -> submit ( 'Next >' , array ( 'escape' => false ));
2007-04-28 07:42:54 +00:00
$this -> assertPattern ( '/^<div\s+class="submit"><input type="submit"[^<>]+value="Next >"[^<>]+\/><\/div>$/' , $result );
2007-03-16 23:35:25 +00:00
}
2007-10-04 18:16:44 +00:00
function testFormCreate () {
2007-03-16 23:35:25 +00:00
$result = $this -> Form -> create ( 'Contact' );
$this -> assertPattern ( '/^<form [^<>]+>/' , $result );
$this -> assertPattern ( '/\s+id="ContactAddForm"/' , $result );
$this -> assertPattern ( '/\s+method="post"/' , $result );
$this -> assertPattern ( '/\s+action="\/contacts\/add\/"/' , $result );
$result = $this -> Form -> create ( 'Contact' , array ( 'type' => 'GET' ));
$this -> assertPattern ( '/^<form [^<>]+method="get"[^<>]+>$/' , $result );
$result = $this -> Form -> create ( 'Contact' , array ( 'type' => 'get' ));
$this -> assertPattern ( '/^<form [^<>]+method="get"[^<>]+>$/' , $result );
$result = $this -> Form -> create ( 'Contact' , array ( 'type' => 'put' ));
$this -> assertPattern ( '/^<form [^<>]+method="post"[^<>]+>/' , $result );
$this -> Form -> data [ 'Contact' ][ 'id' ] = 1 ;
$result = $this -> Form -> create ( 'Contact' );
$this -> assertPattern ( '/^<form[^<>]+method="post"[^<>]+>/' , $result );
$this -> assertPattern ( '/^<form[^<>]+id="ContactEditForm"[^<>]+>/' , $result );
$this -> assertPattern ( '/^<form[^<>]+action="\/contacts\/edit\/1"[^<>]*>/' , $result );
$this -> assertNoPattern ( '/^<form[^<>]+[^id|method|action]=[^<>]*>/' , $result );
2007-04-29 03:10:44 +00:00
2007-04-28 09:20:35 +00:00
$result = $this -> Form -> create ( 'Contact' , array ( 'id' => 'TestId' ));
$this -> assertPattern ( '/id="TestId"/' , $result );
2007-08-15 14:18:39 +00:00
$result = $this -> Form -> create ( 'User' , array ( 'url' => array ( 'action' => 'login' )));
$this -> assertPattern ( '/id="UserAddForm"/' , $result );
2007-10-07 14:13:03 +00:00
$this -> assertPattern ( '/action="\/users\/login(\/)?"/' , $result );
2007-08-15 14:18:39 +00:00
$result = $this -> Form -> create ( 'User' , array ( 'action' => 'login' ));
$this -> assertPattern ( '/id="UserLoginForm"/' , $result );
2007-10-07 14:13:03 +00:00
$this -> assertPattern ( '/action="\/users\/login(\/)?"/' , $result );
$result = $this -> Form -> create ( 'User' , array ( 'url' => '/users/login' ));
$this -> assertPattern ( '/method="post"/' , $result );
$this -> assertPattern ( '/action="\/users\/login(\/)?"/' , $result );
$this -> assertNoPattern ( '/^<form[^<>]+[^method|action]=[^<>]*>/' , $result );
2007-03-16 23:35:25 +00:00
}
2007-05-21 05:15:26 +00:00
2007-10-09 20:44:28 +00:00
function testGetFormCreate () {
$result = $this -> Form -> create ( 'Contact' , array ( 'type' => 'get' ));
$this -> assertPattern ( '/^<form [^<>]+>/' , $result );
$this -> assertPattern ( '/\s+id="ContactAddForm"/' , $result );
$this -> assertPattern ( '/\s+method="get"/' , $result );
$this -> assertPattern ( '/\s+action="\/contacts\/add\/"/' , $result );
$this -> assertNoPattern ( '/^<form[^<>]+[^method|action|id]=[^<>]*>/' , $result );
$result = $this -> Form -> text ( 'Contact.name' );
$this -> assertPattern ( '/^<input[^<>]+name="name"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+type="text"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value=""[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="ContactName"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^id|name|type|value]=[^<>]*>$/' , $result );
$result = $this -> Form -> password ( 'password' );
$this -> assertPattern ( '/^<input[^<>]+name="password"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+type="password"[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+value=""[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/^<input[^<>]+id="ContactPassword"[^<>]+\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^id|name|type|value]=[^<>]*>$/' , $result );
}
2007-10-14 22:55:37 +00:00
function testEditFormWithData () {
$this -> Form -> data = array ( 'Person' => array (
'id' => 1 ,
'first_name' => 'Nate' ,
'last_name' => 'Abele' ,
'email' => 'nate@cakephp.org'
));
$this -> Form -> params = array (
'models' => array ( 'Person' ),
'controller' => 'people'
);
$options = array ( 1 => 'Nate' , 2 => 'Garrett' , 3 => 'Larry' );
$this -> Form -> create ();
$result = $this -> Form -> select ( 'People.People' , $options , null , array ( 'multiple' => true ));
$this -> assertPattern ( '/^<select[^<>]+>\s*(<option[^<>]+>.+<\/option>\s*){3}<\/select>$/' , $result );
$this -> assertPattern ( '/^<select[^<>]+name="data\[People\]\[People\]\[\]"[^<>]*>/' , $result );
$this -> assertPattern ( '/^<select[^<>]+multiple="multiple"[^<>]*>/' , $result );
$this -> assertPattern ( '/^<select[^<>]+id="PeoplePeople"[^<>]*>/' , $result );
$this -> assertNoPattern ( '/<select[^<>]+[^id|name|multiple]=[^<>]*>$/' , $result );
}
2007-10-04 18:16:44 +00:00
function testFormMagicInput () {
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> create ( 'Contact' );
$this -> assertPattern ( '/^<form\s+id="ContactAddForm"\s+method="post"\s+action="\/contacts\/add\/"\s*>$/' , $result );
2007-07-07 23:30:40 +00:00
$this -> assertNoPattern ( '/^<form[^<>]+[^id|method|action]=[^<>]*>/' , $result );
2007-05-21 05:15:26 +00:00
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> input ( 'name' );
2007-07-07 23:30:40 +00:00
$this -> assertPattern ( '/^<div[^<>]+><label[^<>]+>Name<\/label><input [^<>]+ \/><\/div>$/' , $result );
$this -> assertPattern ( '/^<div[^<>]+class="input">/' , $result );
$this -> assertPattern ( '/<label[^<>]+for="ContactName">/' , $result );
$this -> assertPattern ( '/<input[^<>]+name="data\[Contact\]\[name\]"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+type="text"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+maxlength="255"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+value=""[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+id="ContactName"[^<>]+\/>/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^id|maxlength|name|type|value]=[^<>]*>/' , $result );
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> input ( 'Address.street' );
2007-09-16 18:32:02 +00:00
$this -> assertPattern ( '/^<div\s+[^<>]+><label\s+[^<>]+>[^<>]+<\/label><input\s+[^<>]+\/><\/div>$/' , $result );
$this -> assertPattern ( '/<div\s+class="input">/' , $result );
$this -> assertPattern ( '/<label\s+for="AddressStreet">Street<\/label>/' , $result );
$this -> assertPattern ( '/<input[^<>]+name="data\[Address\]\[street\]"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+type="text"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+value=""[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+id="AddressStreet"[^<>]+\/>/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^id|name|type|value]=[^<>]*>/' , $result );
2007-05-21 05:15:26 +00:00
2007-06-08 01:17:40 +00:00
$result = $this -> Form -> input ( 'name' , array ( 'div' => false ));
2007-09-16 18:32:02 +00:00
$this -> assertPattern ( '/^<label\s+[^<>]+>Name<\/label><input\s+[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/<label[^<>]+for="ContactName"[^<>]*>Name<\/label>/' , $result );
$this -> assertNoPattern ( '/<label[^<>]+[^for]=[^<>]*>/' , $result );
$this -> assertPattern ( '/<input[^<>]+name="data\[Contact\]\[name\]"[^<>]*\/>$/' , $result );
$this -> assertPattern ( '/<input[^<>]+type="text"[^<>]*\/>$/' , $result );
$this -> assertPattern ( '/<input[^<>]+maxlength="255"[^<>]*\/>$/' , $result );
$this -> assertPattern ( '/<input[^<>]+value=""[^<>]*\/>$/' , $result );
$this -> assertPattern ( '/<input[^<>]+id="ContactName"[^<>]*\/>$/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^id|maxlength|name|type|value]=[^<>]*>/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.non_existing' );
$this -> assertPattern ( '/^<div class="input">' .
'<label for="ContactNonExisting">Non Existing<\/label>' .
'<input name="data\[Contact\]\[non_existing\]" type="text" value="" id="ContactNonExisting" \/>' .
'<\/div>$/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.published' , array ( 'div' => false ));
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$this -> assertPattern ( '/^<label for="ContactPublishedMonth">Published<\/label>' .
'<select name="data\[Contact\]\[published_month\]"\s+id="ContactPublishedMonth">/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.updated' , array ( 'div' => false ));
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$this -> assertPattern ( '/^<label for="ContactUpdatedMonth">Updated<\/label>' .
'<select name="data\[Contact\]\[updated_month\]"\s+id="ContactUpdatedMonth">/' , $result );
}
2007-05-21 05:15:26 +00:00
2007-10-04 18:16:44 +00:00
function testFormMagicInputLabel () {
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> create ( 'Contact' );
$this -> assertPattern ( '/^<form\s+id="ContactAddForm"\s+method="post"\s+action="\/contacts\/add\/"\s*>$/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.name' , array ( 'div' => false , 'label' => false ));
$this -> assertPattern ( '/^<input name="data\[Contact\]\[name\]" type="text" maxlength="255" value="" id="ContactName" \/>$/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.name' , array ( 'div' => false , 'label' => 'My label' ));
$this -> assertPattern ( '/^<label for="ContactName">My label<\/label>' .
'<input name="data\[Contact\]\[name\]" type="text" maxlength="255" value="" id="ContactName" \/>$/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.name' , array ( 'div' => false , 'label' => array ( 'class' => 'mandatory' )));
2007-09-16 18:32:02 +00:00
$this -> assertPattern ( '/^<label[^<>]+>Name<\/label><input [^<>]+ \/>$/' , $result );
$this -> assertPattern ( '/<label[^<>]+for="ContactName"[^<>]*>/' , $result );
$this -> assertPattern ( '/<label[^<>]+class="mandatory"[^<>]*>/' , $result );
$this -> assertPattern ( '/<input[^<>]+name="data\[Contact\]\[name\]"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+type="text"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+maxlength="255"[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+value=""[^<>]+\/>/' , $result );
$this -> assertPattern ( '/<input[^<>]+id="ContactName"[^<>]+\/>/' , $result );
$this -> assertNoPattern ( '/<input[^<>]+[^name|type|maxlength|value|id]=[^<>]*>/' , $result );
$this -> assertNoPattern ( '/^<label[^<>]+[^for|class]=[^<>]*>/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.name' , array ( 'div' => false , 'label' => array ( 'class' => 'mandatory' , 'text' => 'My label' )));
2007-09-16 18:32:02 +00:00
$this -> assertPattern ( '/^<label[^<>]+>My label<\/label><input[^<>]+\/>$/' , $result );
$this -> assertPattern ( '/<label[^<>]+for="ContactName"[^<>]*>/' , $result );
$this -> assertPattern ( '/<label[^<>]+class="mandatory"[^<>]*>/' , $result );
$this -> assertNoPattern ( '/^<label[^<>]+[^for|class]=[^<>]*>/' , $result );
2007-05-21 05:15:26 +00:00
2007-05-13 12:07:23 +00:00
$result = $this -> Form -> input ( 'Contact.name' , array ( 'div' => false , 'id' => 'my_id' , 'label' => array ( 'for' => 'my_id' )));
$this -> assertPattern ( '/^<label for="my_id">Name<\/label>' .
'<input name="data\[Contact\]\[name\]" type="text" id="my_id" maxlength="255" value="" \/>$/' , $result );
}
2007-03-16 23:35:25 +00:00
2007-10-04 18:16:44 +00:00
function testSetFormTag () {
2007-09-16 18:32:02 +00:00
$controller = null ;
new View ( $controller );
$this -> Form -> setFormTag ( 'Model.field' );
}
2007-10-04 18:16:44 +00:00
function testFormEnd () {
2007-03-16 23:35:25 +00:00
$this -> assertEqual ( $this -> Form -> end (), '</form>' );
2007-05-25 03:16:47 +00:00
2007-05-24 21:44:05 +00:00
$result = $this -> Form -> end ( 'save' );
$this -> assertEqual ( $result , '<div class="submit"><input type="submit" value="save" /></div></form>' );
2007-05-25 03:16:47 +00:00
2007-05-02 12:56:51 +00:00
$result = $this -> Form -> end ( array ( 'submit' => 'save' ));
$this -> assertEqual ( $result , '<div class="submit"><input type="submit" value="save" /></div></form>' );
2007-02-06 17:18:23 +00:00
}
2007-05-25 03:16:47 +00:00
2007-02-06 17:18:23 +00:00
function tearDown () {
2007-09-16 18:32:02 +00:00
ClassRegistry :: removeObject ( 'view' );
ClassRegistry :: removeObject ( 'Contact' );
ClassRegistry :: removeObject ( 'OpenidUrl' );
ClassRegistry :: removeObject ( 'UserForm' );
ClassRegistry :: removeObject ( 'ValidateItem' );
ClassRegistry :: removeObject ( 'ValidateUser' );
ClassRegistry :: removeObject ( 'ValidateProfile' );
2007-03-16 23:35:25 +00:00
unset ( $this -> Form );
2007-02-06 17:18:23 +00:00
}
}
2007-09-16 18:32:02 +00:00
2007-06-23 07:44:39 +00:00
?>