2008-05-30 11:40:08 +00:00
< ? php
/* SVN FILE: $Id$ */
/**
* Short description for file .
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP ( tm ) Tests < https :// trac . cakephp . org / wiki / Developement / TestSuite >
2008-10-30 17:30:26 +00:00
* Copyright 2005 - 2008 , Cake Software Foundation , Inc . ( http :// www . cakefoundation . org )
2008-05-30 11:40:08 +00:00
*
* Licensed under The Open Group Test Suite License
* Redistributions of files must retain the above copyright notice .
*
* @ filesource
2008-10-30 17:30:26 +00:00
* @ copyright Copyright 2005 - 2008 , Cake Software Foundation , Inc . ( http :// www . cakefoundation . org )
* @ link https :// trac . cakephp . org / wiki / Developement / TestSuite CakePHP ( tm ) Tests
* @ package cake . tests
* @ subpackage cake . tests . cases . libs . model
* @ since CakePHP ( tm ) v 1.2 . 0.4206
* @ version $Revision $
* @ modifiedby $LastChangedBy $
* @ lastmodified $Date $
* @ license http :// www . opensource . org / licenses / opengroup . php The Open Group Test Suite License
2008-05-30 11:40:08 +00:00
*/
App :: import ( 'Core' , array ( 'AppModel' , 'Model' ));
require_once dirname ( __FILE__ ) . DS . 'models.php' ;
/**
* Short description for class .
*
2008-10-30 17:30:26 +00:00
* @ package cake . tests
* @ subpackage cake . tests . cases . libs . model
2008-05-30 11:40:08 +00:00
*/
class ModelTest extends CakeTestCase {
2008-06-02 19:22:55 +00:00
/**
* autoFixtures property
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var bool false
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $autoFixtures = false ;
2008-06-02 19:22:55 +00:00
/**
* fixtures property
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ var array
* @ access public
*/
2008-05-30 11:40:08 +00:00
var $fixtures = array (
2008-11-09 03:20:14 +00:00
'core.category' , 'core.category_thread' , 'core.user' , 'core.my_category' , 'core.my_product' ,
'core.my_user' , 'core.my_categories_my_users' , 'core.my_categories_my_products' ,
'core.article' , 'core.featured' , 'core.article_featureds_tags' , 'core.article_featured' ,
'core.articles' , 'core.numeric_article' , 'core.tag' , 'core.articles_tag' , 'core.comment' ,
'core.attachment' , 'core.apple' , 'core.sample' , 'core.another_article' , 'core.item' ,
'core.advertisement' , 'core.home' , 'core.post' , 'core.author' , 'core.bid' , 'core.portfolio' ,
'core.product' , 'core.project' , 'core.thread' , 'core.message' , 'core.items_portfolio' ,
'core.syfile' , 'core.image' , 'core.device_type' , 'core.device_type_category' ,
'core.feature_set' , 'core.exterior_type_category' , 'core.document' , 'core.device' ,
'core.document_directory' , 'core.primary_model' , 'core.secondary_model' , 'core.something' ,
'core.something_else' , 'core.join_thing' , 'core.join_a' , 'core.join_b' , 'core.join_c' ,
'core.join_a_b' , 'core.join_a_c' , 'core.uuid' , 'core.data_test' , 'core.posts_tag' ,
'core.the_paper_monkies' , 'core.person' , 'core.underscore_field' , 'core.node' ,
'core.dependency' , 'core.story' , 'core.stories_tag' , 'core.cd' , 'core.book' , 'core.basket' ,
'core.overall_favorite' , 'core.account' , 'core.content' , 'core.content_account' ,
'core.film_file' , 'core.test_plugin_article' , 'core.test_plugin_comment' , 'core.uuiditem' ,
2008-11-09 20:55:51 +00:00
'core.uuidportfolio' , 'core.uuiditems_uuidportfolio' , 'core.uuiditems_uuidportfolio_numericid'
2008-05-30 11:40:08 +00:00
);
2008-06-02 19:22:55 +00:00
/**
* start method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function start () {
parent :: start ();
$this -> debug = Configure :: read ( 'debug' );
Configure :: write ( 'debug' , 2 );
}
2008-06-02 19:22:55 +00:00
/**
* end method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function end () {
parent :: end ();
Configure :: write ( 'debug' , $this -> debug );
}
2008-06-02 19:22:55 +00:00
/**
* testAutoConstructAssociations method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAutoConstructAssociations () {
2008-10-14 23:28:22 +00:00
$this -> loadFixtures ( 'User' , 'ArticleFeatured' );
2008-05-30 11:40:08 +00:00
$TestModel =& new AssociationTest1 ();
$result = $TestModel -> hasAndBelongsToMany ;
$expected = array ( 'AssociationTest2' => array (
'unique' => false , 'joinTable' => 'join_as_join_bs' , 'foreignKey' => false ,
'className' => 'AssociationTest2' , 'with' => 'JoinAsJoinB' ,
'associationForeignKey' => 'join_b_id' , 'conditions' => '' , 'fields' => '' ,
'order' => '' , 'limit' => '' , 'offset' => '' , 'finderQuery' => '' ,
'deleteQuery' => '' , 'insertQuery' => ''
));
$this -> assertEqual ( $result , $expected );
2008-10-14 23:28:22 +00:00
// Tests related to ticket https://trac.cakephp.org/ticket/5594
$TestModel =& new ArticleFeatured ();
$TestFakeModel =& new ArticleFeatured ( array ( 'table' => false ));
$expected = array (
'User' => array (
'className' => 'User' , 'foreignKey' => 'user_id' ,
'conditions' => '' , 'fields' => '' , 'order' => '' , 'counterCache' => ''
),
'Category' => array (
'className' => 'Category' , 'foreignKey' => 'category_id' ,
'conditions' => '' , 'fields' => '' , 'order' => '' , 'counterCache' => ''
)
);
$this -> assertIdentical ( $TestModel -> belongsTo , $expected );
$this -> assertIdentical ( $TestFakeModel -> belongsTo , $expected );
$this -> assertEqual ( $TestModel -> User -> name , 'User' );
$this -> assertEqual ( $TestFakeModel -> User -> name , 'User' );
$this -> assertEqual ( $TestModel -> Category -> name , 'Category' );
$this -> assertEqual ( $TestFakeModel -> Category -> name , 'Category' );
$expected = array (
'Featured' => array (
'className' => 'Featured' , 'foreignKey' => 'article_featured_id' ,
'conditions' => '' , 'fields' => '' , 'order' => '' , 'dependent' => ''
)
);
$this -> assertIdentical ( $TestModel -> hasOne , $expected );
$this -> assertIdentical ( $TestFakeModel -> hasOne , $expected );
$this -> assertEqual ( $TestModel -> Featured -> name , 'Featured' );
$this -> assertEqual ( $TestFakeModel -> Featured -> name , 'Featured' );
$expected = array (
'Comment' => array (
2008-11-09 03:20:14 +00:00
'className' => 'Comment' , 'dependent' => true ,
'foreignKey' => 'article_featured_id' , 'conditions' => '' , 'fields' => '' ,
'order' => '' , 'limit' => '' , 'offset' => '' , 'exclusive' => '' ,
'finderQuery' => '' , 'counterQuery' => ''
2008-10-14 23:28:22 +00:00
)
);
$this -> assertIdentical ( $TestModel -> hasMany , $expected );
$this -> assertIdentical ( $TestFakeModel -> hasMany , $expected );
$this -> assertEqual ( $TestModel -> Comment -> name , 'Comment' );
$this -> assertEqual ( $TestFakeModel -> Comment -> name , 'Comment' );
$expected = array (
'Tag' => array (
2008-11-09 03:20:14 +00:00
'className' => 'Tag' , 'joinTable' => 'article_featureds_tags' ,
'with' => 'ArticleFeaturedsTag' , 'foreignKey' => 'article_featured_id' ,
'associationForeignKey' => 'tag_id' , 'conditions' => '' , 'fields' => '' ,
'order' => '' , 'limit' => '' , 'offset' => '' , 'unique' => true , 'finderQuery' => '' ,
'deleteQuery' => '' , 'insertQuery' => ''
2008-10-14 23:28:22 +00:00
)
);
$this -> assertIdentical ( $TestModel -> hasAndBelongsToMany , $expected );
$this -> assertIdentical ( $TestFakeModel -> hasAndBelongsToMany , $expected );
$this -> assertEqual ( $TestModel -> Tag -> name , 'Tag' );
$this -> assertEqual ( $TestFakeModel -> Tag -> name , 'Tag' );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testColumnTypeFetching method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testColumnTypeFetching () {
$model =& new Test ();
$this -> assertEqual ( $model -> getColumnType ( 'id' ), 'integer' );
$this -> assertEqual ( $model -> getColumnType ( 'notes' ), 'text' );
$this -> assertEqual ( $model -> getColumnType ( 'updated' ), 'datetime' );
$this -> assertEqual ( $model -> getColumnType ( 'unknown' ), null );
$model =& new Article ();
$this -> assertEqual ( $model -> getColumnType ( 'User.created' ), 'datetime' );
$this -> assertEqual ( $model -> getColumnType ( 'Tag.id' ), 'integer' );
$this -> assertEqual ( $model -> getColumnType ( 'Article.id' ), 'integer' );
}
2008-06-02 19:22:55 +00:00
/**
* testMultipleBelongsToWithSameClass method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testMultipleBelongsToWithSameClass () {
2008-11-09 03:20:14 +00:00
$this -> loadFixtures (
'DeviceType' , 'DeviceTypeCategory' , 'FeatureSet' , 'ExteriorTypeCategory' ,
'Document' , 'Device' , 'DocumentDirectory'
);
2008-05-30 11:40:08 +00:00
$DeviceType =& new DeviceType ();
$DeviceType -> recursive = 2 ;
$result = $DeviceType -> read ( null , 1 );
$expected = array (
'DeviceType' => array (
2008-11-09 03:20:14 +00:00
'id' => 1 , 'device_type_category_id' => 1 , 'feature_set_id' => 1 ,
'exterior_type_category_id' => 1 , 'image_id' => 1 , 'extra1_id' => 1 ,
'extra2_id' => 1 , 'name' => 'DeviceType 1' , 'order' => 0
2008-05-30 11:40:08 +00:00
),
'Image' => array ( 'id' => 1 , 'document_directory_id' => 1 , 'name' => 'Document 1' ,
'DocumentDirectory' => array ( 'id' => 1 , 'name' => 'DocumentDirectory 1' )),
'Extra1' => array (
'id' => 1 , 'document_directory_id' => 1 , 'name' => 'Document 1' ,
'DocumentDirectory' => array ( 'id' => 1 , 'name' => 'DocumentDirectory 1' )
),
'Extra2' => array (
'id' => 1 , 'document_directory_id' => 1 , 'name' => 'Document 1' ,
'DocumentDirectory' => array ( 'id' => 1 , 'name' => 'DocumentDirectory 1' )
),
'DeviceTypeCategory' => array ( 'id' => 1 , 'name' => 'DeviceTypeCategory 1' ),
'FeatureSet' => array ( 'id' => 1 , 'name' => 'FeatureSet 1' ),
'ExteriorTypeCategory' => array (
'id' => 1 , 'image_id' => 1 , 'name' => 'ExteriorTypeCategory 1' ,
'Image' => array ( 'id' => 1 , 'device_type_id' => 1 , 'name' => 'Device 1' , 'typ' => 1 )
),
'Device' => array (
array ( 'id' => 1 , 'device_type_id' => 1 , 'name' => 'Device 1' , 'typ' => 1 ),
array ( 'id' => 2 , 'device_type_id' => 1 , 'name' => 'Device 2' , 'typ' => 1 ),
array ( 'id' => 3 , 'device_type_id' => 1 , 'name' => 'Device 3' , 'typ' => 2 )
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testHabtmRecursiveBelongsTo method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testHabtmRecursiveBelongsTo () {
$this -> loadFixtures ( 'Portfolio' , 'Item' , 'ItemsPortfolio' , 'Syfile' , 'Image' );
$Portfolio =& new Portfolio ();
$result = $Portfolio -> find ( array ( 'id' => 2 ), null , null , 3 );
$expected = array ( 'Portfolio' => array (
'id' => 2 , 'seller_id' => 1 , 'name' => 'Portfolio 2' ),
'Item' => array (
2008-11-09 03:20:14 +00:00
array (
'id' => 2 , 'syfile_id' => 2 , 'published' => 0 , 'name' => 'Item 2' ,
'ItemsPortfolio' => array ( 'id' => 2 , 'item_id' => 2 , 'portfolio_id' => 2 ),
'Syfile' => array (
'id' => 2 , 'image_id' => 2 , 'name' => 'Syfile 2' , 'item_count' => null ,
'Image' => array ( 'id' => 2 , 'name' => 'Image 2'
))
),
array (
'id' => 6 , 'syfile_id' => 6 , 'published' => 0 , 'name' => 'Item 6' ,
'ItemsPortfolio' => array ( 'id' => 6 , 'item_id' => 6 , 'portfolio_id' => 2 ),
'Syfile' => array (
'id' => 6 , 'image_id' => null , 'name' => 'Syfile 6' , 'item_count' => null ,
'Image' => array ()
)
)
));
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , $expected );
}
2008-10-23 13:29:32 +00:00
/**
2008-11-09 20:55:51 +00:00
* testHabtmUuidWithUuidId method
2008-10-23 13:29:32 +00:00
*
* @ access public
* @ return void
*/
2008-11-09 20:55:51 +00:00
function testHabtmUuidWithUuidId () {
2008-10-23 13:29:32 +00:00
$this -> loadFixtures ( 'Uuidportfolio' , 'Uuiditem' , 'UuiditemsUuidportfolio' );
2008-11-09 20:55:51 +00:00
$TestModel =& new Uuidportfolio ();
2008-10-23 13:29:32 +00:00
2008-11-09 20:55:51 +00:00
$data = array ( 'Uuidportfolio' => array ( 'name' => 'Portfolio 3' ));
$data [ 'Uuiditem' ][ 'Uuiditem' ] = array ( '483798c8-c7cc-430e-8cf9-4fcc40cf8569' );
$TestModel -> create ( $data );
$TestModel -> save ();
$id = $TestModel -> id ;
$result = $TestModel -> read ( null , $id );
2008-10-23 13:29:32 +00:00
$this -> assertEqual ( 1 , count ( $result [ 'Uuiditem' ]));
}
2008-11-09 20:55:51 +00:00
/**
* testHabtmUuidWithNumericId method
*
* @ access public
* @ return void
*/
function testHabtmUuidWithNumericId () {
$this -> loadFixtures ( 'Uuidportfolio' , 'Uuiditem' , 'UuiditemsUuidportfolioNumericid' );
$TestModel =& new Uuiditem ();
$data = array ( 'Uuiditem' => array ( 'name' => 'Item 7' ));
$data [ 'Uuidportfolio' ][ 'Uuidportfolio' ] = array ( '480af662-eb8c-47d3-886b-230540cf8569' );
$TestModel -> create ( $data );
$TestModel -> save ();
$id = $TestModel -> id ;
$result = $TestModel -> read ( null , $id );
$this -> assertEqual ( 1 , count ( $result [ 'Uuidportfolio' ]));
}
2008-06-02 19:22:55 +00:00
/**
* testHabtmFinderQuery method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testHabtmFinderQuery () {
$this -> loadFixtures ( 'Article' , 'Tag' , 'ArticlesTag' );
$Article =& new Article ();
$sql = $this -> db -> buildStatement (
array (
2008-11-09 03:20:14 +00:00
'fields' => $this -> db -> fields ( $Article -> Tag , null , array (
'Tag.id' , 'Tag.tag' , 'ArticlesTag.article_id' , 'ArticlesTag.tag_id'
)),
2008-05-30 11:40:08 +00:00
'table' => $this -> db -> fullTableName ( 'tags' ),
'alias' => 'Tag' ,
'limit' => null ,
'offset' => null ,
2008-05-31 12:36:38 +00:00
'group' => null ,
2008-05-30 11:40:08 +00:00
'joins' => array ( array (
'alias' => 'ArticlesTag' ,
'table' => $this -> db -> fullTableName ( 'articles_tags' ),
'conditions' => array (
array ( " ArticlesTag.article_id " => '{$__cakeID__$}' ),
2008-05-31 12:36:38 +00:00
array ( " ArticlesTag.tag_id " => $this -> db -> identifier ( 'Tag.id' ))
2008-05-30 11:40:08 +00:00
)
)),
'conditions' => array (),
2008-05-31 12:36:38 +00:00
'order' => null
2008-05-30 11:40:08 +00:00
),
$Article
);
$Article -> hasAndBelongsToMany [ 'Tag' ][ 'finderQuery' ] = $sql ;
$result = $Article -> find ( 'first' );
$expected = array ( array ( 'id' => '1' , 'tag' => 'tag1' ), array ( 'id' => '2' , 'tag' => 'tag2' ));
$this -> assertEqual ( $result [ 'Tag' ], $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testHabtmLimitOptimization method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testHabtmLimitOptimization () {
$this -> loadFixtures ( 'Article' , 'User' , 'Comment' , 'Tag' , 'ArticlesTag' );
$TestModel =& new Article ();
$TestModel -> hasAndBelongsToMany [ 'Tag' ][ 'limit' ] = 2 ;
$result = $TestModel -> read ( null , 2 );
$expected = array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Comment' => array (
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$TestModel -> hasAndBelongsToMany [ 'Tag' ][ 'limit' ] = 1 ;
$result = $TestModel -> read ( null , 2 );
unset ( $expected [ 'Tag' ][ 1 ]);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testHabtmUniqueKey method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testHabtmUniqueKey () {
$model =& new Item ();
$this -> assertFalse ( $model -> hasAndBelongsToMany [ 'Portfolio' ][ 'unique' ]);
}
2008-06-02 19:22:55 +00:00
/**
* testHasManyLimitOptimization method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testHasManyLimitOptimization () {
$this -> loadFixtures ( 'Project' , 'Thread' , 'Message' , 'Bid' );
$Project =& new Project ();
$Project -> recursive = 3 ;
$result = $Project -> find ( 'all' );
$expected = array (
array ( 'Project' => array ( 'id' => 1 , 'name' => 'Project 1' ),
2008-06-15 09:08:50 +00:00
'Thread' => array (
array (
'id' => 1 , 'project_id' => 1 , 'name' => 'Project 1, Thread 1' ,
'Project' => array (
'id' => 1 , 'name' => 'Project 1' ,
'Thread' => array (
array ( 'id' => 1 , 'project_id' => 1 , 'name' => 'Project 1, Thread 1' ),
array ( 'id' => 2 , 'project_id' => 1 , 'name' => 'Project 1, Thread 2' )
)
),
'Message' => array (
array (
'id' => 1 , 'thread_id' => 1 , 'name' => 'Thread 1, Message 1' ,
'Bid' => array ( 'id' => 1 , 'message_id' => 1 , 'name' => 'Bid 1.1' )
)
)
),
array (
'id' => 2 , 'project_id' => 1 , 'name' => 'Project 1, Thread 2' ,
'Project' => array (
'id' => 1 , 'name' => 'Project 1' ,
'Thread' => array (
array ( 'id' => 1 , 'project_id' => 1 , 'name' => 'Project 1, Thread 1' ),
array ( 'id' => 2 , 'project_id' => 1 , 'name' => 'Project 1, Thread 2' )
)
),
'Message' => array (
array (
'id' => 2 , 'thread_id' => 2 , 'name' => 'Thread 2, Message 1' ,
'Bid' => array ( 'id' => 4 , 'message_id' => 2 , 'name' => 'Bid 2.1' )
)
)
)
)
),
2008-05-30 11:40:08 +00:00
array ( 'Project' => array ( 'id' => 2 , 'name' => 'Project 2' ),
2008-06-15 09:08:50 +00:00
'Thread' => array (
array (
'id' => 3 , 'project_id' => 2 , 'name' => 'Project 2, Thread 1' ,
'Project' => array (
'id' => 2 , 'name' => 'Project 2' ,
'Thread' => array (
array ( 'id' => 3 , 'project_id' => 2 , 'name' => 'Project 2, Thread 1' ),
)
),
'Message' => array (
array (
'id' => 3 , 'thread_id' => 3 , 'name' => 'Thread 3, Message 1' ,
'Bid' => array ( 'id' => 3 , 'message_id' => 3 , 'name' => 'Bid 3.1' )
)
)
)
)
),
2008-05-30 11:40:08 +00:00
array ( 'Project' => array ( 'id' => 3 , 'name' => 'Project 3' ),
2008-06-15 09:08:50 +00:00
'Thread' => array ()
)
);
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testWithAssociation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testWithAssociation () {
$this -> loadFixtures ( 'Something' , 'SomethingElse' , 'JoinThing' );
$TestModel =& new Something ();
$result = $TestModel -> SomethingElse -> find ( 'all' );
$expected = array (
array ( 'SomethingElse' => array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'Something' => array ( array ( 'id' => '3' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ,
'JoinThing' => array ( 'id' => '3' , 'something_id' => '3' , 'something_else_id' => '1' , 'doomed' => '1' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' )))),
array ( 'SomethingElse' => array ( 'id' => '2' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'Something' => array ( array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ,
'JoinThing' => array ( 'id' => '1' , 'something_id' => '1' , 'something_else_id' => '2' , 'doomed' => '1' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )))),
array ( 'SomethingElse' => array ( 'id' => '3' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'Something' => array ( array ( 'id' => '2' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ,
'JoinThing' => array ( 'id' => '2' , 'something_id' => '2' , 'something_else_id' => '3' , 'doomed' => '0' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )))));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> find ( 'all' );
$expected = array (
array ( 'Something' => array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'SomethingElse' => array (
array ( 'id' => '2' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ,
'JoinThing' => array ( 'doomed' => '1' , 'something_id' => '1' , 'something_else_id' => '2' )))),
array ( 'Something' => array ( 'id' => '2' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'SomethingElse' => array (
array ( 'id' => '3' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ,
'JoinThing' => array ( 'doomed' => '0' , 'something_id' => '2' , 'something_else_id' => '3' )))),
array ( 'Something' => array ( 'id' => '3' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'SomethingElse' => array (
array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ,
'JoinThing' => array ( 'doomed' => '1' , 'something_id' => '3' , 'something_else_id' => '1' )))));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> findById ( 1 );
$expected = array (
'Something' => array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'SomethingElse' => array ( array ( 'id' => '2' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ,
'JoinThing' => array ( 'doomed' => '1' , 'something_id' => '1' , 'something_else_id' => '2' ))));
$this -> assertEqual ( $result , $expected );
$TestModel -> hasAndBelongsToMany [ 'SomethingElse' ][ 'unique' ] = false ;
$TestModel -> create ( array (
'Something' => array ( 'id' => 1 ),
'SomethingElse' => array ( 3 , array ( 'something_else_id' => 1 , 'doomed' => '1' ))
));
$ts = date ( 'Y-m-d H:i:s' );
$TestModel -> save ();
$TestModel -> hasAndBelongsToMany [ 'SomethingElse' ][ 'order' ] = 'SomethingElse.id ASC' ;
$result = $TestModel -> findById ( 1 );
$expected = array (
'Something' => array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => $ts ),
'SomethingElse' => array (
array ( 'id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ,
'JoinThing' => array ( 'doomed' => '1' , 'something_id' => '1' , 'something_else_id' => '1' )),
array ( 'id' => '2' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ,
'JoinThing' => array ( 'doomed' => '1' , 'something_id' => '1' , 'something_else_id' => '2' )),
array ( 'id' => '3' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ,
'JoinThing' => array ( 'doomed' => '0' , 'something_id' => '1' , 'something_else_id' => '3' ))));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testDynamicAssociations method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDynamicAssociations () {
$this -> loadFixtures ( 'Article' , 'Comment' );
$TestModel =& new Article ();
$TestModel -> belongsTo = $TestModel -> hasAndBelongsToMany = $TestModel -> hasOne = array ();
$TestModel -> hasMany [ 'Comment' ] = array_merge ( $TestModel -> hasMany [ 'Comment' ], array (
'foreignKey' => false ,
2008-05-31 12:36:38 +00:00
'conditions' => array ( 'Comment.user_id =' => '2' )
2008-05-30 11:40:08 +00:00
));
$result = $TestModel -> find ( 'all' );
$expected = array (
array (
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )
)
),
array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )
)
),
array (
'Article' => array ( 'id' => '3' , 'user_id' => '1' , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )
)
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveMultipleHabtm method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveMultipleHabtm () {
$this -> loadFixtures ( 'JoinA' , 'JoinB' , 'JoinC' , 'JoinAB' , 'JoinAC' );
$TestModel = new JoinA ();
$result = $TestModel -> findById ( 1 );
$expected = array (
'JoinA' => array ( 'id' => 1 , 'name' => 'Join A 1' , 'body' => 'Join A 1 Body' , 'created' => '2008-01-03 10:54:23' , 'updated' => '2008-01-03 10:54:23' ),
'JoinB' => array (
0 => array ( 'id' => 2 , 'name' => 'Join B 2' , 'created' => '2008-01-03 10:55:02' , 'updated' => '2008-01-03 10:55:02' ,
'JoinAsJoinB' => array ( 'id' => 1 , 'join_a_id' => 1 , 'join_b_id' => 2 , 'other' => 'Data for Join A 1 Join B 2' , 'created' => '2008-01-03 10:56:33' , 'updated' => '2008-01-03 10:56:33' ))),
'JoinC' => array (
0 => array ( 'id' => 2 , 'name' => 'Join C 2' , 'created' => '2008-01-03 10:56:12' , 'updated' => '2008-01-03 10:56:12' ,
'JoinAsJoinC' => array ( 'id' => 1 , 'join_a_id' => 1 , 'join_c_id' => 2 , 'other' => 'Data for Join A 1 Join C 2' , 'created' => '2008-01-03 10:57:22' , 'updated' => '2008-01-03 10:57:22' ))));
$this -> assertEqual ( $result , $expected );
$ts = date ( 'Y-m-d H:i:s' );
$TestModel -> id = 1 ;
$data = array (
'JoinA' => array ( 'id' => '1' , 'name' => 'New name for Join A 1' , 'updated' => $ts ),
'JoinB' => array ( array ( 'id' => 1 , 'join_b_id' => 2 , 'other' => 'New data for Join A 1 Join B 2' , 'created' => $ts , 'updated' => $ts )),
'JoinC' => array ( array ( 'id' => 1 , 'join_c_id' => 2 , 'other' => 'New data for Join A 1 Join C 2' , 'created' => $ts , 'updated' => $ts )));
$TestModel -> set ( $data );
$TestModel -> save ();
$result = $TestModel -> findById ( 1 );
$expected = array (
'JoinA' => array ( 'id' => 1 , 'name' => 'New name for Join A 1' , 'body' => 'Join A 1 Body' , 'created' => '2008-01-03 10:54:23' , 'updated' => $ts ),
'JoinB' => array (
0 => array ( 'id' => 2 , 'name' => 'Join B 2' , 'created' => '2008-01-03 10:55:02' , 'updated' => '2008-01-03 10:55:02' ,
'JoinAsJoinB' => array ( 'id' => 1 , 'join_a_id' => 1 , 'join_b_id' => 2 , 'other' => 'New data for Join A 1 Join B 2' , 'created' => $ts , 'updated' => $ts ))),
'JoinC' => array (
0 => array ( 'id' => 2 , 'name' => 'Join C 2' , 'created' => '2008-01-03 10:56:12' , 'updated' => '2008-01-03 10:56:12' ,
'JoinAsJoinC' => array ( 'id' => 1 , 'join_a_id' => 1 , 'join_c_id' => 2 , 'other' => 'New data for Join A 1 Join C 2' , 'created' => $ts , 'updated' => $ts ))));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testFindAllRecursiveSelfJoin method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindAllRecursiveSelfJoin () {
$this -> loadFixtures ( 'Home' , 'AnotherArticle' , 'Advertisement' );
$TestModel =& new Home ();
$TestModel -> recursive = 2 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array ( array ( 'Home' => array (
'id' => '1' , 'another_article_id' => '1' , 'advertisement_id' => '1' , 'title' => 'First Home' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'AnotherArticle' => array ( 'id' => '1' , 'title' => 'First Article' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ,
'Home' => array ( array ( 'id' => '1' , 'another_article_id' => '1' , 'advertisement_id' => '1' , 'title' => 'First Home' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ))),
'Advertisement' => array ( 'id' => '1' , 'title' => 'First Ad' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ,
'Home' => array ( array ( 'id' => '1' , 'another_article_id' => '1' , 'advertisement_id' => '1' , 'title' => 'First Home' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
array ( 'id' => '2' , 'another_article_id' => '3' , 'advertisement_id' => '1' , 'title' => 'Second Home' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )))),
array ( 'Home' => array (
'id' => '2' , 'another_article_id' => '3' , 'advertisement_id' => '1' , 'title' => 'Second Home' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'AnotherArticle' => array ( 'id' => '3' , 'title' => 'Third Article' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ,
'Home' => array ( array ( 'id' => '2' , 'another_article_id' => '3' , 'advertisement_id' => '1' , 'title' => 'Second Home' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ))),
'Advertisement' => array ( 'id' => '1' , 'title' => 'First Ad' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ,
'Home' => array ( array ( 'id' => '1' , 'another_article_id' => '1' , 'advertisement_id' => '1' , 'title' => 'First Home' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
array ( 'id' => '2' , 'another_article_id' => '3' , 'advertisement_id' => '1' , 'title' => 'Second Home' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )))));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
2008-06-22 15:18:30 +00:00
* testFindAllRecursiveWithHabtm method
*
* @ return void
* @ access public
*/
function testFindAllRecursiveWithHabtm () {
2008-11-09 03:20:14 +00:00
$this -> loadFixtures (
'MyCategoriesMyUsers' , 'MyCategoriesMyProducts' , 'MyCategory' , 'MyUser' , 'MyProduct'
);
2008-06-22 15:18:30 +00:00
$MyUser =& new MyUser ();
$MyUser -> recursive = 2 ;
$result = $MyUser -> find ( 'all' );
$expected = array (
array (
2008-11-09 03:20:14 +00:00
'MyUser' => array ( 'id' => '1' , 'firstname' => 'userA' ),
2008-06-22 15:18:30 +00:00
'MyCategory' => array (
array (
'id' => '1' ,
'name' => 'A' ,
'MyProduct' => array (
2008-11-09 03:20:14 +00:00
array ( 'id' => '1' , 'name' => 'book' )
2008-06-22 15:18:30 +00:00
)
),
array (
'id' => '3' ,
'name' => 'C' ,
2008-11-09 03:20:14 +00:00
'MyProduct' => array ( array ( 'id' => '2' , 'name' => 'computer' ))
2008-06-22 15:18:30 +00:00
)
)
),
array (
2008-11-09 03:20:14 +00:00
'MyUser' => array ( 'id' => '2' , 'firstname' => 'userB' ),
2008-06-22 15:18:30 +00:00
'MyCategory' => array (
array (
'id' => '1' ,
'name' => 'A' ,
2008-11-09 03:20:14 +00:00
'MyProduct' => array ( array ( 'id' => '1' , 'name' => 'book' ))
2008-06-22 15:18:30 +00:00
),
array (
'id' => '2' ,
'name' => 'B' ,
'MyProduct' => array (
2008-11-09 03:20:14 +00:00
array ( 'id' => '1' , 'name' => 'book' ),
array ( 'id' => '2' , 'name' => 'computer' )
2008-06-22 15:18:30 +00:00
)
)
)
)
);
$this -> assertIdentical ( $result , $expected );
}
/**
2008-06-02 19:22:55 +00:00
* testFindSelfAssociations method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindSelfAssociations () {
$this -> loadFixtures ( 'Person' );
$TestModel =& new Person ();
$TestModel -> recursive = 2 ;
$result = $TestModel -> read ( null , 1 );
$expected = array (
'Person' => array ( 'id' => 1 , 'name' => 'person' , 'mother_id' => 2 , 'father_id' => 3 ),
'Mother' => array ( 'id' => 2 , 'name' => 'mother' , 'mother_id' => 4 , 'father_id' => 5 ,
'Mother' => array ( 'id' => 4 , 'name' => 'mother - grand mother' , 'mother_id' => 0 , 'father_id' => 0 ),
'Father' => array ( 'id' => 5 , 'name' => 'mother - grand father' , 'mother_id' => 0 , 'father_id' => 0 )),
'Father' => array ( 'id' => 3 , 'name' => 'father' , 'mother_id' => 6 , 'father_id' => 7 ,
'Father' => array ( 'id' => 7 , 'name' => 'father - grand father' , 'mother_id' => 0 , 'father_id' => 0 ),
'Mother' => array ( 'id' => 6 , 'name' => 'father - grand mother' , 'mother_id' => 0 , 'father_id' => 0 )));
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = 3 ;
$result = $TestModel -> read ( null , 1 );
$expected = array (
'Person' => array ( 'id' => 1 , 'name' => 'person' , 'mother_id' => 2 , 'father_id' => 3 ),
'Mother' => array ( 'id' => 2 , 'name' => 'mother' , 'mother_id' => 4 , 'father_id' => 5 ,
'Mother' => array ( 'id' => 4 , 'name' => 'mother - grand mother' , 'mother_id' => 0 , 'father_id' => 0 ,
'Mother' => array (),
'Father' => array ()),
'Father' => array ( 'id' => 5 , 'name' => 'mother - grand father' , 'mother_id' => 0 , 'father_id' => 0 ,
'Father' => array (),
'Mother' => array ())),
'Father' => array ( 'id' => 3 , 'name' => 'father' , 'mother_id' => 6 , 'father_id' => 7 ,
'Father' => array ( 'id' => 7 , 'name' => 'father - grand father' , 'mother_id' => 0 , 'father_id' => 0 ,
'Father' => array (),
'Mother' => array ()),
'Mother' => array ( 'id' => 6 , 'name' => 'father - grand mother' , 'mother_id' => 0 , 'father_id' => 0 ,
'Mother' => array (),
'Father' => array ())));
$this -> assertEqual ( $result , $expected );
}
2008-09-25 00:58:06 +00:00
/**
* testPluginAssociations method
*
* @ access public
* @ return void
*/
function testPluginAssociations () {
$this -> loadFixtures ( 'TestPluginArticle' , 'User' , 'TestPluginComment' );
$TestModel =& new TestPluginArticle ();
$result = $TestModel -> find ( 'all' );
$expected = array (
array (
'TestPluginArticle' => array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Plugin Article' , 'body' => 'First Plugin Article Body' , 'published' => 'Y' , 'created' => '2008-09-24 10:39:23' , 'updated' => '2008-09-24 10:41:31' ),
'User' => array ( 'id' => 1 , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'TestPluginComment' => array (
array ( 'id' => 1 , 'article_id' => 1 , 'user_id' => 2 , 'comment' => 'First Comment for First Plugin Article' , 'published' => 'Y' , 'created' => '2008-09-24 10:45:23' , 'updated' => '2008-09-24 10:47:31' ),
array ( 'id' => 2 , 'article_id' => 1 , 'user_id' => 4 , 'comment' => 'Second Comment for First Plugin Article' , 'published' => 'Y' , 'created' => '2008-09-24 10:47:23' , 'updated' => '2008-09-24 10:49:31' ),
array ( 'id' => 3 , 'article_id' => 1 , 'user_id' => 1 , 'comment' => 'Third Comment for First Plugin Article' , 'published' => 'Y' , 'created' => '2008-09-24 10:49:23' , 'updated' => '2008-09-24 10:51:31' ),
array ( 'id' => 4 , 'article_id' => 1 , 'user_id' => 1 , 'comment' => 'Fourth Comment for First Plugin Article' , 'published' => 'N' , 'created' => '2008-09-24 10:51:23' , 'updated' => '2008-09-24 10:53:31' )
)
),
array (
'TestPluginArticle' => array ( 'id' => 2 , 'user_id' => 3 , 'title' => 'Second Plugin Article' , 'body' => 'Second Plugin Article Body' , 'published' => 'Y' , 'created' => '2008-09-24 10:41:23' , 'updated' => '2008-09-24 10:43:31' ),
'User' => array ( 'id' => 3 , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'TestPluginComment' => array (
array ( 'id' => 5 , 'article_id' => 2 , 'user_id' => 1 , 'comment' => 'First Comment for Second Plugin Article' , 'published' => 'Y' , 'created' => '2008-09-24 10:53:23' , 'updated' => '2008-09-24 10:55:31' ),
array ( 'id' => 6 , 'article_id' => 2 , 'user_id' => 2 , 'comment' => 'Second Comment for Second Plugin Article' , 'published' => 'Y' , 'created' => '2008-09-24 10:55:23' , 'updated' => '2008-09-24 10:57:31' )
)
),
array (
'TestPluginArticle' => array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Plugin Article' , 'body' => 'Third Plugin Article Body' , 'published' => 'Y' , 'created' => '2008-09-24 10:43:23' , 'updated' => '2008-09-24 10:45:31' ),
'User' => array ( 'id' => 1 , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'TestPluginComment' => array ()
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testIdentity method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testIdentity () {
$TestModel =& new Test ();
$result = $TestModel -> alias ;
$expected = 'Test' ;
$this -> assertEqual ( $result , $expected );
$TestModel =& new TestAlias ();
$result = $TestModel -> alias ;
$expected = 'TestAlias' ;
$this -> assertEqual ( $result , $expected );
2008-08-27 11:17:54 +00:00
$TestModel =& new Test ( array ( 'alias' => 'AnotherTest' ));
2008-05-30 11:40:08 +00:00
$result = $TestModel -> alias ;
$expected = 'AnotherTest' ;
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testCreation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testCreation () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Test ();
$result = $TestModel -> create ();
$expected = array ( 'Test' => array ( 'notes' => 'write some notes here' ));
$this -> assertEqual ( $result , $expected );
$TestModel =& new User ();
$result = $TestModel -> schema ();
if ( isset ( $this -> db -> columns [ 'primary_key' ][ 'length' ])) {
$intLength = $this -> db -> columns [ 'primary_key' ][ 'length' ];
} elseif ( isset ( $this -> db -> columns [ 'integer' ][ 'length' ])) {
$intLength = $this -> db -> columns [ 'integer' ][ 'length' ];
} else {
$intLength = 11 ;
}
2008-10-23 13:29:32 +00:00
foreach ( array ( 'collate' , 'charset' ) as $type ) {
unset ( $result [ 'user' ][ $type ]);
unset ( $result [ 'password' ][ $type ]);
}
2008-05-30 11:40:08 +00:00
$expected = array (
'id' => array ( 'type' => 'integer' , 'null' => false , 'default' => null , 'length' => $intLength , 'key' => 'primary' ),
'user' => array ( 'type' => 'string' , 'null' => false , 'default' => '' , 'length' => 255 ),
'password' => array ( 'type' => 'string' , 'null' => false , 'default' => '' , 'length' => 255 ),
'created' => array ( 'type' => 'datetime' , 'null' => true , 'default' => null , 'length' => null ),
'updated' => array ( 'type' => 'datetime' , 'null' => true , 'default' => null , 'length' => null ));
$this -> assertEqual ( $result , $expected );
$TestModel =& new Article ();
$result = $TestModel -> create ();
$expected = array ( 'Article' => array ( 'published' => 'N' ));
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
$FeaturedModel =& new Featured ();
$data = array (
'article_featured_id' => 1 , 'category_id' => 1 ,
'published_date' => array ( 'year' => 2008 , 'month' => 06 , 'day' => 11 ),
'end_date' => array ( 'year' => 2008 , 'month' => 06 , 'day' => 20 )
);
$expected = array ( 'Featured' => array (
'article_featured_id' => 1 , 'category_id' => 1 ,
'published_date' => '2008-6-11 00:00:00' , 'end_date' => '2008-6-20 00:00:00'
));
$this -> assertEqual ( $FeaturedModel -> create ( $data ), $expected );
$data = array (
'published_date' => array ( 'year' => 2008 , 'month' => 06 , 'day' => 11 ),
'end_date' => array ( 'year' => 2008 , 'month' => 06 , 'day' => 20 ),
'article_featured_id' => 1 , 'category_id' => 1
);
$expected = array ( 'Featured' => array (
'published_date' => '2008-6-11 00:00:00' , 'end_date' => '2008-6-20 00:00:00' ,
'article_featured_id' => 1 , 'category_id' => 1
));
$this -> assertEqual ( $FeaturedModel -> create ( $data ), $expected );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testCreationOfEmptyRecord method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testCreationOfEmptyRecord () {
$this -> loadFixtures ( 'Author' );
$TestModel =& new Author ();
$this -> assertEqual ( $TestModel -> find ( 'count' ), 4 );
$TestModel -> deleteAll ( true , false , false );
$this -> assertEqual ( $TestModel -> find ( 'count' ), 0 );
$result = $TestModel -> save ();
$this -> assertTrue ( isset ( $result [ 'Author' ][ 'created' ]));
$this -> assertTrue ( isset ( $result [ 'Author' ][ 'updated' ]));
$this -> assertEqual ( $TestModel -> find ( 'count' ), 1 );
}
2008-06-02 19:22:55 +00:00
/**
* testCreateWithPKFiltering method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testCreateWithPKFiltering () {
$TestModel =& new Article ();
$data = array ( 'id' => 5 , 'user_id' => 2 , 'title' => 'My article' , 'body' => 'Some text' );
$result = $TestModel -> create ( $data );
$expected = array ( 'Article' => array ( 'published' => 'N' , 'id' => 5 , 'user_id' => 2 , 'title' => 'My article' , 'body' => 'Some text' ));
$this -> assertEqual ( $result , $expected );
$this -> assertEqual ( $TestModel -> id , 5 );
$result = $TestModel -> create ( $data , true );
$expected = array ( 'Article' => array ( 'published' => 'N' , 'id' => false , 'user_id' => 2 , 'title' => 'My article' , 'body' => 'Some text' ));
$this -> assertEqual ( $result , $expected );
$this -> assertFalse ( $TestModel -> id );
$result = $TestModel -> create ( array ( 'Article' => $data ), true );
$expected = array ( 'Article' => array ( 'published' => 'N' , 'id' => false , 'user_id' => 2 , 'title' => 'My article' , 'body' => 'Some text' ));
$this -> assertEqual ( $result , $expected );
$this -> assertFalse ( $TestModel -> id );
}
2008-06-02 19:22:55 +00:00
/**
* testCreationWithMultipleData method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testCreationWithMultipleData () {
$this -> loadFixtures ( 'Article' , 'Comment' );
$Article =& new Article ();
$Comment =& new Comment ();
$articles = $Article -> find ( 'all' , array ( 'fields' => array ( 'id' , 'title' ), 'recursive' => - 1 ));
$comments = $Comment -> find ( 'all' , array ( 'fields' => array ( 'id' , 'article_id' , 'user_id' , 'comment' , 'published' ), 'recursive' => - 1 ));
$this -> assertEqual ( $articles , array (
array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' )),
array ( 'Article' => array ( 'id' => 2 , 'title' => 'Second Article' )),
array ( 'Article' => array ( 'id' => 3 , 'title' => 'Third Article' ))));
$this -> assertEqual ( $comments , array (
array ( 'Comment' => array ( 'id' => 1 , 'article_id' => 1 , 'user_id' => 2 , 'comment' => 'First Comment for First Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 2 , 'article_id' => 1 , 'user_id' => 4 , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 3 , 'article_id' => 1 , 'user_id' => 1 , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 4 , 'article_id' => 1 , 'user_id' => 1 , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' )),
array ( 'Comment' => array ( 'id' => 5 , 'article_id' => 2 , 'user_id' => 1 , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 6 , 'article_id' => 2 , 'user_id' => 2 , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' ))));
$data = array ( 'Comment' => array ( 'article_id' => 2 , 'user_id' => 4 , 'comment' => 'Brand New Comment' , 'published' => 'N' ),
'Article' => array ( 'id' => 2 , 'title' => 'Second Article Modified' ));
$result = $Comment -> create ( $data );
$this -> assertTrue ( $result );
$result = $Comment -> save ();
$this -> assertTrue ( $result );
$articles = $Article -> find ( 'all' , array ( 'fields' => array ( 'id' , 'title' ), 'recursive' => - 1 ));
$comments = $Comment -> find ( 'all' , array ( 'fields' => array ( 'id' , 'article_id' , 'user_id' , 'comment' , 'published' ), 'recursive' => - 1 ));
$this -> assertEqual ( $articles , array (
array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' )),
array ( 'Article' => array ( 'id' => 2 , 'title' => 'Second Article' )),
array ( 'Article' => array ( 'id' => 3 , 'title' => 'Third Article' ))));
$this -> assertEqual ( $comments , array (
array ( 'Comment' => array ( 'id' => 1 , 'article_id' => 1 , 'user_id' => 2 , 'comment' => 'First Comment for First Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 2 , 'article_id' => 1 , 'user_id' => 4 , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 3 , 'article_id' => 1 , 'user_id' => 1 , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 4 , 'article_id' => 1 , 'user_id' => 1 , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' )),
array ( 'Comment' => array ( 'id' => 5 , 'article_id' => 2 , 'user_id' => 1 , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 6 , 'article_id' => 2 , 'user_id' => 2 , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' )),
array ( 'Comment' => array ( 'id' => 7 , 'article_id' => 2 , 'user_id' => 4 , 'comment' => 'Brand New Comment' , 'published' => 'N' ))));
}
2008-06-02 19:22:55 +00:00
/**
* testCreationWithMultipleDataSameModel method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testCreationWithMultipleDataSameModel () {
$this -> loadFixtures ( 'Article' );
$Article =& new Article ();
$SecondaryArticle =& new Article ();
$result = $Article -> field ( 'title' , array ( 'id' => 1 ));
$this -> assertEqual ( $result , 'First Article' );
$data = array ( 'Article' => array ( 'user_id' => 2 , 'title' => 'Brand New Article' , 'body' => 'Brand New Article Body' , 'published' => 'Y' ),
'SecondaryArticle' => array ( 'id' => 1 ));
$Article -> create ();
$result = $Article -> save ( $data );
$this -> assertTrue ( $result );
$result = $Article -> getInsertID ();
$this -> assertTrue ( ! empty ( $result ));
$result = $Article -> field ( 'title' , array ( 'id' => 1 ));
$this -> assertEqual ( $result , 'First Article' );
$articles = $Article -> find ( 'all' , array ( 'fields' => array ( 'id' , 'title' ), 'recursive' => - 1 ));
$this -> assertEqual ( $articles , array (
array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' )),
array ( 'Article' => array ( 'id' => 2 , 'title' => 'Second Article' )),
array ( 'Article' => array ( 'id' => 3 , 'title' => 'Third Article' )),
array ( 'Article' => array ( 'id' => 4 , 'title' => 'Brand New Article' ))));
}
2008-06-02 19:22:55 +00:00
/**
* testCreationWithMultipleDataSameModelManualInstances method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testCreationWithMultipleDataSameModelManualInstances () {
$this -> loadFixtures ( 'PrimaryModel' );
$Primary =& new PrimaryModel ();
$Secondary =& new PrimaryModel ();
$result = $Primary -> field ( 'primary_name' , array ( 'id' => 1 ));
$this -> assertEqual ( $result , 'Primary Name Existing' );
$data = array ( 'PrimaryModel' => array ( 'primary_name' => 'Primary Name New' ),
'SecondaryModel' => array ( 'id' => array ( 1 )));
$Primary -> create ();
$result = $Primary -> save ( $data );
$this -> assertTrue ( $result );
$result = $Primary -> field ( 'primary_name' , array ( 'id' => 1 ));
$this -> assertEqual ( $result , 'Primary Name Existing' );
$result = $Primary -> getInsertID ();
$this -> assertTrue ( ! empty ( $result ));
$result = $Primary -> field ( 'primary_name' , array ( 'id' => $result ));
$this -> assertEqual ( $result , 'Primary Name New' );
2008-08-14 16:52:29 +00:00
$result = $Primary -> find ( 'count' );
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , 2 );
}
2008-06-02 19:22:55 +00:00
/**
* testReadFakeThread method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testReadFakeThread () {
$this -> loadFixtures ( 'CategoryThread' );
$TestModel =& new CategoryThread ();
2008-08-02 19:57:04 +00:00
$fullDebug = $this -> db -> fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> db -> fullDebug = true ;
$TestModel -> recursive = 6 ;
$TestModel -> id = 7 ;
$result = $TestModel -> read ();
$expected = array (
'CategoryThread' => array ( 'id' => 7 , 'parent_id' => 6 , 'name' => 'Category 2.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 6 , 'parent_id' => 5 , 'name' => 'Category 2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 5 , 'parent_id' => 4 , 'name' => 'Category 1.1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 4 , 'parent_id' => 3 , 'name' => 'Category 1.1.2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' )))))));
2008-08-02 19:57:04 +00:00
$this -> db -> fullDebug = $fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testFindFakeThread method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindFakeThread () {
$this -> loadFixtures ( 'CategoryThread' );
$TestModel =& new CategoryThread ();
2008-08-02 19:57:04 +00:00
$fullDebug = $this -> db -> fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> db -> fullDebug = true ;
$TestModel -> recursive = 6 ;
$result = $TestModel -> find ( array ( 'CategoryThread.id' => 7 ));
$expected = array (
'CategoryThread' => array ( 'id' => 7 , 'parent_id' => 6 , 'name' => 'Category 2.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 6 , 'parent_id' => 5 , 'name' => 'Category 2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 5 , 'parent_id' => 4 , 'name' => 'Category 1.1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 4 , 'parent_id' => 3 , 'name' => 'Category 1.1.2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' )))))));
2008-08-02 19:57:04 +00:00
$this -> db -> fullDebug = $fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testFindAllFakeThread method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindAllFakeThread () {
$this -> loadFixtures ( 'CategoryThread' );
$TestModel =& new CategoryThread ();
2008-08-02 19:57:04 +00:00
$fullDebug = $this -> db -> fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> db -> fullDebug = true ;
$TestModel -> recursive = 6 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , null , null , 'CategoryThread.id ASC' );
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'CategoryThread' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => null , 'parent_id' => null , 'name' => null , 'created' => null , 'updated' => null , 'ParentCategory' => array ())),
array ( 'CategoryThread' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ())),
array ( 'CategoryThread' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ()))),
array ( 'CategoryThread' => array ( 'id' => 4 , 'parent_id' => 3 , 'name' => 'Category 1.1.2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ())))),
array ( 'CategoryThread' => array ( 'id' => 5 , 'parent_id' => 4 , 'name' => 'Category 1.1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 4 , 'parent_id' => 3 , 'name' => 'Category 1.1.2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ()))))),
array ( 'CategoryThread' => array ( 'id' => 6 , 'parent_id' => 5 , 'name' => 'Category 2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 5 , 'parent_id' => 4 , 'name' => 'Category 1.1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 4 , 'parent_id' => 3 , 'name' => 'Category 1.1.2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ())))))),
array ( 'CategoryThread' => array ( 'id' => 7 , 'parent_id' => 6 , 'name' => 'Category 2.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ),
'ParentCategory' => array ( 'id' => 6 , 'parent_id' => 5 , 'name' => 'Category 2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 5 , 'parent_id' => 4 , 'name' => 'Category 1.1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 4 , 'parent_id' => 3 , 'name' => 'Category 1.1.2' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 3 , 'parent_id' => 2 , 'name' => 'Category 1.1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 2 , 'parent_id' => 1 , 'name' => 'Category 1.1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ,
'ParentCategory' => array ( 'id' => 1 , 'parent_id' => 0 , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' ))))))));
2008-08-02 19:57:04 +00:00
$this -> db -> fullDebug = $fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testConditionalNumerics method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testConditionalNumerics () {
$this -> loadFixtures ( 'NumericArticle' );
$NumericArticle =& new NumericArticle ();
$data = array ( 'title' => '12345abcde' );
$result = $NumericArticle -> find ( $data );
$this -> assertTrue ( ! empty ( $result ));
// @TODO: make this pass in Cake 2.0 with passing the column around in db->value()
// SELECT * from articles WHERE title = 12345 // will find the article with title = 12345abcde, too : /
// $data = array('title' => '12345');
// $result = $NumericArticle->find($data);
// $this->assertTrue(empty($result));
}
2008-06-02 19:22:55 +00:00
/**
2008-10-05 22:26:40 +00:00
* test find ( 'all' ) method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindAll () {
$this -> loadFixtures ( 'User' );
$TestModel =& new User ();
2008-08-29 14:38:24 +00:00
$TestModel -> cacheQueries = false ;
2008-05-30 11:40:08 +00:00
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' )),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:22:23' , 'updated' => '2007-03-17 01:24:31' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => 'User.id > 2' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:22:23' , 'updated' => '2007-03-17 01:24:31' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'User.id !=' => '0' , 'User.user LIKE' => '%arr%' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:22:23' , 'updated' => '2007-03-17 01:24:31' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'User.id' => '0' )));
2008-05-30 11:40:08 +00:00
$expected = array ();
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'or' => array ( 'User.id' => '0' , 'User.user LIKE' => '%a%' ))));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' )),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:22:23' , 'updated' => '2007-03-17 01:24:31' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' )),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.user' , 'order' => 'User.user ASC' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'user' => 'garrett' )),
array ( 'User' => array ( 'user' => 'larry' )),
array ( 'User' => array ( 'user' => 'mariano' )),
array ( 'User' => array ( 'user' => 'nate' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.user' , 'order' => 'User.user DESC' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'user' => 'nate' )),
array ( 'User' => array ( 'user' => 'mariano' )),
array ( 'User' => array ( 'user' => 'larry' )),
array ( 'User' => array ( 'user' => 'garrett' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'limit' => 3 , 'page' => 1 ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' )),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' )));
$this -> assertEqual ( $result , $expected );
2008-09-18 01:54:31 +00:00
2008-08-29 14:38:24 +00:00
$ids = array ( 4 => 1 , 5 => 3 );
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'User.id' => $ids )));
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' )),
);
$this -> assertEqual ( $result , $expected );
2008-09-18 01:54:31 +00:00
2008-05-30 11:40:08 +00:00
// These tests are expected to fail on SQL Server since the LIMIT/OFFSET
// hack can't handle small record counts.
if ( $this -> db -> config [ 'driver' ] != 'mssql' ) {
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'limit' => 3 , 'page' => 2 ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:22:23' , 'updated' => '2007-03-17 01:24:31' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'limit' => 3 , 'page' => 3 ));
2008-05-30 11:40:08 +00:00
$expected = array ();
$this -> assertEqual ( $result , $expected );
}
}
2008-06-02 19:22:55 +00:00
/**
2008-10-05 22:26:40 +00:00
* test find ( 'list' ) method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-10-05 22:26:40 +00:00
function testGenerateFindList () {
2008-05-30 11:40:08 +00:00
$this -> loadFixtures ( 'Article' , 'Apple' , 'Post' , 'Author' , 'User' );
$TestModel =& new Article ();
$TestModel -> displayField = 'title' ;
$result = $TestModel -> find ( 'list' , array ( 'order' => 'Article.title ASC' ));
$expected = array ( 1 => 'First Article' , 2 => 'Second Article' , 3 => 'Third Article' );
$this -> assertEqual ( $result , $expected );
2008-08-14 16:52:29 +00:00
$db =& ConnectionManager :: getDataSource ( 'test_suite' );
if ( $db -> config [ 'driver' ] == 'mysql' ) {
$result = $TestModel -> find ( 'list' , array ( 'order' => array ( 'FIELD(Article.id, 3, 2) ASC' , 'Article.title ASC' )));
$expected = array ( 1 => 'First Article' , 3 => 'Third Article' , 2 => 'Second Article' );
$this -> assertEqual ( $result , $expected );
}
2008-06-26 14:12:48 +00:00
2008-05-30 11:40:08 +00:00
$result = Set :: combine ( $TestModel -> find ( 'all' , array ( 'order' => 'Article.title ASC' , 'fields' => array ( 'id' , 'title' ))), '{n}.Article.id' , '{n}.Article.title' );
$expected = array ( 1 => 'First Article' , 2 => 'Second Article' , 3 => 'Third Article' );
$this -> assertEqual ( $result , $expected );
$result = Set :: combine ( $TestModel -> find ( 'all' , array ( 'order' => 'Article.title ASC' )), '{n}.Article.id' , '{n}.Article' );
$expected = array (
1 => array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
2 => array ( 'id' => 2 , 'user_id' => 3 , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
3 => array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ));
$this -> assertEqual ( $result , $expected );
$result = Set :: combine ( $TestModel -> find ( 'all' , array ( 'order' => 'Article.title ASC' )), '{n}.Article.id' , '{n}.Article' , '{n}.Article.user_id' );
$expected = array ( 1 => array (
1 => array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
3 => array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' )),
3 => array ( 2 => array ( 'id' => 2 , 'user_id' => 3 , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )));
$this -> assertEqual ( $result , $expected );
$result = Set :: combine ( $TestModel -> find ( 'all' , array ( 'order' => 'Article.title ASC' , 'fields' => array ( 'id' , 'title' , 'user_id' ))), '{n}.Article.id' , '{n}.Article.title' , '{n}.Article.user_id' );
$expected = array ( 1 => array ( 1 => 'First Article' , 3 => 'Third Article' ), 3 => array ( 2 => 'Second Article' ));
$this -> assertEqual ( $result , $expected );
$TestModel =& new Apple ();
$expected = array ( 1 => 'Red Apple 1' , 2 => 'Bright Red Apple' , 3 => 'green blue' , 4 => 'Test Name' , 5 => 'Blue Green' , 6 => 'My new apple' , 7 => 'Some odd color' );
$this -> assertEqual ( $TestModel -> find ( 'list' ), $expected );
$this -> assertEqual ( $TestModel -> Parent -> find ( 'list' ), $expected );
$TestModel =& new Post ();
$result = $TestModel -> find ( 'list' , array ( 'fields' => 'Post.title' ));
$expected = array ( 1 => 'First Post' , 2 => 'Second Post' , 3 => 'Third Post' );
$this -> assertEqual ( $result , $expected );
2008-06-10 17:27:12 +00:00
$result = $TestModel -> find ( 'list' , array ( 'fields' => 'title' ));
$expected = array ( 1 => 'First Post' , 2 => 'Second Post' , 3 => 'Third Post' );
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'title' , 'id' )));
$expected = array ( 'First Post' => '1' , 'Second Post' => '2' , 'Third Post' => '3' );
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'title' , 'id' , 'created' )));
$expected = array (
2008-06-14 20:39:27 +00:00
'2007-03-18 10:39:23' => array ( 'First Post' => '1' ),
'2007-03-18 10:41:23' => array ( 'Second Post' => '2' ),
'2007-03-18 10:43:23' => array ( 'Third Post' => '3' ),
2008-06-10 17:27:12 +00:00
);
$this -> assertEqual ( $result , $expected );
2008-05-30 11:40:08 +00:00
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'Post.body' )));
$expected = array ( 1 => 'First Post Body' , 2 => 'Second Post Body' , 3 => 'Third Post Body' );
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'Post.title' , 'Post.body' )));
$expected = array ( 'First Post' => 'First Post Body' , 'Second Post' => 'Second Post Body' , 'Third Post' => 'Third Post Body' );
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'Post.id' , 'Post.title' , 'Author.user' ), 'recursive' => 1 ));
$expected = array ( 'mariano' => array ( 1 => 'First Post' , 3 => 'Third Post' ), 'larry' => array ( 2 => 'Second Post' ));
$this -> assertEqual ( $result , $expected );
$TestModel =& new User ();
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'User.user' , 'User.password' )));
$expected = array ( 'mariano' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'nate' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'larry' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'garrett' => '5f4dcc3b5aa765d61d8327deb882cf99' );
$this -> assertEqual ( $result , $expected );
$TestModel =& new ModifiedAuthor ();
$result = $TestModel -> find ( 'list' , array ( 'fields' => array ( 'Author.id' , 'Author.user' )));
$expected = array ( 1 => 'mariano (CakePHP)' , 2 => 'nate (CakePHP)' , 3 => 'larry (CakePHP)' , 4 => 'garrett (CakePHP)' );
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testRecordExists method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testRecordExists () {
$this -> loadFixtures ( 'User' );
$TestModel =& new User ();
$this -> assertFalse ( $TestModel -> exists ());
$TestModel -> read ( null , 1 );
$this -> assertTrue ( $TestModel -> exists ());
$TestModel -> create ();
$this -> assertFalse ( $TestModel -> exists ());
$TestModel -> id = 4 ;
$this -> assertTrue ( $TestModel -> exists ());
$TestModel =& new TheVoid ();
$this -> assertFalse ( $TestModel -> exists ());
$TestModel -> id = 5 ;
$this -> assertFalse ( $TestModel -> exists ());
}
2008-06-02 19:22:55 +00:00
/**
* testFindField method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindField () {
$this -> loadFixtures ( 'User' );
$TestModel =& new User ();
$TestModel -> id = 1 ;
$result = $TestModel -> field ( 'user' );
$this -> assertEqual ( $result , 'mariano' );
$result = $TestModel -> field ( 'User.user' );
$this -> assertEqual ( $result , 'mariano' );
$TestModel -> id = false ;
$result = $TestModel -> field ( 'user' , array ( 'user' => 'mariano' ));
$this -> assertEqual ( $result , 'mariano' );
$result = $TestModel -> field ( 'COUNT(*) AS count' , true );
$this -> assertEqual ( $result , 4 );
$result = $TestModel -> field ( 'COUNT(*)' , true );
$this -> assertEqual ( $result , 4 );
}
2008-06-02 19:22:55 +00:00
/**
* testFindUnique method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindUnique () {
$this -> loadFixtures ( 'User' );
$TestModel =& new User ();
$this -> assertFalse ( $TestModel -> isUnique ( array ( 'user' => 'nate' )));
$TestModel -> id = 2 ;
$this -> assertTrue ( $TestModel -> isUnique ( array ( 'user' => 'nate' )));
$this -> assertFalse ( $TestModel -> isUnique ( array ( 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' )));
}
2008-06-02 19:22:55 +00:00
/**
* testUpdateExisting method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testUpdateExisting () {
$this -> loadFixtures ( 'User' , 'Article' , 'Comment' );
$TestModel =& new User ();
$TestModel -> create ();
$TestModel -> save ( array ( 'User' => array ( 'user' => 'some user' , 'password' => 'some password' )));
$this -> assertTrue ( is_int ( $TestModel -> id ) || ( intval ( $TestModel -> id ) === 5 ));
$id = $TestModel -> id ;
$TestModel -> save ( array ( 'User' => array ( 'user' => 'updated user' )));
$this -> assertEqual ( $TestModel -> id , $id );
$result = $TestModel -> findById ( $id );
$this -> assertEqual ( $result [ 'User' ][ 'user' ], 'updated user' );
$this -> assertEqual ( $result [ 'User' ][ 'password' ], 'some password' );
$Article =& new Article ();
$Comment =& new Comment ();
$data = array ( 'Comment' => array ( 'id' => 1 , 'comment' => 'First Comment for First Article' ),
'Article' => array ( 'id' => 2 , 'title' => 'Second Article' ));
$result = $Article -> save ( $data );
$this -> assertTrue ( $result );
$result = $Comment -> save ( $data );
$this -> assertTrue ( $result );
}
2008-06-02 19:22:55 +00:00
/**
* testUpdateMultiple method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testUpdateMultiple () {
2008-07-29 01:18:57 +00:00
$this -> loadFixtures ( 'Comment' , 'Article' , 'User' , 'CategoryThread' );
2008-05-30 11:40:08 +00:00
$TestModel =& new Comment ();
$result = Set :: extract ( $TestModel -> find ( 'all' ), '{n}.Comment.user_id' );
$expected = array ( '2' , '4' , '1' , '1' , '1' , '2' );
$this -> assertEqual ( $result , $expected );
$TestModel -> updateAll ( array ( 'Comment.user_id' => 5 ), array ( 'Comment.user_id' => 2 ));
$result = Set :: combine ( $TestModel -> find ( 'all' ), '{n}.Comment.id' , '{n}.Comment.user_id' );
$expected = array ( 1 => 5 , 2 => 4 , 3 => 1 , 4 => 1 , 5 => 1 , 6 => 5 );
$this -> assertEqual ( $result , $expected );
2008-07-31 15:38:23 +00:00
2008-07-29 01:18:57 +00:00
$result = $TestModel -> updateAll ( array ( 'Comment.comment' => " 'Updated today' " ), array ( 'Comment.user_id' => 5 ));
$this -> assertTrue ( $result );
$result = Set :: extract ( $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'Comment.user_id' => 5 ))), '{n}.Comment.comment' );
$expected = array_fill ( 0 , 2 , 'Updated today' );
$this -> assertEqual ( $result , $expected );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testUpdateWithCalculation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testUpdateWithCalculation () {
Configure :: write ( 'foo' , true );
$this -> loadFixtures ( 'DataTest' );
$model =& new DataTest ();
$result = $model -> saveAll ( array (
array ( 'count' => 5 , 'float' => 1.1 ),
array ( 'count' => 3 , 'float' => 1.2 ),
array ( 'count' => 4 , 'float' => 1.3 ),
array ( 'count' => 1 , 'float' => 2.0 ),
));
$this -> assertTrue ( $result );
$result = Set :: extract ( '/DataTest/count' , $model -> find ( 'all' , array ( 'fields' => 'count' )));
$this -> assertEqual ( $result , array ( 5 , 3 , 4 , 1 ));
$this -> assertTrue ( $model -> updateAll ( array ( 'count' => 'count + 2' )));
$result = Set :: extract ( '/DataTest/count' , $model -> find ( 'all' , array ( 'fields' => 'count' )));
$this -> assertEqual ( $result , array ( 7 , 5 , 6 , 3 ));
$this -> assertTrue ( $model -> updateAll ( array ( 'DataTest.count' => 'DataTest.count - 1' )));
$result = Set :: extract ( '/DataTest/count' , $model -> find ( 'all' , array ( 'fields' => 'count' )));
$this -> assertEqual ( $result , array ( 6 , 4 , 5 , 2 ));
}
2008-06-02 19:22:55 +00:00
/**
* testBindUnbind method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testBindUnbind () {
$this -> loadFixtures ( 'User' , 'Comment' , 'FeatureSet' );
$TestModel =& new User ();
$result = $TestModel -> hasMany ;
$expected = array ();
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Comment' )));
$this -> assertTrue ( $result );
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ), 'Comment' => array (
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' ),
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ))),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ), 'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ))),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ), 'Comment' => array ()),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' ), 'Comment' => array (
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ))));
$this -> assertEqual ( $result , $expected );
$TestModel -> resetAssociations ();
$result = $TestModel -> hasMany ;
$this -> assertEqual ( $result , array ());
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Comment' )), false );
$this -> assertTrue ( $result );
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ), 'Comment' => array (
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' ),
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ))),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ), 'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ))),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ), 'Comment' => array ()),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' ), 'Comment' => array (
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ))));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> hasMany ;
$expected = array ( 'Comment' => array ( 'className' => 'Comment' , 'foreignKey' => 'user_id' , 'conditions' => null , 'fields' => null , 'order' => null , 'limit' => null , 'offset' => null , 'dependent' => null , 'exclusive' => null , 'finderQuery' => null , 'counterQuery' => null ) );
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> unbindModel ( array ( 'hasMany' => array ( 'Comment' )));
$this -> assertTrue ( $result );
$result = $TestModel -> hasMany ;
$expected = array ();
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' )),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' )));
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ), 'Comment' => array (
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' ),
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ))),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ), 'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ))),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ), 'Comment' => array ()),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' ), 'Comment' => array (
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ))));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> unbindModel ( array ( 'hasMany' => array ( 'Comment' )), false );
$this -> assertTrue ( $result );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' )),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' )),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' )),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' )));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> hasMany ;
$expected = array ();
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Comment' => array ( 'className' => 'Comment' , 'conditions' => 'Comment.published = \'Y\'' ) )));
$this -> assertTrue ( $result );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ), 'Comment' => array (
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ))),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ), 'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ))),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ), 'Comment' => array ()),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' ), 'Comment' => array (
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ))));
$this -> assertEqual ( $result , $expected );
$TestModel2 =& new DeviceType ();
$expected = array ( 'className' => 'FeatureSet' , 'foreignKey' => 'feature_set_id' , 'conditions' => '' , 'fields' => '' , 'order' => '' , 'counterCache' => '' );
$this -> assertEqual ( $TestModel2 -> belongsTo [ 'FeatureSet' ], $expected );
$TestModel2 -> bind ( 'FeatureSet' , array ( 'conditions' => array ( 'active' => true )));
$expected [ 'conditions' ] = array ( 'active' => true );
$this -> assertEqual ( $TestModel2 -> belongsTo [ 'FeatureSet' ], $expected );
$TestModel2 -> bind ( 'FeatureSet' , array ( 'foreignKey' => false , 'conditions' => array ( 'Feature.name' => 'DeviceType.name' )));
$expected [ 'conditions' ] = array ( 'Feature.name' => 'DeviceType.name' );
$expected [ 'foreignKey' ] = false ;
$this -> assertEqual ( $TestModel2 -> belongsTo [ 'FeatureSet' ], $expected );
$TestModel2 -> bind ( 'NewFeatureSet' , array ( 'type' => 'hasMany' , 'className' => 'FeatureSet' , 'conditions' => array ( 'active' => true )));
$expected = array ( 'className' => 'FeatureSet' , 'conditions' => array ( 'active' => true ), 'foreignKey' => 'device_type_id' , 'fields' => '' , 'order' => '' , 'limit' => '' , 'offset' => '' , 'dependent' => '' , 'exclusive' => '' , 'finderQuery' => '' , 'counterQuery' => '' );
$this -> assertEqual ( $TestModel2 -> hasMany [ 'NewFeatureSet' ], $expected );
$this -> assertTrue ( is_object ( $TestModel2 -> NewFeatureSet ));
}
2008-09-18 01:54:31 +00:00
/**
* testBindMultipleTimes method
*
* @ access public
* @ return void
*/
function testBindMultipleTimes () {
$this -> loadFixtures ( 'User' , 'Comment' , 'Article' );
$TestModel =& new User ();
$result = $TestModel -> hasMany ;
$expected = array ();
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Items' => array ( 'className' => 'Comment' ))));
$this -> assertTrue ( $result );
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ), 'Items' => array (
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' ),
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ))),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ), 'Items' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ))),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ), 'Items' => array ()),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' ), 'Items' => array (
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ))));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Items' => array ( 'className' => 'Article' ))));
$this -> assertTrue ( $result );
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'User.id, User.user' ));
$expected = array (
array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ), 'Items' => array (
array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ))),
array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ), 'Items' => array ()),
array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ), 'Items' => array (
array ( 'id' => 2 , 'user_id' => 3 , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ))),
array ( 'User' => array ( 'id' => '4' , 'user' => 'garrett' ), 'Items' => array ()));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
2008-10-05 22:26:40 +00:00
* test find ( 'count' ' ) method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindCount () {
2008-08-14 16:52:29 +00:00
$this -> loadFixtures ( 'User' , 'Project' );
2008-05-30 11:40:08 +00:00
$TestModel =& new User ();
2008-08-14 16:52:29 +00:00
$result = $TestModel -> find ( 'count' );
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , 4 );
2008-08-02 19:57:04 +00:00
$fullDebug = $this -> db -> fullDebug ;
2008-05-30 11:40:08 +00:00
$this -> db -> fullDebug = true ;
$TestModel -> order = 'User.id' ;
$this -> db -> _queriesLog = array ();
2008-08-14 16:52:29 +00:00
$result = $TestModel -> find ( 'count' );
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , 4 );
$this -> assertTrue ( isset ( $this -> db -> _queriesLog [ 0 ][ 'query' ]));
$this -> assertNoPattern ( '/ORDER\s+BY/' , $this -> db -> _queriesLog [ 0 ][ 'query' ]);
$this -> db -> _queriesLog = array ();
2008-08-02 19:57:04 +00:00
$this -> db -> fullDebug = $fullDebug ;
2008-08-14 16:52:29 +00:00
2008-11-09 03:20:14 +00:00
$db = ConnectionManager :: getDataSource ( 'test_suite' );
$result = $TestModel -> find ( 'count' , array ( 'conditions' => array (
$db -> expression ( 'Project.name = \'Project 3\'' )
)));
$this -> assertEqual ( $result , 1 );
2008-08-14 16:52:29 +00:00
$TestModel =& new Project ();
$TestModel -> create ( array ( 'name' => 'project' )) && $TestModel -> save ();
$TestModel -> create ( array ( 'name' => 'project' )) && $TestModel -> save ();
$TestModel -> create ( array ( 'name' => 'project' )) && $TestModel -> save ();
$result = $TestModel -> find ( 'count' , array ( 'fields' => 'DISTINCT Project.name' ));
$this -> assertEqual ( $result , 4 );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testFindMagic method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindMagic () {
$this -> loadFixtures ( 'User' );
$TestModel =& new User ();
$result = $TestModel -> findByUser ( 'mariano' );
$expected = array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> findByPassword ( '5f4dcc3b5aa765d61d8327deb882cf99' );
$expected = array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testRead method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testRead () {
$this -> loadFixtures ( 'User' , 'Article' );
$TestModel =& new User ();
$result = $TestModel -> read ();
$this -> assertFalse ( $result );
$TestModel -> id = 2 ;
$result = $TestModel -> read ();
$expected = array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> read ( null , 2 );
$expected = array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ));
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 2 ;
$result = $TestModel -> read ( array ( 'id' , 'user' ));
$expected = array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> read ( 'id, user' , 2 );
$expected = array ( 'User' => array ( 'id' => '2' , 'user' => 'nate' ));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Article' )));
$this -> assertTrue ( $result );
$TestModel -> id = 1 ;
$result = $TestModel -> read ( 'id, user' );
$expected = array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ),
'Article' => array (
array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
array ( 'id' => '3' , 'user_id' => '1' , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' )));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testRecursiveRead method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testRecursiveRead () {
$this -> loadFixtures ( 'User' , 'Article' , 'Comment' , 'Tag' , 'ArticlesTag' , 'Featured' , 'ArticleFeatured' );
$TestModel =& new User ();
$result = $TestModel -> bindModel ( array ( 'hasMany' => array ( 'Article' )), false );
$this -> assertTrue ( $result );
$TestModel -> recursive = 0 ;
$result = $TestModel -> read ( 'id, user' , 1 );
$expected = array (
'User' => array ( 'id' => '1' , 'user' => 'mariano' ),
);
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = 1 ;
$result = $TestModel -> read ( 'id, user' , 1 );
$expected = array ( 'User' => array ( 'id' => '1' , 'user' => 'mariano' ),
'Article' => array (
array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
array ( 'id' => '3' , 'user_id' => '1' , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' )));
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = 2 ;
$result = $TestModel -> read ( 'id, user' , 3 );
$expected = array ( 'User' => array ( 'id' => '3' , 'user' => 'larry' ),
'Article' => array ( array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ,
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Comment' => array ( array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )))));
$this -> assertEqual ( $result , $expected );
}
/**
* @ todo Figure out why Featured is not getting truncated properly
*/
function testRecursiveFindAll () {
$this -> db -> truncate ( new Featured ());
$this -> loadFixtures ( 'User' , 'Article' , 'Comment' , 'Tag' , 'ArticlesTag' , 'Attachment' , 'ArticleFeatured' , 'Featured' , 'Category' );
$TestModel =& new Article ();
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'Article.user_id' => 1 )));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ),
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' )
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' )
)
),
array (
'Article' => array ( 'id' => '3' , 'user_id' => '1' , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Comment' => array (),
'Tag' => array ()
)
);
$this -> assertEqual ( $result , $expected );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'Article.user_id' => 3 ), 'limit' => 1 , 'recursive' => 2 ));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
'Article' => array (
'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31'
),
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Comment' => array (
array (
'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ,
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Attachment' => array ( 'id' => '1' , 'comment_id' => 5 , 'attachment' => 'attachment.zip' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' )
),
array (
'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ,
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ),
'Attachment' => false
)
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
)
);
$this -> assertEqual ( $result , $expected );
$Featured = new Featured ();
$Featured -> recursive = 2 ;
$Featured -> bindModel ( array (
'belongsTo' => array (
'ArticleFeatured' => array (
'conditions' => " ArticleFeatured.published = 'Y' " ,
'fields' => 'id, title, user_id, published'
)
)
));
$Featured -> ArticleFeatured -> unbindModel ( array (
'hasMany' => array ( 'Attachment' , 'Comment' ),
'hasAndBelongsToMany' => array ( 'Tag' ))
);
$orderBy = 'ArticleFeatured.id ASC' ;
2008-06-19 17:06:50 +00:00
$result = $Featured -> find ( 'all' , array ( 'order' => $orderBy , 'limit' => 3 ));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Featured' => array ( 'id' => '1' , 'article_featured_id' => '1' , 'category_id' => '1' , 'published_date' => '2007-03-31 10:39:23' , 'end_date' => '2007-05-15 10:39:23' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'ArticleFeatured' => array ( 'id' => '1' , 'title' => 'First Article' , 'user_id' => '1' , 'published' => 'Y' ,
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Category' => array (),
'Featured' => array ( 'id' => '1' , 'article_featured_id' => '1' , 'category_id' => '1' , 'published_date' => '2007-03-31 10:39:23' , 'end_date' => '2007-05-15 10:39:23' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )),
'Category' => array ( 'id' => '1' , 'parent_id' => '0' , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' )),
array ( 'Featured' => array ( 'id' => '2' , 'article_featured_id' => '2' , 'category_id' => '1' , 'published_date' => '2007-03-31 10:39:23' , 'end_date' => '2007-05-15 10:39:23' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'ArticleFeatured' => array ( 'id' => '2' , 'title' => 'Second Article' , 'user_id' => '3' , 'published' => 'Y' ,
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Category' => array (),
'Featured' => array ( 'id' => '2' , 'article_featured_id' => '2' , 'category_id' => '1' , 'published_date' => '2007-03-31 10:39:23' , 'end_date' => '2007-05-15 10:39:23' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )),
'Category' => array ( 'id' => '1' , 'parent_id' => '0' , 'name' => 'Category 1' , 'created' => '2007-03-18 15:30:23' , 'updated' => '2007-03-18 15:32:31' )
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testRecursiveFindAllWithLimit method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testRecursiveFindAllWithLimit () {
$this -> loadFixtures ( 'Article' , 'User' , 'Tag' , 'ArticlesTag' , 'Comment' , 'Attachment' );
$TestModel =& new Article ();
$TestModel -> hasMany [ 'Comment' ][ 'limit' ] = 2 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'Article.user_id' => 1 )));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ),
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' )
)
),
array (
'Article' => array ( 'id' => '3' , 'user_id' => '1' , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Comment' => array (),
'Tag' => array ()
)
);
$this -> assertEqual ( $result , $expected );
$TestModel -> hasMany [ 'Comment' ][ 'limit' ] = 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'conditions' => array ( 'Article.user_id' => 3 ), 'limit' => 1 , 'recursive' => 2 ));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Comment' => array (
array (
'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ,
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Attachment' => array ( 'id' => '1' , 'comment_id' => 5 , 'attachment' => 'attachment.zip' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' )
)
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testAssociationAfterFind method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAssociationAfterFind () {
2008-07-20 17:25:39 +00:00
$this -> loadFixtures ( 'Post' , 'Author' , 'Comment' );
2008-05-30 11:40:08 +00:00
$TestModel =& new Post ();
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array (
array (
'Post' => array ( 'id' => '1' , 'author_id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'Author' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' , 'test' => 'working' ),
), array (
'Post' => array ( 'id' => '2' , 'author_id' => '3' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'Author' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' , 'test' => 'working' ),
), array (
'Post' => array ( 'id' => '3' , 'author_id' => '1' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'Author' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' , 'test' => 'working' )
)
);
$this -> assertEqual ( $result , $expected );
2008-07-20 17:25:39 +00:00
unset ( $TestModel );
2008-07-31 15:38:23 +00:00
2008-07-20 17:25:39 +00:00
$Author =& new Author ();
$Author -> Post -> bindModel ( array (
'hasMany' => array (
'Comment' => array (
'className' => 'ModifiedComment' ,
'foreignKey' => 'article_id' ,
)
)));
$result = $Author -> find ( 'all' , array (
'conditions' => array ( 'Author.id' => 1 ),
'recursive' => 2
));
$expected = array (
2008-07-31 15:38:23 +00:00
'id' => 1 ,
'article_id' => 1 ,
'user_id' => 2 ,
'comment' => 'First Comment for First Article' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:45:23' ,
2008-07-20 17:25:39 +00:00
'updated' => '2007-03-18 10:47:31' ,
'callback' => 'Fire'
);
$this -> assertEqual ( $result [ 0 ][ 'Post' ][ 0 ][ 'Comment' ][ 0 ], $expected );
2008-05-30 11:40:08 +00:00
}
2008-09-04 01:00:08 +00:00
/**
* Tests that callbacks can be properly disabled
*
* @ access public
* @ return void
*/
function testCallbackDisabling () {
$this -> loadFixtures ( 'Author' );
$TestModel = new ModifiedAuthor ();
$result = Set :: extract ( $TestModel -> find ( 'all' ), '/Author/user' );
$expected = array ( 'mariano (CakePHP)' , 'nate (CakePHP)' , 'larry (CakePHP)' , 'garrett (CakePHP)' );
$this -> assertEqual ( $result , $expected );
$result = Set :: extract ( $TestModel -> find ( 'all' , array ( 'callbacks' => 'after' )), '/Author/user' );
$expected = array ( 'mariano (CakePHP)' , 'nate (CakePHP)' , 'larry (CakePHP)' , 'garrett (CakePHP)' );
$this -> assertEqual ( $result , $expected );
$result = Set :: extract ( $TestModel -> find ( 'all' , array ( 'callbacks' => 'before' )), '/Author/user' );
$expected = array ( 'mariano' , 'nate' , 'larry' , 'garrett' );
$this -> assertEqual ( $result , $expected );
$result = Set :: extract ( $TestModel -> find ( 'all' , array ( 'callbacks' => false )), '/Author/user' );
$expected = array ( 'mariano' , 'nate' , 'larry' , 'garrett' );
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testValidatesBackwards method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testValidatesBackwards () {
$TestModel =& new TestValidate ();
$TestModel -> validate = array (
'user_id' => VALID_NUMBER ,
'title' => VALID_NOT_EMPTY ,
'body' => VALID_NOT_EMPTY
);
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => '' , 'body' => '' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => 'title' , 'body' => '' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '' , 'title' => 'title' , 'body' => 'body' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => 'not a number' , 'title' => 'title' , 'body' => 'body' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => 'title' , 'body' => 'body' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertTrue ( $result );
}
2008-06-02 19:22:55 +00:00
/**
* testValidates method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testValidates () {
$TestModel =& new TestValidate ();
$TestModel -> validate = array (
'user_id' => VALID_NUMBER ,
'title' => array ( 'allowEmpty' => false , 'rule' => VALID_NOT_EMPTY ),
'body' => VALID_NOT_EMPTY
);
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => '' , 'body' => 'body' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertTrue ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => 0 , 'body' => 'body' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => 0 , 'body' => 'body' , 'modified' => 0 ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => 0 , 'body' => 'body' , 'modified' => '0' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'modified' => false ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'modified' => '' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'modified' => '2007-05-01' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertTrue ( $result );
$data = array ( 'TestValidate' => array ( 'user_id' => '1' , 'title' => 0 , 'body' => 'body' , 'slug' => 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$TestModel -> validate = array (
'number' => array ( 'rule' => 'validateNumber' , 'min' => 3 , 'max' => 5 ),
'title' => array ( 'allowEmpty' => false , 'rule' => VALID_NOT_EMPTY )
);
$data = array ( 'TestValidate' => array ( 'title' => 'title' , 'number' => '0' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'title' , 'number' => 0 ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'title' , 'number' => '3' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertTrue ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'title' , 'number' => 3 ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertTrue ( $result );
$TestModel -> validate = array (
'number' => array ( 'rule' => 'validateNumber' , 'min' => 5 , 'max' => 10 ),
'title' => array ( 'allowEmpty' => false , 'rule' => VALID_NOT_EMPTY )
);
$data = array ( 'TestValidate' => array ( 'title' => 'title' , 'number' => '3' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'title' , 'number' => 3 ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'new title' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'title-new' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$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 -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertFalse ( $result );
$data = array ( 'TestValidate' => array ( 'title' => 'My Article With a Different Title' ));
$result = $TestModel -> create ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> validates ();
$this -> assertTrue ( $result );
2008-07-31 15:38:23 +00:00
2008-07-15 02:13:14 +00:00
$TestModel -> validate = array (
'title' => array (
'tooShort' => array ( 'rule' => array ( 'minLength' , 50 )),
2008-09-16 17:17:24 +00:00
'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' => 'onlyLetters'
);
$this -> assertEqual ( $result , $expected );
$TestModel -> validate = array (
'title' => array (
'tooShort' => array ( 'rule' => array ( 'minLength' , 50 ), 'last' => true ),
'onlyLetters' => array ( 'rule' => '/^[a-z]+$/i' )
2008-07-15 02:13:14 +00:00
),
);
$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' => 'tooShort'
);
$this -> assertEqual ( $result , $expected );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testSaveField method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveField () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Article ();
$TestModel -> id = 1 ;
$result = $TestModel -> saveField ( 'title' , 'New First Article' );
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' ), 1 );
$expected = array ( 'Article' => array (
'id' => '1' , 'user_id' => '1' , 'title' => 'New First Article' , 'body' => 'First Article Body'
));
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 1 ;
$result = $TestModel -> saveField ( 'title' , '' );
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' ), 1 );
$expected = array ( 'Article' => array (
'id' => '1' , 'user_id' => '1' , 'title' => '' , 'body' => 'First Article Body'
));
$result [ 'Article' ][ 'title' ] = trim ( $result [ 'Article' ][ 'title' ]);
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 1 ;
$TestModel -> set ( 'body' , 'Messed up data' );
$this -> assertTrue ( $TestModel -> saveField ( 'title' , 'First Article' ));
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' ), 1 );
$expected = array ( 'Article' => array (
'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body'
));
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' ), 1 );
$TestModel -> id = 1 ;
$result = $TestModel -> saveField ( 'title' , '' , true );
$this -> assertFalse ( $result );
$this -> loadFixtures ( 'Node' , 'Dependency' );
$Node =& new Node ();
$Node -> set ( 'id' , 1 );
$result = $Node -> read ();
$this -> assertEqual ( Set :: extract ( '/ParentNode/name' , $result ), array ( 'Second' ));
$Node -> saveField ( 'state' , 10 );
$result = $Node -> read ();
$this -> assertEqual ( Set :: extract ( '/ParentNode/name' , $result ), array ( 'Second' ));
}
2008-06-02 19:22:55 +00:00
/**
* testSaveWithCreate method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveWithCreate () {
$this -> loadFixtures ( 'User' , 'Article' , 'User' , 'Comment' , 'Tag' , 'ArticlesTag' , 'Attachment' );
$TestModel =& new User ();
$data = array ( 'User' => array ( 'user' => 'user' , 'password' => '' ));
$result = $TestModel -> save ( $data );
$this -> assertFalse ( $result );
$this -> assertTrue ( ! empty ( $TestModel -> validationErrors ));
$TestModel =& new Article ();
$data = array ( 'Article' => array ( 'user_id' => '' , 'title' => '' , 'body' => '' ));
$result = $TestModel -> create ( $data ) && $TestModel -> save ();
$this -> assertFalse ( $result );
$this -> assertTrue ( ! empty ( $TestModel -> validationErrors ));
$data = array ( 'Article' => array ( 'id' => 1 , 'user_id' => '1' , 'title' => 'New First Article' , 'body' => '' ));
$result = $TestModel -> create ( $data ) && $TestModel -> save ();
$this -> assertFalse ( $result );
$data = array ( 'Article' => array ( 'id' => 1 , 'title' => 'New First Article' ));
$result = $TestModel -> create () && $TestModel -> save ( $data , false );
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 1 );
$expected = array ( 'Article' => array (
'id' => '1' , 'user_id' => '1' , 'title' => 'New First Article' , 'body' => 'First Article Body' , 'published' => 'N'
));
$this -> assertEqual ( $result , $expected );
$data = array ( 'Article' => array ( 'id' => 1 , 'user_id' => '2' , 'title' => 'First Article' , 'body' => 'New First Article Body' , 'published' => 'Y' ));
$result = $TestModel -> create () && $TestModel -> save ( $data , true , array ( 'id' , 'title' , 'published' ));
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 1 );
$expected = array ( 'Article' => array (
'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y'
));
$this -> assertEqual ( $result , $expected );
$data = array (
'Article' => array ( 'user_id' => '2' , 'title' => 'New Article' , 'body' => 'New Article Body' , 'created' => '2007-03-18 14:55:23' , 'updated' => '2007-03-18 14:57:31' ),
'Tag' => array ( 'Tag' => array ( 1 , 3 ))
);
$TestModel -> create ();
$result = $TestModel -> create () && $TestModel -> save ( $data );
$this -> assertTrue ( $result );
$TestModel -> recursive = 2 ;
$result = $TestModel -> read ( null , 4 );
$expected = array (
'Article' => array ( 'id' => '4' , 'user_id' => '2' , 'title' => 'New Article' , 'body' => 'New Article Body' , 'published' => 'N' , 'created' => '2007-03-18 14:55:23' , 'updated' => '2007-03-18 14:57:31' ),
'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ),
'Comment' => array (),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Comment' => array ( 'article_id' => '4' , 'user_id' => '1' , 'comment' => 'Comment New Article' , 'published' => 'Y' , 'created' => '2007-03-18 14:57:23' , 'updated' => '2007-03-18 14:59:31' ));
$result = $TestModel -> Comment -> create () && $TestModel -> Comment -> save ( $data );
$this -> assertTrue ( $result );
$data = array ( 'Attachment' => array ( 'comment_id' => '7' , 'attachment' => 'newattachment.zip' , 'created' => '2007-03-18 15:02:23' , 'updated' => '2007-03-18 15:04:31' ));
$result = $TestModel -> Comment -> Attachment -> save ( $data );
$this -> assertTrue ( $result );
$TestModel -> recursive = 2 ;
$result = $TestModel -> read ( null , 4 );
$expected = array (
'Article' => array ( 'id' => '4' , 'user_id' => '2' , 'title' => 'New Article' , 'body' => 'New Article Body' , 'published' => 'N' , 'created' => '2007-03-18 14:55:23' , 'updated' => '2007-03-18 14:57:31' ),
'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ),
'Comment' => array (
array (
'id' => '7' , 'article_id' => '4' , 'user_id' => '1' , 'comment' => 'Comment New Article' , 'published' => 'Y' , 'created' => '2007-03-18 14:57:23' , 'updated' => '2007-03-18 14:59:31' ,
'Article' => array ( 'id' => '4' , 'user_id' => '2' , 'title' => 'New Article' , 'body' => 'New Article Body' , 'published' => 'N' , 'created' => '2007-03-18 14:55:23' , 'updated' => '2007-03-18 14:57:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Attachment' => array ( 'id' => '2' , 'comment_id' => '7' , 'attachment' => 'newattachment.zip' , 'created' => '2007-03-18 15:02:23' , 'updated' => '2007-03-18 15:04:31' )
)
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveWithSet method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveWithSet () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Article ();
// Create record we will be updating later
$data = array ( 'Article' => array ( 'user_id' => '1' , 'title' => 'Fourth Article' , 'body' => 'Fourth Article Body' , 'published' => 'Y' ));
$result = $TestModel -> create () && $TestModel -> save ( $data );
$this -> assertTrue ( $result );
// Check record we created
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 4 );
$expected = array ( 'Article' => array ( 'id' => '4' , 'user_id' => '1' , 'title' => 'Fourth Article' , 'body' => 'Fourth Article Body' , 'published' => 'Y' ));
$this -> assertEqual ( $result , $expected );
// Create new record just to overlap Model->id on previously created record
$data = array ( 'Article' => array ( 'user_id' => '4' , 'title' => 'Fifth Article' , 'body' => 'Fifth Article Body' , 'published' => 'Y' ));
$result = $TestModel -> create () && $TestModel -> save ( $data );
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 5 );
$expected = array ( 'Article' => array (
'id' => '5' , 'user_id' => '4' , 'title' => 'Fifth Article' , 'body' => 'Fifth Article Body' , 'published' => 'Y'
));
$this -> assertEqual ( $result , $expected );
// Go back and edit the first article we created, starting by checking it's still there
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 4 );
$expected = array ( 'Article' => array ( 'id' => '4' , 'user_id' => '1' , 'title' => 'Fourth Article' , 'body' => 'Fourth Article Body' , 'published' => 'Y' ));
$this -> assertEqual ( $result , $expected );
// And now do the update with set()
$data = array ( 'Article' => array ( 'id' => '4' , 'title' => 'Fourth Article - New Title' , 'published' => 'N' ));
$result = $TestModel -> set ( $data ) && $TestModel -> save ();
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 4 );
$expected = array ( 'Article' => array ( 'id' => '4' , 'user_id' => '1' , 'title' => 'Fourth Article - New Title' , 'body' => 'Fourth Article Body' , 'published' => 'N' ));
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 5 );
$expected = array ( 'Article' => array (
'id' => '5' , 'user_id' => '4' , 'title' => 'Fifth Article' , 'body' => 'Fifth Article Body' , 'published' => 'Y'
));
$this -> assertEqual ( $result , $expected );
$data = array ( 'Article' => array ( 'id' => '5' , 'title' => 'Fifth Article - New Title 5' ));
$result = ( $TestModel -> set ( $data ) && $TestModel -> save ());
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 5 );
$expected = array ( 'Article' => array ( 'id' => '5' , 'user_id' => '4' , 'title' => 'Fifth Article - New Title 5' , 'body' => 'Fifth Article Body' , 'published' => 'Y' ));
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = - 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => array ( 'id' , 'title' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' )),
array ( 'Article' => array ( 'id' => 2 , 'title' => 'Second Article' )),
array ( 'Article' => array ( 'id' => 3 , 'title' => 'Third Article' )),
array ( 'Article' => array ( 'id' => 4 , 'title' => 'Fourth Article - New Title' )),
array ( 'Article' => array ( 'id' => 5 , 'title' => 'Fifth Article - New Title 5' ))
);
$this -> assertEqual ( $result , $expected );
}
2008-08-02 00:50:40 +00:00
/**
* testSaveWithNonExistentFields method
*
* @ access public
* @ return void
*/
function testSaveWithNonExistentFields () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Article ();
$TestModel -> recursive = - 1 ;
$data = array (
'non_existent' => 'This field does not exist' ,
'user_id' => '1' ,
'title' => 'Fourth Article - New Title' ,
'body' => 'Fourth Article Body' ,
'published' => 'N'
);
$result = $TestModel -> create () && $TestModel -> save ( $data );
$this -> assertTrue ( $result );
$expected = array ( 'Article' => array (
'id' => '4' ,
'user_id' => '1' ,
'title' => 'Fourth Article - New Title' ,
'body' => 'Fourth Article Body' ,
'published' => 'N'
));
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 4 );
$this -> assertEqual ( $result , $expected );
$data = array (
'user_id' => '1' ,
'non_existent' => 'This field does not exist' ,
'title' => 'Fiveth Article - New Title' ,
'body' => 'Fiveth Article Body' ,
'published' => 'N'
);
$result = $TestModel -> create () && $TestModel -> save ( $data );
$this -> assertTrue ( $result );
$expected = array ( 'Article' => array (
'id' => '5' ,
'user_id' => '1' ,
'title' => 'Fiveth Article - New Title' ,
'body' => 'Fiveth Article Body' ,
'published' => 'N'
));
$result = $TestModel -> read ( array ( 'id' , 'user_id' , 'title' , 'body' , 'published' ), 5 );
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveFromXml method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveFromXml () {
$this -> loadFixtures ( 'Article' );
App :: import ( 'Core' , 'Xml' );
$Article = new Article ();
$Article -> save ( new Xml ( '<article title="test xml" user_id="5" />' ));
$this -> assertTrue ( $Article -> save ( new Xml ( '<article title="test xml" user_id="5" />' )));
$results = $Article -> find ( array ( 'Article.title' => 'test xml' ));
$this -> assertTrue ( $results );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveHabtm method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveHabtm () {
$this -> loadFixtures ( 'Article' , 'User' , 'Comment' , 'Tag' , 'ArticlesTag' );
$TestModel =& new Article ();
$result = $TestModel -> findById ( 2 );
$expected = array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Comment' => array (
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array (
'Article' => array ( 'id' => '2' , 'title' => 'New Second Article' ),
'Tag' => array ( 'Tag' => array ( 1 , 2 ))
);
$this -> assertTrue ( $TestModel -> set ( $data ));
$this -> assertTrue ( $TestModel -> save ());
$TestModel -> unbindModel ( array ( 'belongsTo' => array ( 'User' ), 'hasMany' => array ( 'Comment' )));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article' , 'body' => 'Second Article Body' ),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Article' => array ( 'id' => '2' ), 'Tag' => array ( 'Tag' => array ( 2 , 3 )));
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> save ();
$this -> assertTrue ( $result );
$TestModel -> unbindModel ( array ( 'belongsTo' => array ( 'User' ), 'hasMany' => array ( 'Comment' )));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article' , 'body' => 'Second Article Body' ),
'Tag' => array (
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Tag' => array ( 'Tag' => array ( 1 , 2 , 3 )));
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> save ();
$this -> assertTrue ( $result );
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article' , 'body' => 'Second Article Body' ),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Tag' => array ( 'Tag' => array ()));
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> save ();
$this -> assertTrue ( $result );
2008-10-30 00:05:59 +00:00
$data = array ( 'Tag' => array ( 'Tag' => '' ));
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> save ();
$this -> assertTrue ( $result );
2008-05-30 11:40:08 +00:00
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article' , 'body' => 'Second Article Body' ),
'Tag' => array ()
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Tag' => array ( 'Tag' => array ( 2 , 3 )));
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> save ();
$this -> assertTrue ( $result );
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array (
'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article' , 'body' => 'Second Article Body'
),
'Tag' => array (
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Tag' => array ( 'Tag' => array ( 1 , 2 )), 'Article' => array ( 'id' => '2' , 'title' => 'New Second Article' ));
$this -> assertTrue ( $TestModel -> set ( $data ));
$this -> assertTrue ( $TestModel -> save ());
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array (
'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article' , 'body' => 'Second Article Body'
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Tag' => array ( 'Tag' => array ( 1 , 2 )), 'Article' => array ( 'id' => '2' , 'title' => 'New Second Article Title' ));
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$this -> assertTrue ( $TestModel -> save ());
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array (
'id' => '2' , 'user_id' => '3' , 'title' => 'New Second Article Title' , 'body' => 'Second Article Body'
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array ( 'Tag' => array ( 'Tag' => array ( 2 , 3 )), 'Article' => array ( 'id' => '2' , 'title' => 'Changed Second Article' ));
$this -> assertTrue ( $TestModel -> set ( $data ));
$this -> assertTrue ( $TestModel -> save ());
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array (
'id' => '2' , 'user_id' => '3' , 'title' => 'Changed Second Article' , 'body' => 'Second Article Body'
),
'Tag' => array (
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array (
'Tag' => array (
'Tag' => array ( 1 , 3 )
),
'Article' => array ( 'id' => '2' ),
);
$result = $TestModel -> set ( $data );
$this -> assertTrue ( $result );
$result = $TestModel -> save ();
$this -> assertTrue ( $result );
$TestModel -> unbindModel ( array (
'belongsTo' => array ( 'User' ),
'hasMany' => array ( 'Comment' )
));
$result = $TestModel -> find ( array ( 'Article.id' => 2 ), array ( 'id' , 'user_id' , 'title' , 'body' ));
$expected = array (
'Article' => array (
'id' => '2' , 'user_id' => '3' , 'title' => 'Changed Second Article' , 'body' => 'Second Article Body'
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
$data = array (
'Article' => array ( 'id' => 10 , 'user_id' => '2' , 'title' => 'New Article With Tags and fieldList' , 'body' => 'New Article Body with Tags and fieldList' , 'created' => '2007-03-18 14:55:23' , 'updated' => '2007-03-18 14:57:31' ),
'Tag' => array ( 'Tag' => array ( 1 , 2 , 3 ))
);
$result = $TestModel -> create () && $TestModel -> save ( $data , true , array ( 'user_id' , 'title' , 'published' ));
$this -> assertTrue ( $result );
$TestModel -> unbindModel ( array ( 'belongsTo' => array ( 'User' ), 'hasMany' => array ( 'Comment' )));
$result = $TestModel -> read ();
$expected = array (
'Article' => array ( 'id' => 4 , 'user_id' => 2 , 'title' => 'New Article With Tags and fieldList' , 'body' => '' , 'published' => 'N' , 'created' => '' , 'updated' => '' ),
'Tag' => array (
0 => array ( 'id' => 1 , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
1 => array ( 'id' => 2 , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
2 => array ( 'id' => 3 , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
);
$this -> assertEqual ( $result , $expected );
}
2008-10-29 07:44:05 +00:00
/**
2008-06-02 19:22:55 +00:00
* testSaveHabtmCustomKeys method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-06-01 21:04:30 +00:00
function testSaveHabtmCustomKeys () {
$this -> loadFixtures ( 'Story' , 'StoriesTag' , 'Tag' );
$Story =& new Story ();
2008-06-14 20:39:27 +00:00
2008-06-01 21:04:30 +00:00
$data = array ( 'Story' => array ( 'story' => '1' ), 'Tag' => array ( 'Tag' => array ( 2 , 3 )));
$result = $Story -> set ( $data );
$this -> assertTrue ( $result );
$result = $Story -> save ();
$this -> assertTrue ( $result );
2008-06-14 20:39:27 +00:00
2008-06-01 21:04:30 +00:00
$result = $Story -> find ( 'all' );
$expected = array (
array (
'Story' => array ( 'story' => 1 , 'title' => 'First Story' ),
'Tag' => array (
array ( 'id' => 2 , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
array ( 'id' => 3 , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
),
array (
'Story' => array ( 'story' => 2 , 'title' => 'Second Story' ),
'Tag' => array ()
)
);
$this -> assertEqual ( $result , $expected );
}
2008-05-30 11:40:08 +00:00
/**
2008-10-29 07:44:05 +00:00
* testHabtmSaveKeyResolution method
*
* @ access public
* @ return void
2008-05-30 11:40:08 +00:00
*/
function testHabtmSaveKeyResolution () {
$this -> loadFixtures ( 'Apple' , 'Device' , 'ThePaperMonkies' );
$ThePaper =& new ThePaper ();
2008-10-29 07:19:26 +00:00
$ThePaper -> id = 1 ;
2008-05-30 11:40:08 +00:00
$ThePaper -> save ( array ( 'Monkey' => array ( 2 , 3 )));
2008-10-29 07:19:26 +00:00
$result = $ThePaper -> findById ( 1 );
$expected = array (
array ( 'id' => '2' , 'device_type_id' => '1' , 'name' => 'Device 2' , 'typ' => '1' ),
array ( 'id' => '3' , 'device_type_id' => '1' , 'name' => 'Device 3' , 'typ' => '2' )
);
$this -> assertEqual ( $result [ 'Monkey' ], $expected );
$ThePaper -> id = 2 ;
$ThePaper -> save ( array ( 'Monkey' => array ( 1 , 2 , 3 )));
$result = $ThePaper -> findById ( 2 );
$expected = array (
array ( 'id' => '1' , 'device_type_id' => '1' , 'name' => 'Device 1' , 'typ' => '1' ),
array ( 'id' => '2' , 'device_type_id' => '1' , 'name' => 'Device 2' , 'typ' => '1' ),
array ( 'id' => '3' , 'device_type_id' => '1' , 'name' => 'Device 3' , 'typ' => '2' ),
);
$this -> assertEqual ( $result [ 'Monkey' ], $expected );
$ThePaper -> id = 2 ;
$ThePaper -> save ( array ( 'Monkey' => array ( 1 , 3 )));
$result = $ThePaper -> findById ( 2 );
$expected = array (
array ( 'id' => '3' , 'device_type_id' => '1' , 'name' => 'Device 3' , 'typ' => '2' ),
array ( 'id' => '1' , 'device_type_id' => '1' , 'name' => 'Device 1' , 'typ' => '1' ),
);
$this -> assertEqual ( $result [ 'Monkey' ], $expected );
2008-05-30 11:40:08 +00:00
$result = $ThePaper -> findById ( 1 );
$expected = array (
array ( 'id' => '2' , 'device_type_id' => '1' , 'name' => 'Device 2' , 'typ' => '1' ),
array ( 'id' => '3' , 'device_type_id' => '1' , 'name' => 'Device 3' , 'typ' => '2' )
);
$this -> assertEqual ( $result [ 'Monkey' ], $expected );
}
2008-10-26 18:51:38 +00:00
/**
* test that Caches are getting cleared on save () .
* ensure that both inflections of controller names are getting cleared
* as url for controller could be either overallFavorites / index or overall_favorites / index
*
* @ return void
**/
function testCacheClearOnSave () {
$_back = array (
'check' => Configure :: read ( 'Cache.check' ),
'disable' => Configure :: read ( 'Cache.disable' ),
);
Configure :: write ( 'Cache.check' , true );
Configure :: write ( 'Cache.disable' , false );
2008-10-29 07:19:26 +00:00
2008-10-26 18:51:38 +00:00
$this -> loadFixtures ( 'OverallFavorite' );
$OverallFavorite =& new OverallFavorite ();
2008-10-29 07:19:26 +00:00
2008-10-26 18:51:38 +00:00
touch ( CACHE . 'views' . DS . 'some_dir_overallfavorites_index.php' );
touch ( CACHE . 'views' . DS . 'some_dir_overall_favorites_index.php' );
2008-10-29 07:19:26 +00:00
2008-10-26 18:51:38 +00:00
$data = array (
'OverallFavorite' => array (
2008-10-29 07:19:26 +00:00
'model_type' => '8-track' ,
2008-10-26 18:51:38 +00:00
'model_id' => '3' ,
'priority' => '1'
)
);
$OverallFavorite -> create ( $data );
$OverallFavorite -> save ();
2008-10-29 07:19:26 +00:00
2008-10-26 18:51:38 +00:00
$this -> assertFalse ( file_exists ( CACHE . 'views' . DS . 'some_dir_overallfavorites_index.php' ));
$this -> assertFalse ( file_exists ( CACHE . 'views' . DS . 'some_dir_overall_favorites_index.php' ));
2008-10-29 07:19:26 +00:00
2008-10-26 18:51:38 +00:00
Configure :: write ( 'Cache.check' , $_back [ 'check' ]);
Configure :: write ( 'Cache.disable' , $_back [ 'disable' ]);
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAll method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAll () {
$this -> loadFixtures ( 'Post' , 'Author' , 'Comment' , 'Attachment' );
$TestModel =& new Post ();
$result = $TestModel -> find ( 'all' );
$this -> assertEqual ( count ( $result ), 3 );
$this -> assertFalse ( isset ( $result [ 3 ]));
$ts = date ( 'Y-m-d H:i:s' );
$TestModel -> saveAll ( array (
'Post' => array ( 'title' => 'Post with Author' , 'body' => 'This post will be saved with an author' ),
'Author' => array ( 'user' => 'bob' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf90' )
));
$result = $TestModel -> find ( 'all' );
$expected = array (
'Post' => array ( 'id' => '4' , 'author_id' => '5' , 'title' => 'Post with Author' , 'body' => 'This post will be saved with an author' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ),
'Author' => array ( 'id' => '5' , 'user' => 'bob' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf90' , 'created' => $ts , 'updated' => $ts , 'test' => 'working' )
);
$this -> assertEqual ( $result [ 3 ], $expected );
$this -> assertEqual ( count ( $result ), 4 );
$TestModel -> deleteAll ( true );
$this -> assertEqual ( $TestModel -> find ( 'all' ), array ());
// SQLite seems to reset the PK counter when that happens, so we need this to make the tests pass
$this -> db -> truncate ( $TestModel );
$ts = date ( 'Y-m-d H:i:s' );
$TestModel -> saveAll ( array (
array ( 'title' => 'Multi-record post 1' , 'body' => 'First multi-record post' , 'author_id' => 2 ),
array ( 'title' => 'Multi-record post 2' , 'body' => 'Second multi-record post' , 'author_id' => 2 )
));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 , 'order' => 'Post.id ASC' ));
$expected = array (
array ( 'Post' => array ( 'id' => '1' , 'author_id' => '2' , 'title' => 'Multi-record post 1' , 'body' => 'First multi-record post' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts )),
array ( 'Post' => array ( 'id' => '2' , 'author_id' => '2' , 'title' => 'Multi-record post 2' , 'body' => 'Second multi-record post' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ))
);
$this -> assertEqual ( $result , $expected );
$TestModel =& new Comment ();
$ts = date ( 'Y-m-d H:i:s' );
$result = $TestModel -> saveAll ( array (
'Comment' => array ( 'article_id' => 2 , 'user_id' => 2 , 'comment' => 'New comment with attachment' , 'published' => 'Y' ),
'Attachment' => array ( 'attachment' => 'some_file.tgz' )
));
$this -> assertTrue ( $result );
$result = $TestModel -> find ( 'all' );
$expected = array ( 'id' => '7' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'New comment with attachment' , 'published' => 'Y' , 'created' => $ts , 'updated' => $ts );
$this -> assertEqual ( $result [ 6 ][ 'Comment' ], $expected );
$expected = array ( 'id' => '7' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'New comment with attachment' , 'published' => 'Y' , 'created' => $ts , 'updated' => $ts );
$this -> assertEqual ( $result [ 6 ][ 'Comment' ], $expected );
$expected = array ( 'id' => '2' , 'comment_id' => '7' , 'attachment' => 'some_file.tgz' , 'created' => $ts , 'updated' => $ts );
$this -> assertEqual ( $result [ 6 ][ 'Attachment' ], $expected );
}
2008-10-29 07:19:26 +00:00
2008-10-29 00:22:52 +00:00
/**
* Test SaveAll with Habtm relations
*
* @ return void
**/
function testSaveAllHabtm () {
$this -> loadFixtures ( 'Article' , 'Tag' , 'Comment' , 'User' );
$data = array (
'Article' => array (
'user_id' => 1 , 'title' => 'RRticle Has and belongs to Many Tags'
),
'Tag' => array (
'Tag' => array (
1 , 2
)
),
'Comment' => array (
array ( 'comment' => 'Article comment' , 'user_id' => 1 ),
),
);
$Article =& new Article ();
$result = $Article -> saveAll ( $data );
$this -> assertTrue ( $result );
2008-10-29 07:19:26 +00:00
2008-10-29 00:22:52 +00:00
$result = $Article -> read ();
$this -> assertEqual ( count ( $result [ 'Tag' ]), 2 );
$this -> assertEqual ( $result [ 'Tag' ][ 0 ][ 'tag' ], 'tag1' );
$this -> assertEqual ( count ( $result [ 'Comment' ]), 1 );
$this -> assertEqual ( count ( $result [ 'Comment' ][ 0 ][ 'comment' ][ 'Article comment' ]), 1 );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllHasOne method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllHasOne () {
$model = new Comment ();
$model -> deleteAll ( true );
$this -> assertEqual ( $model -> find ( 'all' ), array ());
$model -> Attachment -> deleteAll ( true );
$this -> assertEqual ( $model -> Attachment -> find ( 'all' ), array ());
$this -> assertTrue ( $model -> saveAll ( array (
'Comment' => array ( 'comment' => 'Comment with attachment' , 'article_id' => 1 , 'user_id' => 1 ),
'Attachment' => array ( 'attachment' => 'some_file.zip' )
)));
$result = $model -> find ( 'all' , array ( 'fields' => array (
'Comment.id' , 'Comment.comment' , 'Attachment.id' , 'Attachment.comment_id' , 'Attachment.attachment'
)));
$expected = array ( array (
'Comment' => array ( 'id' => '1' , 'comment' => 'Comment with attachment' ),
'Attachment' => array ( 'id' => '1' , 'comment_id' => '1' , 'attachment' => 'some_file.zip' )
));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllBelongsTo method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllBelongsTo () {
$model = new Comment ();
$model -> deleteAll ( true );
$this -> assertEqual ( $model -> find ( 'all' ), array ());
$model -> Article -> deleteAll ( true );
$this -> assertEqual ( $model -> Article -> find ( 'all' ), array ());
$this -> assertTrue ( $model -> saveAll ( array (
'Comment' => array ( 'comment' => 'Article comment' , 'article_id' => 1 , 'user_id' => 1 ),
'Article' => array ( 'title' => 'Model Associations 101' , 'user_id' => 1 )
)));
$result = $model -> find ( 'all' , array ( 'fields' => array (
'Comment.id' , 'Comment.comment' , 'Comment.article_id' , 'Article.id' , 'Article.title'
)));
$expected = array ( array (
'Comment' => array ( 'id' => '1' , 'article_id' => '1' , 'comment' => 'Article comment' ),
'Article' => array ( 'id' => '1' , 'title' => 'Model Associations 101' )
));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllHasOneValidation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllHasOneValidation () {
$model = new Comment ();
$model -> deleteAll ( true );
$this -> assertEqual ( $model -> find ( 'all' ), array ());
$model -> Attachment -> deleteAll ( true );
$this -> assertEqual ( $model -> Attachment -> find ( 'all' ), array ());
$model -> validate = array ( 'comment' => VALID_NOT_EMPTY );
$model -> Attachment -> validate = array ( 'attachment' => VALID_NOT_EMPTY );
$model -> Attachment -> bind ( 'Comment' );
$this -> assertFalse ( $model -> saveAll (
array (
'Comment' => array ( 'comment' => '' , 'article_id' => 1 , 'user_id' => 1 ),
'Attachment' => array ( 'attachment' => '' )
),
array ( 'validate' => 'first' )
));
$expected = array (
'Comment' => array ( 'comment' => 'This field cannot be left blank' ),
'Attachment' => array ( 'attachment' => 'This field cannot be left blank' )
);
$this -> assertEqual ( $model -> validationErrors , $expected [ 'Comment' ]);
$this -> assertEqual ( $model -> Attachment -> validationErrors , $expected [ 'Attachment' ]);
$this -> assertFalse ( $model -> saveAll (
array (
'Comment' => array ( 'comment' => '' , 'article_id' => 1 , 'user_id' => 1 ),
'Attachment' => array ( 'attachment' => '' )
),
array ( 'validate' => 'only' )
));
$this -> assertEqual ( $model -> validationErrors , $expected [ 'Comment' ]);
$this -> assertEqual ( $model -> Attachment -> validationErrors , $expected [ 'Attachment' ]);
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllAtomic method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllAtomic () {
$this -> loadFixtures ( 'Article' , 'User' );
$TestModel =& new Article ();
$result = $TestModel -> saveAll ( array (
'Article' => array ( 'title' => 'Post with Author' , 'body' => 'This post will be saved with an author' , 'user_id' => 2 ),
'Comment' => array ( array ( 'comment' => 'First new comment' , 'user_id' => 2 ))
), array ( 'atomic' => false ));
2008-06-27 06:07:00 +00:00
$this -> assertIdentical ( $result , array ( 'Article' => true , 'Comment' => array ( true )));
2008-05-30 11:40:08 +00:00
$result = $TestModel -> saveAll ( array (
array ( 'id' => '1' , 'title' => 'Baleeted First Post' , 'body' => 'Baleeted!' , 'published' => 'N' ),
array ( 'id' => '2' , 'title' => 'Just update the title' ),
array ( 'title' => 'Creating a fourth post' , 'body' => 'Fourth post body' , 'user_id' => 2 )
), array ( 'atomic' => false ));
$this -> assertIdentical ( $result , array ( true , true , true ));
$TestModel -> validate = array ( 'title' => VALID_NOT_EMPTY , 'author_id' => 'numeric' );
$result = $TestModel -> saveAll ( array (
array ( 'id' => '1' , 'title' => 'Un-Baleeted First Post' , 'body' => 'Not Baleeted!' , 'published' => 'Y' ),
array ( 'id' => '2' , 'title' => '' , 'body' => 'Trying to get away with an empty title' ),
), array ( 'atomic' => false ));
$this -> assertIdentical ( $result , array ( true , false ));
$result = $TestModel -> saveAll ( array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'comment' => 'First new comment' , 'published' => 'Y' , 'user_id' => 1 ),
array ( 'comment' => 'Second new comment' , 'published' => 'Y' , 'user_id' => 2 )
)
), array ( 'atomic' => false ));
2008-06-27 06:07:00 +00:00
$this -> assertIdentical ( $result , array ( 'Article' => true , 'Comment' => array ( true , true )));
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllHasMany method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllHasMany () {
$this -> loadFixtures ( 'Article' , 'Comment' );
$TestModel =& new Article ();
$TestModel -> belongsTo = $TestModel -> hasAndBelongsToMany = array ();
$result = $TestModel -> saveAll ( array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'comment' => 'First new comment' , 'published' => 'Y' , 'user_id' => 1 ),
array ( 'comment' => 'Second new comment' , 'published' => 'Y' , 'user_id' => 2 )
)
));
$this -> assertTrue ( $result );
$result = $TestModel -> findById ( 2 );
$expected = array ( 'First Comment for Second Article' , 'Second Comment for Second Article' , 'First new comment' , 'Second new comment' );
$this -> assertEqual ( Set :: extract ( $result [ 'Comment' ], '{n}.comment' ), $expected );
$result = $TestModel -> saveAll (
array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'comment' => 'Third new comment' , 'published' => 'Y' , 'user_id' => 1 ),
)
),
array ( 'atomic' => false )
);
$this -> assertTrue ( $result );
$result = $TestModel -> findById ( 2 );
$expected = array ( 'First Comment for Second Article' , 'Second Comment for Second Article' , 'First new comment' , 'Second new comment' , 'Third new comment' );
$this -> assertEqual ( Set :: extract ( $result [ 'Comment' ], '{n}.comment' ), $expected );
$TestModel -> beforeSaveReturn = false ;
$result = $TestModel -> saveAll (
array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'comment' => 'Fourth new comment' , 'published' => 'Y' , 'user_id' => 1 ),
)
),
array ( 'atomic' => false )
);
2008-06-27 06:07:00 +00:00
$this -> assertEqual ( $result , array ( 'Article' => false ));
2008-05-30 11:40:08 +00:00
$result = $TestModel -> findById ( 2 );
$expected = array ( 'First Comment for Second Article' , 'Second Comment for Second Article' , 'First new comment' , 'Second new comment' , 'Third new comment' );
$this -> assertEqual ( Set :: extract ( $result [ 'Comment' ], '{n}.comment' ), $expected );
}
2008-10-29 00:22:52 +00:00
/**
2008-06-02 19:22:55 +00:00
* testSaveAllHasManyValidation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-31 22:01:47 +00:00
function testSaveAllHasManyValidation () {
$this -> loadFixtures ( 'Article' , 'Comment' );
$TestModel =& new Article ();
$TestModel -> belongsTo = $TestModel -> hasAndBelongsToMany = array ();
$TestModel -> Comment -> validate = array ( 'comment' => VALID_NOT_EMPTY );
$result = $TestModel -> saveAll ( array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'comment' => '' , 'published' => 'Y' , 'user_id' => 1 ),
)
));
$expected = array ( 'Comment' => array ( false ));
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
2008-05-31 22:01:47 +00:00
$expected = array ( 'Comment' => array (
array ( 'comment' => 'This field cannot be left blank' )
));
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
$expected = array (
array ( 'comment' => 'This field cannot be left blank' )
);
$this -> assertEqual ( $TestModel -> Comment -> validationErrors , $expected );
2008-06-14 20:39:27 +00:00
2008-05-31 22:01:47 +00:00
$result = $TestModel -> saveAll ( array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'comment' => '' , 'published' => 'Y' , 'user_id' => 1 ),
)
), array ( 'validate' => 'only' ));
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllTransaction method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllTransaction () {
$this -> loadFixtures ( 'Post' , 'Author' , 'Comment' , 'Attachment' );
$TestModel =& new Post ();
$TestModel -> validate = array ( 'title' => VALID_NOT_EMPTY );
$data = array (
array ( 'author_id' => 1 , 'title' => 'New Fourth Post' ),
array ( 'author_id' => 1 , 'title' => 'New Fifth Post' ),
array ( 'author_id' => 1 , 'title' => '' )
);
$ts = date ( 'Y-m-d H:i:s' );
$this -> assertFalse ( $TestModel -> saveAll ( $data ));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 ));
$expected = array (
array ( 'Post' => array ( 'id' => '1' , 'author_id' => 1 , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )),
array ( 'Post' => array ( 'id' => '2' , 'author_id' => 3 , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )),
array ( 'Post' => array ( 'id' => '3' , 'author_id' => 1 , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ))
);
if ( count ( $result ) != 3 ) {
// Database doesn't support transactions
$expected [] = array ( 'Post' => array ( 'id' => '4' , 'author_id' => 1 , 'title' => 'New Fourth Post' , 'body' => null , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ));
$expected [] = array ( 'Post' => array ( 'id' => '5' , 'author_id' => 1 , 'title' => 'New Fifth Post' , 'body' => null , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ));
$this -> assertEqual ( $result , $expected );
// Skip the rest of the transactional tests
return ;
}
$this -> assertEqual ( $result , $expected );
$data = array (
array ( 'author_id' => 1 , 'title' => 'New Fourth Post' ),
array ( 'author_id' => 1 , 'title' => '' ),
array ( 'author_id' => 1 , 'title' => 'New Sixth Post' )
);
$ts = date ( 'Y-m-d H:i:s' );
$this -> assertFalse ( $TestModel -> saveAll ( $data ));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 ));
$expected = array (
array ( 'Post' => array ( 'id' => '1' , 'author_id' => 1 , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )),
array ( 'Post' => array ( 'id' => '2' , 'author_id' => 3 , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )),
array ( 'Post' => array ( 'id' => '3' , 'author_id' => 1 , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ))
);
if ( count ( $result ) != 3 ) {
// Database doesn't support transactions
$expected [] = array ( 'Post' => array ( 'id' => '4' , 'author_id' => 1 , 'title' => 'New Fourth Post' , 'body' => 'Third Post Body' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ));
$expected [] = array ( 'Post' => array ( 'id' => '5' , 'author_id' => 1 , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ));
}
$this -> assertEqual ( $result , $expected );
$TestModel -> validate = array ( 'title' => VALID_NOT_EMPTY );
$data = array (
array ( 'author_id' => 1 , 'title' => 'New Fourth Post' ),
array ( 'author_id' => 1 , 'title' => 'New Fifth Post' ),
array ( 'author_id' => 1 , 'title' => 'New Sixth Post' )
);
$this -> assertTrue ( $TestModel -> saveAll ( $data ));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 , 'fields' => array ( 'author_id' , 'title' , 'body' , 'published' )));
$expected = array (
array ( 'Post' => array ( 'author_id' => 1 , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' )),
array ( 'Post' => array ( 'author_id' => 3 , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' )),
array ( 'Post' => array ( 'author_id' => 1 , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' )),
array ( 'Post' => array ( 'author_id' => 1 , 'title' => 'New Fourth Post' , 'body' => '' , 'published' => 'N' )),
array ( 'Post' => array ( 'author_id' => 1 , 'title' => 'New Fifth Post' , 'body' => '' , 'published' => 'N' )),
array ( 'Post' => array ( 'author_id' => 1 , 'title' => 'New Sixth Post' , 'body' => '' , 'published' => 'N' ))
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllValidation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllValidation () {
$this -> loadFixtures ( 'Post' , 'Author' , 'Comment' , 'Attachment' );
$TestModel =& new Post ();
$data = array (
array ( 'id' => '1' , 'title' => 'Baleeted First Post' , 'body' => 'Baleeted!' , 'published' => 'N' ),
array ( 'id' => '2' , 'title' => 'Just update the title' ),
array ( 'title' => 'Creating a fourth post' , 'body' => 'Fourth post body' , 'author_id' => 2 )
);
$this -> assertTrue ( $TestModel -> saveAll ( $data ));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 ));
$ts = date ( 'Y-m-d H:i:s' );
$expected = array (
array ( 'Post' => array ( 'id' => '1' , 'author_id' => '1' , 'title' => 'Baleeted First Post' , 'body' => 'Baleeted!' , 'published' => 'N' , 'created' => '2007-03-18 10:39:23' , 'updated' => $ts )),
array ( 'Post' => array ( 'id' => '2' , 'author_id' => '3' , 'title' => 'Just update the title' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => $ts )),
array ( 'Post' => array ( 'id' => '3' , 'author_id' => '1' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' )),
array ( 'Post' => array ( 'id' => '4' , 'author_id' => '2' , 'title' => 'Creating a fourth post' , 'body' => 'Fourth post body' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ))
);
$this -> assertEqual ( $result , $expected );
$TestModel -> validate = array ( 'title' => VALID_NOT_EMPTY , 'author_id' => 'numeric' );
$data = array (
array ( 'id' => '1' , 'title' => 'Un-Baleeted First Post' , 'body' => 'Not Baleeted!' , 'published' => 'Y' ),
array ( 'id' => '2' , 'title' => '' , 'body' => 'Trying to get away with an empty title' ),
);
$result = $TestModel -> saveAll ( $data );
$this -> assertEqual ( $result , false );
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 ));
2008-08-26 13:31:07 +00:00
$errors = array ( 1 => array ( 'title' => 'This field cannot be left blank' ));
2008-05-30 11:40:08 +00:00
$transactionWorked = Set :: matches ( '/Post[1][title=Baleeted First Post]' , $result );
if ( ! $transactionWorked ) {
$this -> assertTrue ( Set :: matches ( '/Post[1][title=Un-Baleeted First Post]' , $result ));
$this -> assertTrue ( Set :: matches ( '/Post[2][title=Just update the title]' , $result ));
}
$this -> assertEqual ( $TestModel -> validationErrors , $errors );
$TestModel -> validate = array ( 'title' => VALID_NOT_EMPTY , 'author_id' => 'numeric' );
$data = array (
array ( 'id' => '1' , 'title' => 'Un-Baleeted First Post' , 'body' => 'Not Baleeted!' , 'published' => 'Y' ),
array ( 'id' => '2' , 'title' => '' , 'body' => 'Trying to get away with an empty title' ),
);
$result = $TestModel -> saveAll ( $data , array ( 'atomic' => false ));
$this -> assertEqual ( $result , array ( true , false ));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 ));
2008-08-26 13:31:07 +00:00
$errors = array ( 1 => array ( 'title' => 'This field cannot be left blank' ));
2008-05-30 11:40:08 +00:00
$newTs = date ( 'Y-m-d H:i:s' );
$expected = array (
array ( 'Post' => array ( 'id' => '1' , 'author_id' => '1' , 'title' => 'Un-Baleeted First Post' , 'body' => 'Not Baleeted!' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => $newTs )),
array ( 'Post' => array ( 'id' => '2' , 'author_id' => '3' , 'title' => 'Just update the title' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => $ts )),
array ( 'Post' => array ( 'id' => '3' , 'author_id' => '1' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' )),
array ( 'Post' => array ( 'id' => '4' , 'author_id' => '2' , 'title' => 'Creating a fourth post' , 'body' => 'Fourth post body' , 'published' => 'N' , 'created' => $ts , 'updated' => $ts ))
);
$this -> assertEqual ( $result , $expected );
$this -> assertEqual ( $TestModel -> validationErrors , $errors );
$data = array (
array ( 'id' => '1' , 'title' => 'Re-Baleeted First Post' , 'body' => 'Baleeted!' , 'published' => 'N' ),
array ( 'id' => '2' , 'title' => '' , 'body' => 'Trying to get away with an empty title' ),
);
$this -> assertFalse ( $TestModel -> saveAll ( $data , array ( 'validate' => 'first' )));
$result = $TestModel -> find ( 'all' , array ( 'recursive' => - 1 ));
$this -> assertEqual ( $result , $expected );
$this -> assertEqual ( $TestModel -> validationErrors , $errors );
$data = array (
array ( 'title' => 'First new post' , 'body' => 'Woohoo!' , 'published' => 'Y' ),
array ( 'title' => 'Empty body' , 'body' => '' )
);
$TestModel -> validate [ 'body' ] = VALID_NOT_EMPTY ;
}
2008-06-02 19:22:55 +00:00
/**
* testSaveAllValidationOnly method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllValidationOnly () {
$TestModel =& new Comment ();
$TestModel -> Attachment -> validate = array ( 'attachment' => VALID_NOT_EMPTY );
$data = array (
'Comment' => array (
'comment' => 'This is the comment'
),
'Attachment' => array (
'attachment' => ''
)
);
$result = $TestModel -> saveAll ( $data , array ( 'validate' => 'only' ));
$this -> assertFalse ( $result );
2008-09-18 01:54:31 +00:00
2008-09-03 16:44:48 +00:00
$TestModel =& new Article ();
$TestModel -> validate = array ( 'title' => VALID_NOT_EMPTY );
$result = $TestModel -> saveAll (
array (
0 => array ( 'title' => '' ),
1 => array ( 'title' => 'title 1' ),
2 => array ( 'title' => 'title 2' ),
),
array ( 'validate' => 'only' )
);
$this -> assertFalse ( $result );
$expected = array (
0 => array ( 'title' => 'This field cannot be left blank' ),
);
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
$result = $TestModel -> saveAll (
array (
0 => array ( 'title' => 'title 0' ),
1 => array ( 'title' => '' ),
2 => array ( 'title' => 'title 2' ),
),
array ( 'validate' => 'only' )
);
$this -> assertFalse ( $result );
$expected = array (
1 => array ( 'title' => 'This field cannot be left blank' ),
);
2008-09-18 01:54:31 +00:00
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
2008-05-30 11:40:08 +00:00
}
2008-09-18 01:54:31 +00:00
2008-06-02 19:22:55 +00:00
/**
* testSaveAllValidateFirst method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveAllValidateFirst () {
$model =& new Article ();
$model -> deleteAll ( true );
$model -> Comment -> validate = array ( 'comment' => VALID_NOT_EMPTY );
$result = $model -> saveAll ( array (
'Article' => array ( 'title' => 'Post with Author' , 'body' => 'This post will be saved author' ),
'Comment' => array (
array ( 'comment' => 'First new comment' ),
array ( 'comment' => '' )
)
), array ( 'validate' => 'first' ));
$this -> assertFalse ( $result );
$result = $model -> find ( 'all' );
$this -> assertEqual ( $result , array ());
2008-05-31 22:01:47 +00:00
$expected = array ( 'Comment' => array ( 1 => array ( 'comment' => 'This field cannot be left blank' )));
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $model -> Comment -> validationErrors , $expected [ 'Comment' ]);
$this -> assertIdentical ( $model -> Comment -> find ( 'count' ), 0 );
$result = $model -> saveAll (
array (
'Article' => array ( 'title' => 'Post with Author' , 'body' => 'This post will be saved with an author' , 'user_id' => 2 ),
'Comment' => array ( array ( 'comment' => 'Only new comment' , 'user_id' => 2 ))
),
array ( 'validate' => 'first' )
);
$this -> assertIdentical ( $result , true );
$result = $model -> Comment -> find ( 'all' );
$this -> assertIdentical ( count ( $result ), 1 );
$result = Set :: extract ( '/Comment/article_id' , $result );
$this -> assertTrue ( $result [ 0 ] === 1 || $result [ 0 ] === '1' );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveWithCounterCache method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveWithCounterCache () {
$this -> loadFixtures ( 'Syfile' , 'Item' );
$TestModel =& new Syfile ();
$TestModel2 =& new Item ();
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], null );
$TestModel2 -> save ( array ( 'name' => 'Item 7' , 'syfile_id' => 1 , 'published' => false ));
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], '2' );
$TestModel2 -> delete ( 1 );
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], '1' );
$TestModel2 -> id = 2 ;
$TestModel2 -> saveField ( 'syfile_id' , 1 );
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], '2' );
$result = $TestModel -> findById ( 2 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], null );
}
2008-07-29 01:18:57 +00:00
/**
* test Counter Cache With Self Joining table
*
* @ return void
* @ access public
2008-07-31 15:38:23 +00:00
*/
2008-07-29 01:18:57 +00:00
function testCounterCacheWithSelfJoin () {
$this -> loadFixtures ( 'CategoryThread' );
$this -> db -> query ( 'ALTER TABLE ' . $this -> db -> fullTableName ( 'category_threads' ) . " ADD column child_count INT(11) DEFAULT '0' " );
$Category =& new CategoryThread ();
2008-07-31 15:38:23 +00:00
$result = $Category -> updateAll ( array ( 'CategoryThread.name' => " 'updated' " ), array ( 'CategoryThread.parent_id' => 5 ));
2008-07-29 01:18:57 +00:00
$this -> assertTrue ( $result );
2008-07-31 15:38:23 +00:00
2008-07-29 01:18:57 +00:00
$Category =& new CategoryThread ();
2008-07-31 15:38:23 +00:00
$Category -> belongsTo [ 'ParentCategory' ][ 'counterCache' ] = 'child_count' ;
2008-07-29 01:18:57 +00:00
$Category -> updateCounterCache ( array ( 'parent_id' => 5 ));
2008-07-30 01:12:03 +00:00
$result = Set :: extract ( $Category -> find ( 'all' , array ( 'conditions' => array ( 'CategoryThread.id' => 5 ))), '{n}.CategoryThread.child_count' );
$expected = array_fill ( 0 , 1 , 1 );
2008-07-29 01:18:57 +00:00
$this -> assertEqual ( $result , $expected );
}
2008-07-31 15:38:23 +00:00
2008-06-02 19:22:55 +00:00
/**
* testSaveWithCounterCacheScope method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveWithCounterCacheScope () {
$this -> loadFixtures ( 'Syfile' , 'Item' );
$TestModel =& new Syfile ();
$TestModel2 =& new Item ();
$TestModel2 -> belongsTo [ 'Syfile' ][ 'counterCache' ] = true ;
$TestModel2 -> belongsTo [ 'Syfile' ][ 'counterScope' ] = array ( 'published' => true );
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], null );
$TestModel2 -> save ( array ( 'name' => 'Item 7' , 'syfile_id' => 1 , 'published' => true ));
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], '1' );
$TestModel2 -> id = 1 ;
$TestModel2 -> saveField ( 'published' , true );
$result = $TestModel -> findById ( 1 );
$this -> assertIdentical ( $result [ 'Syfile' ][ 'item_count' ], '2' );
}
2008-06-02 19:22:55 +00:00
/**
* testDel method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDel () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Article ();
$result = $TestModel -> del ( 2 );
$this -> assertTrue ( $result );
$result = $TestModel -> read ( null , 2 );
$this -> assertFalse ( $result );
$TestModel -> recursive = - 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => array ( 'id' , 'title' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' )),
array ( 'Article' => array ( 'id' => 3 , 'title' => 'Third Article' ))
);
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> del ( 3 );
$this -> assertTrue ( $result );
$result = $TestModel -> read ( null , 3 );
$this -> assertFalse ( $result );
$TestModel -> recursive = - 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => array ( 'id' , 'title' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' ))
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testDeleteAll method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDeleteAll () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Article ();
$data = array ( 'Article' => array ( 'user_id' => 2 , 'id' => 4 , 'title' => 'Fourth Article' , 'published' => 'N' ));
$result = $TestModel -> set ( $data ) && $TestModel -> save ();
$this -> assertTrue ( $result );
$data = array ( 'Article' => array ( 'user_id' => 2 , 'id' => 5 , 'title' => 'Fifth Article' , 'published' => 'Y' ));
$result = $TestModel -> set ( $data ) && $TestModel -> save ();
$this -> assertTrue ( $result );
$data = array ( 'Article' => array ( 'user_id' => 1 , 'id' => 6 , 'title' => 'Sixth Article' , 'published' => 'N' ));
$result = $TestModel -> set ( $data ) && $TestModel -> save ();
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => array ( 'id' , 'user_id' , 'title' , 'published' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Article' => array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 2 , 'user_id' => 3 , 'title' => 'Second Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 4 , 'user_id' => 2 , 'title' => 'Fourth Article' , 'published' => 'N' )),
array ( 'Article' => array ( 'id' => 5 , 'user_id' => 2 , 'title' => 'Fifth Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 6 , 'user_id' => 1 , 'title' => 'Sixth Article' , 'published' => 'N' ))
);
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> deleteAll ( array ( 'Article.published' => 'N' ));
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => array ( 'id' , 'user_id' , 'title' , 'published' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Article' => array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 2 , 'user_id' => 3 , 'title' => 'Second Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 5 , 'user_id' => 2 , 'title' => 'Fifth Article' , 'published' => 'Y' ))
);
$this -> assertEqual ( $result , $expected );
2008-10-22 02:37:05 +00:00
$result = $TestModel -> deleteAll ( array ( 'Article.user_id' => array ( 2 , 3 )), true , true );
2008-05-30 11:40:08 +00:00
$this -> assertTrue ( $result );
$TestModel -> recursive = - 1 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => array ( 'id' , 'user_id' , 'title' , 'published' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Article' => array ( 'id' => 1 , 'user_id' => 1 , 'title' => 'First Article' , 'published' => 'Y' )),
array ( 'Article' => array ( 'id' => 3 , 'user_id' => 1 , 'title' => 'Third Article' , 'published' => 'Y' ))
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testRecursiveDel method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testRecursiveDel () {
$this -> loadFixtures ( 'Article' , 'Comment' , 'Attachment' );
$TestModel =& new Article ();
$result = $TestModel -> del ( 2 );
$this -> assertTrue ( $result );
$TestModel -> recursive = 2 ;
$result = $TestModel -> read ( null , 2 );
$this -> assertFalse ( $result );
$result = $TestModel -> Comment -> read ( null , 5 );
$this -> assertFalse ( $result );
$result = $TestModel -> Comment -> read ( null , 6 );
$this -> assertFalse ( $result );
$result = $TestModel -> Comment -> Attachment -> read ( null , 1 );
$this -> assertFalse ( $result );
2008-08-14 16:52:29 +00:00
$result = $TestModel -> find ( 'count' );
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , 2 );
2008-08-14 16:52:29 +00:00
$result = $TestModel -> Comment -> find ( 'count' );
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , 4 );
2008-08-14 16:52:29 +00:00
$result = $TestModel -> Comment -> Attachment -> find ( 'count' );
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , 0 );
}
2008-06-02 19:22:55 +00:00
/**
* testDependentExclusiveDelete method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDependentExclusiveDelete () {
$this -> loadFixtures ( 'Article' , 'Comment' );
$TestModel =& new Article10 ();
$result = $TestModel -> find ( 'all' );
$this -> assertEqual ( count ( $result [ 0 ][ 'Comment' ]), 4 );
$this -> assertEqual ( count ( $result [ 1 ][ 'Comment' ]), 2 );
$this -> assertEqual ( $TestModel -> Comment -> find ( 'count' ), 6 );
$TestModel -> delete ( 1 );
$this -> assertEqual ( $TestModel -> Comment -> find ( 'count' ), 2 );
}
2008-06-02 19:22:55 +00:00
/**
* testDeleteLinks method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDeleteLinks () {
$this -> loadFixtures ( 'Article' , 'ArticlesTag' , 'Tag' );
$TestModel =& new Article ();
$result = $TestModel -> ArticlesTag -> find ( 'all' );
$expected = array (
array ( 'ArticlesTag' => array ( 'article_id' => '1' , 'tag_id' => '1' )),
array ( 'ArticlesTag' => array ( 'article_id' => '1' , 'tag_id' => '2' )),
array ( 'ArticlesTag' => array ( 'article_id' => '2' , 'tag_id' => '1' )),
array ( 'ArticlesTag' => array ( 'article_id' => '2' , 'tag_id' => '3' ))
);
$this -> assertEqual ( $result , $expected );
$TestModel -> delete ( 1 );
$result = $TestModel -> ArticlesTag -> find ( 'all' );
$expected = array (
array ( 'ArticlesTag' => array ( 'article_id' => '2' , 'tag_id' => '1' )),
array ( 'ArticlesTag' => array ( 'article_id' => '2' , 'tag_id' => '3' ))
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testFindAllThreaded method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindAllThreaded () {
$this -> loadFixtures ( 'Category' );
$TestModel =& new Category ();
2008-06-26 17:28:12 +00:00
$result = $TestModel -> find ( 'threaded' );
2008-05-30 11:40:08 +00:00
$expected = array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '1' ,
'parent_id' => '0' ,
'name' => 'Category 1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '2' ,
'parent_id' => '1' ,
'name' => 'Category 1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-07-05 14:10:42 +00:00
'children' => array (
array ( 'Category' => array (
'id' => '7' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()),
array ( 'Category' => array (
'id' => '8' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()))
2008-05-30 11:40:08 +00:00
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '3' ,
'parent_id' => '1' ,
'name' => 'Category 1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '4' ,
'parent_id' => '0' ,
'name' => 'Category 2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '5' ,
'parent_id' => '0' ,
'name' => 'Category 3' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '6' ,
'parent_id' => '5' ,
'name' => 'Category 3.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
)
);
$this -> assertEqual ( $result , $expected );
2008-06-26 17:28:12 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'conditions' => array ( 'Category.name LIKE' => 'Category 1%' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '1' ,
'parent_id' => '0' ,
'name' => 'Category 1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '2' ,
'parent_id' => '1' ,
'name' => 'Category 1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-07-05 14:10:42 +00:00
'children' => array (
array ( 'Category' => array (
'id' => '7' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()),
array ( 'Category' => array (
'id' => '8' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()))
2008-05-30 11:40:08 +00:00
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '3' ,
'parent_id' => '1' ,
'name' => 'Category 1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
)
);
$this -> assertEqual ( $result , $expected );
2008-06-26 17:28:12 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'fields' => 'id, parent_id, name' ));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '1' ,
'parent_id' => '0' ,
'name' => 'Category 1'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '2' ,
'parent_id' => '1' ,
'name' => 'Category 1.1'
),
2008-07-05 14:10:42 +00:00
'children' => array (
array ( 'Category' => array (
'id' => '7' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.1' ),
'children' => array ()),
array ( 'Category' => array (
'id' => '8' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.2' ),
'children' => array ()))
2008-05-30 11:40:08 +00:00
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '3' ,
'parent_id' => '1' ,
'name' => 'Category 1.2'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '4' ,
'parent_id' => '0' ,
'name' => 'Category 2'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '5' ,
'parent_id' => '0' ,
'name' => 'Category 3'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '6' ,
'parent_id' => '5' ,
'name' => 'Category 3.1'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
)
);
$this -> assertEqual ( $result , $expected );
2008-06-26 17:28:12 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'order' => 'id DESC' ));
2008-06-19 17:06:50 +00:00
2008-05-30 11:40:08 +00:00
$expected = array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => 5 ,
'parent_id' => 0 ,
'name' => 'Category 3' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => 6 ,
'parent_id' => 5 ,
'name' => 'Category 3.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => 4 ,
'parent_id' => 0 ,
'name' => 'Category 2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => 1 ,
'parent_id' => 0 ,
'name' => 'Category 1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => 3 ,
'parent_id' => 1 ,
'name' => 'Category 1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
),
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => 2 ,
'parent_id' => 1 ,
'name' => 'Category 1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-07-05 14:10:42 +00:00
'children' => array (
array ( 'Category' => array (
'id' => '8' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()),
array ( 'Category' => array (
'id' => '7' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()))
2008-05-30 11:40:08 +00:00
)
)
)
);
$this -> assertEqual ( $result , $expected );
2008-06-26 17:28:12 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'conditions' => array ( 'Category.name LIKE' => 'Category 3%' )));
2008-05-30 11:40:08 +00:00
$expected = array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '5' ,
'parent_id' => '0' ,
'name' => 'Category 3' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array (
array (
2008-06-26 17:28:12 +00:00
'Category' => array (
'id' => '6' ,
'parent_id' => '5' ,
'name' => 'Category 3.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31'
),
2008-05-30 11:40:08 +00:00
'children' => array ()
)
)
)
);
$this -> assertEqual ( $result , $expected );
2008-07-05 14:10:42 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'conditions' => array ( 'Category.name LIKE' => 'Category 1.1%' )));
$expected = array (
array ( 'Category' =>
array (
'id' => '2' ,
'parent_id' => '1' ,
'name' => 'Category 1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array (
array ( 'Category' => array (
'id' => '7' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.1' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()),
array ( 'Category' => array (
'id' => '8' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.2' ,
'created' => '2007-03-18 15:30:23' ,
'updated' => '2007-03-18 15:32:31' ),
'children' => array ()))));
$this -> assertEqual ( $result , $expected );
2008-07-09 17:51:08 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'fields' => 'id, parent_id, name' , 'conditions' => array ( 'Category.id !=' => 2 )));
$expected = array (
array (
'Category' => array (
'id' => '1' ,
'parent_id' => '0' ,
'name' => 'Category 1'
),
'children' => array (
array (
'Category' => array (
'id' => '3' ,
'parent_id' => '1' ,
'name' => 'Category 1.2'
),
'children' => array ()
)
)
),
array (
'Category' => array (
'id' => '4' ,
'parent_id' => '0' ,
'name' => 'Category 2'
),
'children' => array ()
),
array (
'Category' => array (
'id' => '5' ,
'parent_id' => '0' ,
'name' => 'Category 3'
),
'children' => array (
array (
'Category' => array (
'id' => '6' ,
'parent_id' => '5' ,
'name' => 'Category 3.1'
),
'children' => array ()
)
)
)
);
$this -> assertEqual ( $result , $expected );
2008-07-31 15:38:23 +00:00
2008-07-09 17:51:08 +00:00
$result = $TestModel -> find ( 'all' , array ( 'fields' => 'id, name, parent_id' , 'conditions' => array ( 'Category.id !=' => 1 )));
2008-07-31 15:38:23 +00:00
$expected = array (
array ( 'Category' => array ( 'id' => '2' , 'name' => 'Category 1.1' , 'parent_id' => '1' )),
array ( 'Category' => array ( 'id' => '3' , 'name' => 'Category 1.2' , 'parent_id' => '1' )),
array ( 'Category' => array ( 'id' => '4' , 'name' => 'Category 2' , 'parent_id' => '0' )),
array ( 'Category' => array ( 'id' => '5' , 'name' => 'Category 3' , 'parent_id' => '0' )),
array ( 'Category' => array ( 'id' => '6' , 'name' => 'Category 3.1' , 'parent_id' => '5' )),
array ( 'Category' => array ( 'id' => '7' , 'name' => 'Category 1.1.1' , 'parent_id' => '2' )),
array ( 'Category' => array ( 'id' => '8' , 'name' => 'Category 1.1.2' , 'parent_id' => '2' )),
2008-07-09 17:51:08 +00:00
);
$this -> assertEqual ( $result , $expected );
2008-07-31 15:38:23 +00:00
2008-07-09 17:51:08 +00:00
$result = $TestModel -> find ( 'threaded' , array ( 'fields' => 'id, parent_id, name' , 'conditions' => array ( 'Category.id !=' => 1 )));
$expected = array (
array (
'Category' => array (
'id' => '2' ,
'parent_id' => '1' ,
'name' => 'Category 1.1'
),
'children' => array (
array ( 'Category' => array (
'id' => '7' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.1' ),
'children' => array ()),
array ( 'Category' => array (
'id' => '8' ,
'parent_id' => '2' ,
'name' => 'Category 1.1.2' ),
'children' => array ()))
),
array (
'Category' => array (
'id' => '3' ,
'parent_id' => '1' ,
'name' => 'Category 1.2'
),
'children' => array ()
)
);
$this -> assertEqual ( $result , $expected );
2008-05-30 11:40:08 +00:00
}
2008-06-02 19:22:55 +00:00
/**
2008-10-05 22:26:40 +00:00
* test find ( 'neighbors' )
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ return void
2008-06-26 19:42:07 +00:00
* @ access public
2008-06-02 19:22:55 +00:00
*/
2008-10-05 22:26:40 +00:00
function testFindNeighbors () {
2008-05-30 11:40:08 +00:00
$this -> loadFixtures ( 'User' , 'Article' );
$TestModel =& new Article ();
2008-06-26 19:42:07 +00:00
$TestModel -> id = 1 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'fields' => array ( 'id' )));
$expected = array ( 'prev' => null , 'next' => array ( 'Article' => array ( 'id' => 2 )));
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 2 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'fields' => array ( 'id' )));
$expected = array ( 'prev' => array ( 'Article' => array ( 'id' => 1 )), 'next' => array ( 'Article' => array ( 'id' => 3 )));
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 3 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'fields' => array ( 'id' )));
$expected = array ( 'prev' => array ( 'Article' => array ( 'id' => 2 )), 'next' => null );
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 1 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'recursive' => - 1 ));
$expected = array (
'prev' => null ,
'next' => array (
'Article' => array (
'id' => 2 ,
'user_id' => 3 ,
'title' => 'Second Article' ,
'body' => 'Second Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:41:23' ,
'updated' => '2007-03-18 10:43:31'
)
)
);
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 2 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'recursive' => - 1 ));
$expected = array (
'prev' => array (
'Article' => array (
'id' => 1 ,
'user_id' => 1 ,
'title' => 'First Article' ,
'body' => 'First Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:39:23' ,
'updated' => '2007-03-18 10:41:31'
)
),
'next' => array (
'Article' => array (
'id' => 3 ,
'user_id' => 1 ,
'title' => 'Third Article' ,
'body' => 'Third Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:43:23' ,
'updated' => '2007-03-18 10:45:31'
)
)
);
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 3 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'recursive' => - 1 ));
$expected = array (
'prev' => array (
'Article' => array (
'id' => 2 ,
'user_id' => 3 ,
'title' => 'Second Article' ,
'body' => 'Second Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:41:23' ,
'updated' => '2007-03-18 10:43:31'
)
),
'next' => null
);
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = 0 ;
$TestModel -> id = 1 ;
$one = $TestModel -> read ();
$TestModel -> id = 2 ;
$two = $TestModel -> read ();
$TestModel -> id = 3 ;
$three = $TestModel -> read ();
$TestModel -> id = 1 ;
$result = $TestModel -> find ( 'neighbors' );
$expected = array ( 'prev' => null , 'next' => $two );
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 2 ;
$result = $TestModel -> find ( 'neighbors' );
$expected = array ( 'prev' => $one , 'next' => $three );
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 3 ;
$result = $TestModel -> find ( 'neighbors' );
$expected = array ( 'prev' => $two , 'next' => null );
$this -> assertEqual ( $result , $expected );
$TestModel -> recursive = 2 ;
$TestModel -> id = 1 ;
$one = $TestModel -> read ();
$TestModel -> id = 2 ;
$two = $TestModel -> read ();
$TestModel -> id = 3 ;
$three = $TestModel -> read ();
$TestModel -> id = 1 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'recursive' => 2 ));
$expected = array ( 'prev' => null , 'next' => $two );
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 2 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'recursive' => 2 ));
$expected = array ( 'prev' => $one , 'next' => $three );
$this -> assertEqual ( $result , $expected );
$TestModel -> id = 3 ;
$result = $TestModel -> find ( 'neighbors' , array ( 'recursive' => 2 ));
$expected = array ( 'prev' => $two , 'next' => null );
$this -> assertEqual ( $result , $expected );
}
/**
2008-10-05 22:26:40 +00:00
* test findNeighbours () method
2008-06-26 19:42:07 +00:00
*
* @ return void
* @ access public
*/
function testFindNeighboursLegacy () {
$this -> loadFixtures ( 'User' , 'Article' );
$TestModel =& new Article ();
2008-05-30 11:40:08 +00:00
$result = $TestModel -> findNeighbours ( null , 'Article.id' , '2' );
$expected = array ( 'prev' => array ( 'Article' => array ( 'id' => 1 )), 'next' => array ( 'Article' => array ( 'id' => 3 )));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> findNeighbours ( null , 'Article.id' , '3' );
$expected = array ( 'prev' => array ( 'Article' => array ( 'id' => 2 )), 'next' => array ());
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> findNeighbours ( array ( 'User.id' => 1 ), array ( 'Article.id' , 'Article.title' ), 2 );
$expected = array (
'prev' => array ( 'Article' => array ( 'id' => 1 , 'title' => 'First Article' )),
'next' => array ( 'Article' => array ( 'id' => 3 , 'title' => 'Third Article' )),
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testFindCombinedRelations method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindCombinedRelations () {
$this -> loadFixtures ( 'Apple' , 'Sample' );
$TestModel =& new Apple ();
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Apple' => array (
'id' => '1' , 'apple_id' => '2' , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '2' , 'apple_id' => '1' , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => null , 'apple_id' => null , 'name' => null ),
'Child' => array ( array ( 'id' => '2' , 'apple_id' => '1' , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => '2' , 'apple_id' => '1' , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '1' , 'apple_id' => '2' , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => '2' , 'apple_id' => '2' , 'name' => 'sample2' ),
'Child' => array ( array ( 'id' => '1' , 'apple_id' => '2' , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => '3' , 'apple_id' => '2' , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => '4' , 'apple_id' => '2' , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => '3' , 'apple_id' => '2' , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '2' , 'apple_id' => '1' , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => '1' , 'apple_id' => '3' , 'name' => 'sample1' ),
'Child' => array ()),
array ( 'Apple' => array (
'id' => '4' , 'apple_id' => '2' , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '2' , 'apple_id' => '1' , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => '3' , 'apple_id' => '4' , 'name' => 'sample3' ),
'Child' => array ( array ( 'id' => '6' , 'apple_id' => '4' , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => '5' , 'apple_id' => '5' , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '5' , 'apple_id' => '5' , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => '4' , 'apple_id' => '5' , 'name' => 'sample4' ),
'Child' => array ( array ( 'id' => '5' , 'apple_id' => '5' , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => '6' , 'apple_id' => '4' , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '4' , 'apple_id' => '2' , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => null , 'apple_id' => null , 'name' => null ),
'Child' => array ( array ( 'id' => '7' , 'apple_id' => '6' , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => '7' , 'apple_id' => '6' , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => '6' , 'apple_id' => '4' , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => null , 'apple_id' => null , 'name' => null ),
'Child' => array ()));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSaveEmpty method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSaveEmpty () {
$this -> loadFixtures ( 'Thread' );
$TestModel =& new Thread ();
$data = array ();
$expected = $TestModel -> save ( $data );
$this -> assertFalse ( $expected );
}
// function testBasicValidation() {
// $TestModel =& new ValidationTest();
// $TestModel->testing = true;
// $TestModel->set(array('title' => '', 'published' => 1));
// $this->assertEqual($TestModel->invalidFields(), array('title' => 'This field cannot be left blank'));
//
// $TestModel->create();
// $TestModel->set(array('title' => 'Hello', 'published' => 0));
// $this->assertEqual($TestModel->invalidFields(), array('published' => 'This field cannot be left blank'));
//
// $TestModel->create();
// $TestModel->set(array('title' => 'Hello', 'published' => 1, 'body' => ''));
// $this->assertEqual($TestModel->invalidFields(), array('body' => 'This field cannot be left blank'));
// }
2008-09-22 20:08:31 +00:00
/**
* testFindAllWithConditionInChildQuery
*
* @ todo external conditions like this are going to need to be revisited at some point
* @ access public
* @ return void
*/
function testFindAllWithConditionInChildQuery () {
$this -> loadFixtures ( 'Basket' , 'FilmFile' );
$TestModel =& new Basket ();
$recursive = 3 ;
$result = $TestModel -> find ( 'all' , compact ( 'conditions' , 'recursive' ));
$expected = array (
array (
'Basket' => array (
'id' => 1 ,
'type' => 'nonfile' ,
'name' => 'basket1' ,
'object_id' => 1 ,
'user_id' => 1 ,
),
'FilmFile' => array (
'id' => '' ,
'name' => '' ,
)
),
array (
'Basket' => array (
'id' => 2 ,
'type' => 'file' ,
'name' => 'basket2' ,
'object_id' => 2 ,
'user_id' => 1 ,
),
'FilmFile' => array (
'id' => 2 ,
'name' => 'two' ,
)
),
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testFindAllWithConditionsHavingMixedDataTypes method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testFindAllWithConditionsHavingMixedDataTypes () {
$this -> loadFixtures ( 'Article' );
$TestModel =& new Article ();
$expected = array (
array (
'Article' => array (
'id' => 1 ,
'user_id' => 1 ,
'title' => 'First Article' ,
'body' => 'First Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:39:23' ,
'updated' => '2007-03-18 10:41:31'
)
),
array (
'Article' => array (
'id' => 2 ,
'user_id' => 3 ,
'title' => 'Second Article' ,
'body' => 'Second Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:41:23' ,
'updated' => '2007-03-18 10:43:31'
)
)
);
$conditions = array ( 'id' => array ( '1' , 2 ));
$recursive = - 1 ;
$result = $TestModel -> find ( 'all' , compact ( 'conditions' , 'recursive' ));
$this -> assertEqual ( $result , $expected );
$conditions = array ( 'id' => array ( '1' , 2 , '3.0' ));
$result = $TestModel -> find ( 'all' , compact ( 'recursive' , 'conditions' ));
$expected = array (
array (
'Article' => array (
'id' => 1 ,
'user_id' => 1 ,
'title' => 'First Article' ,
'body' => 'First Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:39:23' ,
'updated' => '2007-03-18 10:41:31'
)
),
array (
'Article' => array (
'id' => 2 ,
'user_id' => 3 ,
'title' => 'Second Article' ,
'body' => 'Second Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:41:23' ,
'updated' => '2007-03-18 10:43:31'
)
),
array (
'Article' => array (
'id' => 3 ,
'user_id' => 1 ,
'title' => 'Third Article' ,
'body' => 'Third Article Body' ,
'published' => 'Y' ,
'created' => '2007-03-18 10:43:23' ,
'updated' => '2007-03-18 10:45:31'
)
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testMultipleValidation method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testMultipleValidation () {
$TestModel =& new ValidationTest ();
}
2008-08-01 06:28:59 +00:00
/**
* Tests validation parameter order in custom validation methods
*
* @ access public
* @ return void
*/
function testValidationParams () {
$TestModel =& new ValidationTest ();
$TestModel -> validate [ 'title' ] = array ( 'rule' => 'customValidatorWithParams' , 'required' => true );
$TestModel -> create ( array ( 'title' => 'foo' ));
$TestModel -> invalidFields ();
$expected = array (
'data' => array ( 'title' => 'foo' ),
'validator' => array (
'rule' => 'customValidatorWithParams' , 'on' => null ,
'last' => false , 'allowEmpty' => false , 'required' => true
),
'or' => true ,
'ignore_on_same' => 'id'
);
$this -> assertEqual ( $TestModel -> validatorParams , $expected );
$TestModel -> validate [ 'title' ] = array ( 'rule' => 'customValidatorWithMessage' , 'required' => true );
$expected = array ( 'title' => 'This field will *never* validate! Muhahaha!' );
$this -> assertEqual ( $TestModel -> invalidFields (), $expected );
}
2008-08-27 08:01:00 +00:00
/**
2008-08-27 08:53:44 +00:00
* Tests validation parameter fieldList in invalidFields
2008-08-27 08:01:00 +00:00
*
* @ access public
* @ return void
*/
function testInvalidFieldsWithFieldListParams () {
$TestModel =& new ValidationTest ();
$TestModel -> validate = $validate = array (
'title' => array ( 'rule' => 'customValidator' , 'required' => true ),
'name' => array ( 'rule' => 'allowEmpty' , 'required' => true ),
);
$TestModel -> invalidFields ( array ( 'fieldList' => array ( 'title' )));
$expected = array ( 'title' => 'This field cannot be left blank' );
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
$TestModel -> validationErrors = array ();
$TestModel -> invalidFields ( array ( 'fieldList' => array ( 'name' )));
$expected = array ( 'name' => 'This field cannot be left blank' );
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
$TestModel -> validationErrors = array ();
$TestModel -> invalidFields ( array ( 'fieldList' => array ( 'name' , 'title' )));
$expected = array ( 'name' => 'This field cannot be left blank' , 'title' => 'This field cannot be left blank' );
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
$this -> assertEqual ( $TestModel -> validate , $validate );
}
2008-08-01 06:28:59 +00:00
/**
* Tests validation parameter order in custom validation methods
*
* @ access public
* @ return void
*/
function testAllowSimulatedFields () {
$TestModel =& new ValidationTest ();
$TestModel -> create ( array ( 'title' => 'foo' , 'bar' => 'baz' ));
$expected = array ( 'ValidationTest' => array ( 'title' => 'foo' , 'bar' => 'baz' ));
$this -> assertEqual ( $TestModel -> data , $expected );
}
/**
* Tests validation parameter order in custom validation methods
*
* @ access public
* @ return void
*/
function testInvalidAssociation () {
$TestModel =& new ValidationTest ();
$this -> assertNull ( $TestModel -> getAssociated ( 'Foo' ));
}
2008-06-02 19:22:55 +00:00
/**
* testLoadModelSecondIteration method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testLoadModelSecondIteration () {
$model = new ModelA ();
$this -> assertIsA ( $model , 'ModelA' );
$this -> assertIsA ( $model -> ModelB , 'ModelB' );
$this -> assertIsA ( $model -> ModelB -> ModelD , 'ModelD' );
$this -> assertIsA ( $model -> ModelC , 'ModelC' );
$this -> assertIsA ( $model -> ModelC -> ModelD , 'ModelD' );
}
2008-06-02 19:22:55 +00:00
/**
* testRecursiveUnbind method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testRecursiveUnbind () {
$this -> loadFixtures ( 'Apple' , 'Sample' );
$TestModel =& new Apple ();
$TestModel -> recursive = 2 ;
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Apple' => array (
'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' ),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ,
'Apple' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' )),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' )),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' ,
'Apple' => array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' )),
'Child' => array ()),
array ( 'Apple' => array (
'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ,
'Apple' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' )),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ,
'Apple' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' )),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' ),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Sample' => array ()))),
array ( 'Apple' => array (
'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' ),
'Child' => array ()));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> Parent -> unbindModel ( array ( 'hasOne' => array ( 'Sample' )));
$this -> assertTrue ( $result );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Apple' => array (
'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' ),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ,
'Apple' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' )),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' )),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' ,
'Apple' => array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' )),
'Child' => array ()),
array ( 'Apple' => array (
'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ,
'Apple' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' )),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ,
'Apple' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' )),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))))),
array ( 'Apple' => array (
'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' ),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Sample' => array ()))),
array ( 'Apple' => array (
'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' ),
'Child' => array ()));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> Parent -> unbindModel ( array ( 'hasOne' => array ( 'Sample' )));
$this -> assertTrue ( $result );
$result = $TestModel -> unbindModel ( array ( 'hasMany' => array ( 'Child' )));
$this -> assertTrue ( $result );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array ( array ( 'Apple' => array (
'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )),
array ( 'Apple' => array (
'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ,
'Apple' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' ,
'Apple' => array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ,
'Apple' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ,
'Apple' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )),
array ( 'Apple' => array (
'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> unbindModel ( array ( 'hasMany' => array ( 'Child' )));
$this -> assertTrue ( $result );
$result = $TestModel -> Sample -> unbindModel ( array ( 'belongsTo' => array ( 'Apple' )));
$this -> assertTrue ( $result );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array (
array ( 'Apple' => array (
'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )),
array ( 'Apple' => array (
'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' )),
array ( 'Apple' => array (
'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' )),
array ( 'Apple' => array (
'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' )),
array ( 'Apple' => array (
'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' )),
array ( 'Apple' => array (
'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )),
array ( 'Apple' => array (
'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Sample' => array (),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )));
$this -> assertEqual ( $result , $expected );
$result = $TestModel -> Parent -> unbindModel ( array ( 'belongsTo' => array ( 'Parent' )));
$this -> assertTrue ( $result );
$result = $TestModel -> unbindModel ( array ( 'hasMany' => array ( 'Child' )));
$this -> assertTrue ( $result );
2008-06-19 17:06:50 +00:00
$result = $TestModel -> find ( 'all' );
2008-05-30 11:40:08 +00:00
$expected = array ( array ( 'Apple' => array (
'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )),
array ( 'Apple' => array (
'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ,
'Sample' => array (),
'Child' => array (
array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ,
'Apple' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 1 , 'apple_id' => 3 , 'name' => 'sample1' ,
'Apple' => array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 2 , 'apple_id' => 1 , 'color' => 'Bright Red 1' , 'name' => 'Bright Red Apple' , 'created' => '2006-11-22 10:43:13' , 'date' => '2014-01-01' , 'modified' => '2006-11-30 18:38:10' , 'mytime' => '22:57:17' ,
'Sample' => array ( 'id' => 2 , 'apple_id' => 2 , 'name' => 'sample2' ),
'Child' => array (
array ( 'id' => 1 , 'apple_id' => 2 , 'color' => 'Red 1' , 'name' => 'Red Apple 1' , 'created' => '2006-11-22 10:38:58' , 'date' => '1951-01-04' , 'modified' => '2006-12-01 13:31:26' , 'mytime' => '22:57:17' ),
array ( 'id' => 3 , 'apple_id' => 2 , 'color' => 'blue green' , 'name' => 'green blue' , 'created' => '2006-12-25 05:13:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:24' , 'mytime' => '22:57:17' ),
array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ,
'Apple' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ,
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ),
'Child' => array (
array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => 4 , 'apple_id' => 5 , 'name' => 'sample4' ,
'Apple' => array ( 'id' => 5 , 'apple_id' => 5 , 'color' => 'Green' , 'name' => 'Blue Green' , 'created' => '2006-12-25 05:24:06' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:16' , 'mytime' => '22:57:17' ))),
array ( 'Apple' => array (
'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 4 , 'apple_id' => 2 , 'color' => 'Blue Green' , 'name' => 'Test Name' , 'created' => '2006-12-25 05:23:36' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:23:36' , 'mytime' => '22:57:17' ,
'Sample' => array ( 'id' => 3 , 'apple_id' => 4 , 'name' => 'sample3' ),
'Child' => array (
array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )),
array ( 'Apple' => array (
'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ),
'Parent' => array ( 'id' => 6 , 'apple_id' => 4 , 'color' => 'My new appleOrange' , 'name' => 'My new apple' , 'created' => '2006-12-25 05:29:39' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:29:39' , 'mytime' => '22:57:17' ,
'Sample' => array (),
'Child' => array (
array ( 'id' => 7 , 'apple_id' => 6 , 'color' => 'Some wierd color' , 'name' => 'Some odd color' , 'created' => '2006-12-25 05:34:21' , 'date' => '2006-12-25' , 'modified' => '2006-12-25 05:34:21' , 'mytime' => '22:57:17' ))),
'Sample' => array ( 'id' => '' , 'apple_id' => '' , 'name' => '' )));
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testSelfAssociationAfterFind method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSelfAssociationAfterFind () {
$this -> loadFixtures ( 'Apple' );
$afterFindModel = new NodeAfterFind ();
$afterFindModel -> recursive = 3 ;
$afterFindData = $afterFindModel -> find ( 'all' );
$duplicateModel = new NodeAfterFind ();
$duplicateModel -> recursive = 3 ;
$duplicateModelData = $duplicateModel -> find ( 'all' );
$noAfterFindModel = new NodeNoAfterFind ();
$noAfterFindModel -> recursive = 3 ;
$noAfterFindData = $noAfterFindModel -> find ( 'all' );
$this -> assertFalse ( $afterFindModel == $noAfterFindModel );
// Limitation of PHP 4 and PHP 5 > 5.1.6 when comparing recursive objects
if ( PHP_VERSION === '5.1.6' ) {
$this -> assertFalse ( $afterFindModel != $duplicateModel );
}
$this -> assertEqual ( $afterFindData , $noAfterFindData );
}
2008-06-02 19:22:55 +00:00
/**
* testAutoSaveUuid method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testAutoSaveUuid () {
// SQLite does not support non-integer primary keys, and SQL Server
// is still having problems with custom PK's
if ( $this -> db -> config [ 'driver' ] == 'sqlite' || $this -> db -> config [ 'driver' ] == 'mssql' ) {
return ;
}
$this -> loadFixtures ( 'Uuid' );
$TestModel =& new Uuid ();
$TestModel -> save ( array ( 'title' => 'Test record' ));
$result = $TestModel -> findByTitle ( 'Test record' );
$this -> assertEqual ( array_keys ( $result [ 'Uuid' ]), array ( 'id' , 'title' , 'count' , 'created' , 'updated' ));
$this -> assertEqual ( strlen ( $result [ 'Uuid' ][ 'id' ]), 36 );
}
2008-06-02 19:22:55 +00:00
/**
* testZeroDefaultFieldValue method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testZeroDefaultFieldValue () {
$this -> skipIf (
$this -> db -> config [ 'driver' ] == 'sqlite' ,
'SQLite uses loose typing, this operation is unsupported'
);
$this -> loadFixtures ( 'DataTest' );
$TestModel =& new DataTest ();
2008-08-15 01:12:31 +00:00
$TestModel -> create ( array ());
$TestModel -> save ();
2008-05-30 11:40:08 +00:00
$result = $TestModel -> findById ( $TestModel -> id );
$this -> assertIdentical ( $result [ 'DataTest' ][ 'count' ], '0' );
$this -> assertIdentical ( $result [ 'DataTest' ][ 'float' ], '0' );
}
2008-08-15 01:12:31 +00:00
2008-06-02 19:22:55 +00:00
/**
* testNonNumericHabtmJoinKey method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testNonNumericHabtmJoinKey () {
$this -> loadFixtures ( 'Post' , 'Tag' , 'PostsTag' );
$Post =& new Post ();
$Post -> bind ( 'Tag' , array ( 'type' => 'hasAndBelongsToMany' ));
$Post -> Tag -> primaryKey = 'tag' ;
$result = $Post -> find ( 'all' );
$expected = array (
array (
'Post' => array ( 'id' => '1' , 'author_id' => '1' , 'title' => 'First Post' , 'body' => 'First Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'Author' => array ( 'id' => null , 'user' => null , 'password' => null , 'created' => null , 'updated' => null , 'test' => 'working' ),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' ),
)
),
array (
'Post' => array ( 'id' => '2' , 'author_id' => '3' , 'title' => 'Second Post' , 'body' => 'Second Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'Author' => array ( 'id' => null , 'user' => null , 'password' => null , 'created' => null , 'updated' => null , 'test' => 'working' ),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
),
array (
'Post' => array ( 'id' => '3' , 'author_id' => '1' , 'title' => 'Third Post' , 'body' => 'Third Post Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'Author' => array ( 'id' => null , 'user' => null , 'password' => null , 'created' => null , 'updated' => null , 'test' => 'working' ),
'Tag' => array ()
)
);
$this -> assertEqual ( $result , $expected );
}
2008-06-02 19:22:55 +00:00
/**
* testDeconstructFields method
2008-06-14 20:39:27 +00:00
*
2008-06-02 19:22:55 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDeconstructFields () {
$this -> loadFixtures ( 'Apple' );
$TestModel =& new Apple ();
2008-10-26 15:02:01 +00:00
//test null/empty values first
2008-05-30 11:40:08 +00:00
$data [ 'Apple' ][ 'created' ][ 'year' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
2008-10-26 15:02:01 +00:00
$data = array ();
$data [ 'Apple' ][ 'date' ][ 'year' ] = '' ;
$data [ 'Apple' ][ 'date' ][ 'month' ] = '' ;
$data [ 'Apple' ][ 'date' ][ 'day' ] = '' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'date' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'mytime' ][ 'hour' ] = '' ;
$data [ 'Apple' ][ 'mytime' ][ 'min' ] = '' ;
$data [ 'Apple' ][ 'mytime' ][ 'sec' ] = '' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'mytime' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
//test other data variations
2008-05-30 11:40:08 +00:00
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'year' ] = '2007' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '08' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '2007-08-20 00:00:00' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'year' ] = '2007' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '08' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '10' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '12' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '2007-08-20 10:12:00' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'year' ] = '2007' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '12' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '33' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '33' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '33' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '13' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '00' ;
$data [ 'Apple' ][ 'date' ][ 'year' ] = '2006' ;
$data [ 'Apple' ][ 'date' ][ 'month' ] = '12' ;
$data [ 'Apple' ][ 'date' ][ 'day' ] = '25' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' , 'date' => '2006-12-25' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'year' ] = '2007' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '08' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '10' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '12' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '09' ;
$data [ 'Apple' ][ 'date' ][ 'year' ] = '2006' ;
$data [ 'Apple' ][ 'date' ][ 'month' ] = '12' ;
$data [ 'Apple' ][ 'date' ][ 'day' ] = '25' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '2007-08-20 10:12:09' , 'date' => '2006-12-25' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'year' ] = '--' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '--' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '--' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '--' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '--' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '--' ;
$data [ 'Apple' ][ 'date' ][ 'year' ] = '--' ;
$data [ 'Apple' ][ 'date' ][ 'month' ] = '--' ;
$data [ 'Apple' ][ 'date' ][ 'day' ] = '--' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' , 'date' => '' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'created' ][ 'year' ] = '2007' ;
$data [ 'Apple' ][ 'created' ][ 'month' ] = '--' ;
$data [ 'Apple' ][ 'created' ][ 'day' ] = '20' ;
$data [ 'Apple' ][ 'created' ][ 'hour' ] = '10' ;
$data [ 'Apple' ][ 'created' ][ 'min' ] = '12' ;
$data [ 'Apple' ][ 'created' ][ 'sec' ] = '09' ;
$data [ 'Apple' ][ 'date' ][ 'year' ] = '2006' ;
$data [ 'Apple' ][ 'date' ][ 'month' ] = '12' ;
$data [ 'Apple' ][ 'date' ][ 'day' ] = '25' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'created' => '' , 'date' => '2006-12-25' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'date' ][ 'year' ] = '2006' ;
$data [ 'Apple' ][ 'date' ][ 'month' ] = '12' ;
$data [ 'Apple' ][ 'date' ][ 'day' ] = '25' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'date' => '2006-12-25' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'mytime' ][ 'hour' ] = '03' ;
$data [ 'Apple' ][ 'mytime' ][ 'min' ] = '04' ;
$data [ 'Apple' ][ 'mytime' ][ 'sec' ] = '04' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'mytime' => '03:04:04' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'mytime' ][ 'hour' ] = '3' ;
$data [ 'Apple' ][ 'mytime' ][ 'min' ] = '4' ;
$data [ 'Apple' ][ 'mytime' ][ 'sec' ] = '4' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'mytime' => '03:04:04' ));
$this -> assertEqual ( $TestModel -> data , $expected );
$data = array ();
$data [ 'Apple' ][ 'mytime' ][ 'hour' ] = '03' ;
$data [ 'Apple' ][ 'mytime' ][ 'min' ] = '4' ;
$data [ 'Apple' ][ 'mytime' ][ 'sec' ] = '4' ;
$TestModel -> data = null ;
$TestModel -> set ( $data );
$expected = array ( 'Apple' => array ( 'mytime' => '03:04:04' ));
$this -> assertEqual ( $TestModel -> data , $expected );
}
2008-06-05 15:20:45 +00:00
/**
* testTablePrefixSwitching method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testTablePrefixSwitching () {
ConnectionManager :: create ( 'database1' , array_merge ( $this -> db -> config , array ( 'prefix' => 'aaa_' )));
ConnectionManager :: create ( 'database2' , array_merge ( $this -> db -> config , array ( 'prefix' => 'bbb_' )));
$db1 = ConnectionManager :: getDataSource ( 'database1' );
$db2 = ConnectionManager :: getDataSource ( 'database2' );
$TestModel = new Apple ();
$TestModel -> setDataSource ( 'database1' );
$this -> assertEqual ( $this -> db -> fullTableName ( $TestModel , false ), 'aaa_apples' );
$this -> assertEqual ( $db1 -> fullTableName ( $TestModel , false ), 'aaa_apples' );
$this -> assertEqual ( $db2 -> fullTableName ( $TestModel , false ), 'aaa_apples' );
$TestModel -> setDataSource ( 'database2' );
$this -> assertEqual ( $this -> db -> fullTableName ( $TestModel , false ), 'bbb_apples' );
$this -> assertEqual ( $db1 -> fullTableName ( $TestModel , false ), 'bbb_apples' );
$this -> assertEqual ( $db2 -> fullTableName ( $TestModel , false ), 'bbb_apples' );
$TestModel = new Apple ();
$TestModel -> tablePrefix = 'custom_' ;
$this -> assertEqual ( $this -> db -> fullTableName ( $TestModel , false ), 'custom_apples' );
$TestModel -> setDataSource ( 'database1' );
$this -> assertEqual ( $this -> db -> fullTableName ( $TestModel , false ), 'custom_apples' );
$this -> assertEqual ( $db1 -> fullTableName ( $TestModel , false ), 'custom_apples' );
2008-08-20 02:37:23 +00:00
$TestModel = new Apple ();
$TestModel -> setDataSource ( 'database1' );
$this -> assertEqual ( $this -> db -> fullTableName ( $TestModel , false ), 'aaa_apples' );
$TestModel -> tablePrefix = '' ;
$TestModel -> setDataSource ( 'database2' );
$this -> assertEqual ( $db2 -> fullTableName ( $TestModel , false ), 'apples' );
$this -> assertEqual ( $db1 -> fullTableName ( $TestModel , false ), 'apples' );
2008-08-27 11:17:54 +00:00
2008-08-20 02:37:23 +00:00
$TestModel -> tablePrefix = null ;
$TestModel -> setDataSource ( 'database1' );
$this -> assertEqual ( $db2 -> fullTableName ( $TestModel , false ), 'aaa_apples' );
$this -> assertEqual ( $db1 -> fullTableName ( $TestModel , false ), 'aaa_apples' );
2008-08-27 11:17:54 +00:00
2008-08-20 02:37:23 +00:00
$TestModel -> tablePrefix = false ;
$TestModel -> setDataSource ( 'database2' );
$this -> assertEqual ( $db2 -> fullTableName ( $TestModel , false ), 'apples' );
$this -> assertEqual ( $db1 -> fullTableName ( $TestModel , false ), 'apples' );
}
2008-08-27 11:17:54 +00:00
2008-06-05 15:20:45 +00:00
/**
* testDynamicBehaviorAttachment method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDynamicBehaviorAttachment () {
$this -> loadFixtures ( 'Apple' );
$TestModel =& new Apple ();
$this -> assertEqual ( $TestModel -> Behaviors -> attached (), array ());
$TestModel -> Behaviors -> attach ( 'Tree' , array ( 'left' => 'left_field' , 'right' => 'right_field' ));
$this -> assertTrue ( is_object ( $TestModel -> Behaviors -> Tree ));
$this -> assertEqual ( $TestModel -> Behaviors -> attached (), array ( 'Tree' ));
$expected = array (
'parent' => 'parent_id' , 'left' => 'left_field' , 'right' => 'right_field' , 'scope' => '1 = 1' ,
'type' => 'nested' , '__parentChange' => false , 'recursive' => - 1
);
$this -> assertEqual ( $TestModel -> Behaviors -> Tree -> settings [ 'Apple' ], $expected );
$expected [ 'enabled' ] = false ;
$TestModel -> Behaviors -> attach ( 'Tree' , array ( 'enabled' => false ));
$this -> assertEqual ( $TestModel -> Behaviors -> Tree -> settings [ 'Apple' ], $expected );
$this -> assertEqual ( $TestModel -> Behaviors -> attached (), array ( 'Tree' ));
$TestModel -> Behaviors -> detach ( 'Tree' );
$this -> assertEqual ( $TestModel -> Behaviors -> attached (), array ());
$this -> assertFalse ( isset ( $TestModel -> Behaviors -> Tree ));
}
/**
* Tests cross database joins . Requires $test and $test2 to both be set in DATABASE_CONFIG
* NOTE : When testing on MySQL , you must set 'persistent' => false on * both * database connections ,
* or one connection will step on the other .
*/
function testCrossDatabaseJoins () {
$config = new DATABASE_CONFIG ();
if ( ! isset ( $config -> test ) || ! isset ( $config -> test2 )) {
echo " <br />Primary and secondary test databases not configured, skipping cross-database join tests<br /> " ;
echo " To run these tests, you must define \$ test and \$ test2 in your database configuration.<br /> " ;
return ;
}
$this -> loadFixtures ( 'Article' , 'Tag' , 'ArticlesTag' , 'User' , 'Comment' );
$TestModel =& new Article ();
$expected = array (
array (
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Comment' => array (
array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ),
array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' )
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '2' , 'tag' => 'tag2' , 'created' => '2007-03-18 12:24:23' , 'updated' => '2007-03-18 12:26:31' )
)
),
array (
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' ),
'User' => array ( 'id' => '3' , 'user' => 'larry' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:20:23' , 'updated' => '2007-03-17 01:22:31' ),
'Comment' => array (
array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ),
array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' )
),
'Tag' => array (
array ( 'id' => '1' , 'tag' => 'tag1' , 'created' => '2007-03-18 12:22:23' , 'updated' => '2007-03-18 12:24:31' ),
array ( 'id' => '3' , 'tag' => 'tag3' , 'created' => '2007-03-18 12:26:23' , 'updated' => '2007-03-18 12:28:31' )
)
),
array (
'Article' => array ( 'id' => '3' , 'user_id' => '1' , 'title' => 'Third Article' , 'body' => 'Third Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:43:23' , 'updated' => '2007-03-18 10:45:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Comment' => array (),
'Tag' => array ()
)
);
$this -> assertEqual ( $TestModel -> find ( 'all' ), $expected );
$db2 =& ConnectionManager :: getDataSource ( 'test2' );
foreach ( array ( 'User' , 'Comment' ) as $class ) {
$this -> _fixtures [ $this -> _fixtureClassMap [ $class ]] -> create ( $db2 );
$this -> _fixtures [ $this -> _fixtureClassMap [ $class ]] -> insert ( $db2 );
$this -> db -> truncate ( Inflector :: pluralize ( Inflector :: underscore ( $class )));
}
$this -> assertEqual ( $TestModel -> User -> find ( 'all' ), array ());
$this -> assertEqual ( $TestModel -> Comment -> find ( 'all' ), array ());
$this -> assertEqual ( $TestModel -> find ( 'count' ), 3 );
$TestModel -> User -> setDataSource ( 'test2' );
$TestModel -> Comment -> setDataSource ( 'test2' );
$result = Set :: extract ( $TestModel -> User -> find ( 'all' ), '{n}.User.id' );
$this -> assertEqual ( $result , array ( '1' , '2' , '3' , '4' ));
$this -> assertEqual ( $TestModel -> find ( 'all' ), $expected );
$TestModel -> Comment -> unbindModel ( array ( 'hasOne' => array ( 'Attachment' )));
$expected = array (
array (
'Comment' => array ( 'id' => '1' , 'article_id' => '1' , 'user_id' => '2' , 'comment' => 'First Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:45:23' , 'updated' => '2007-03-18 10:47:31' ),
'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ),
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )
),
array (
'Comment' => array ( 'id' => '2' , 'article_id' => '1' , 'user_id' => '4' , 'comment' => 'Second Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:47:23' , 'updated' => '2007-03-18 10:49:31' ),
'User' => array ( 'id' => '4' , 'user' => 'garrett' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:22:23' , 'updated' => '2007-03-17 01:24:31' ),
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )
),
array (
'Comment' => array ( 'id' => '3' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Third Comment for First Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:49:23' , 'updated' => '2007-03-18 10:51:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )
),
array (
'Comment' => array ( 'id' => '4' , 'article_id' => '1' , 'user_id' => '1' , 'comment' => 'Fourth Comment for First Article' , 'published' => 'N' , 'created' => '2007-03-18 10:51:23' , 'updated' => '2007-03-18 10:53:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Article' => array ( 'id' => '1' , 'user_id' => '1' , 'title' => 'First Article' , 'body' => 'First Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:39:23' , 'updated' => '2007-03-18 10:41:31' )
),
array (
'Comment' => array ( 'id' => '5' , 'article_id' => '2' , 'user_id' => '1' , 'comment' => 'First Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:53:23' , 'updated' => '2007-03-18 10:55:31' ),
'User' => array ( 'id' => '1' , 'user' => 'mariano' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:16:23' , 'updated' => '2007-03-17 01:18:31' ),
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )
),
array (
'Comment' => array ( 'id' => '6' , 'article_id' => '2' , 'user_id' => '2' , 'comment' => 'Second Comment for Second Article' , 'published' => 'Y' , 'created' => '2007-03-18 10:55:23' , 'updated' => '2007-03-18 10:57:31' ),
'User' => array ( 'id' => '2' , 'user' => 'nate' , 'password' => '5f4dcc3b5aa765d61d8327deb882cf99' , 'created' => '2007-03-17 01:18:23' , 'updated' => '2007-03-17 01:20:31' ),
'Article' => array ( 'id' => '2' , 'user_id' => '3' , 'title' => 'Second Article' , 'body' => 'Second Article Body' , 'published' => 'Y' , 'created' => '2007-03-18 10:41:23' , 'updated' => '2007-03-18 10:43:31' )
)
);
$this -> assertEqual ( $TestModel -> Comment -> find ( 'all' ), $expected );
foreach ( array ( 'User' , 'Comment' ) as $class ) {
$this -> _fixtures [ $this -> _fixtureClassMap [ $class ]] -> drop ( $db2 );
}
}
2008-06-05 15:20:45 +00:00
/**
* testDisplayField method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testDisplayField () {
$this -> loadFixtures ( 'Post' , 'Comment' , 'Person' );
$Post = new Post ();
$Comment = new Comment ();
$Person = new Person ();
$this -> assertEqual ( $Post -> displayField , 'title' );
$this -> assertEqual ( $Person -> displayField , 'name' );
$this -> assertEqual ( $Comment -> displayField , 'id' );
}
2008-06-05 15:20:45 +00:00
/**
* testSchema method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testSchema () {
$Post = new Post ();
$result = $Post -> schema ();
$columns = array ( 'id' , 'author_id' , 'title' , 'body' , 'published' , 'created' , 'updated' );
$this -> assertEqual ( array_keys ( $result ), $columns );
$types = array ( 'integer' , 'integer' , 'string' , 'text' , 'string' , 'datetime' , 'datetime' );
$this -> assertEqual ( Set :: extract ( array_values ( $result ), '{n}.type' ), $types );
$result = $Post -> schema ( 'body' );
$this -> assertEqual ( $result [ 'type' ], 'text' );
$this -> assertNull ( $Post -> schema ( 'foo' ));
$this -> assertEqual ( $Post -> getColumnTypes (), array_combine ( $columns , $types ));
}
2008-06-05 15:20:45 +00:00
/**
* testOldQuery method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testOldQuery () {
$this -> loadFixtures ( 'Article' );
$Article =& new Article ();
$query = 'SELECT title FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.id IN (1,2)' ;
$results = $Article -> query ( $query );
$this -> assertTrue ( is_array ( $results ));
$this -> assertEqual ( count ( $results ), 2 );
$query = 'SELECT title, body FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.id = 1' ;
$results = $Article -> query ( $query , false );
$this -> assertTrue ( ! isset ( $this -> db -> _queryCache [ $query ]));
$this -> assertTrue ( is_array ( $results ));
$query = 'SELECT title, id FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.published = ' . $this -> db -> value ( 'Y' );
$results = $Article -> query ( $query , true );
$this -> assertTrue ( isset ( $this -> db -> _queryCache [ $query ]));
$this -> assertTrue ( is_array ( $results ));
}
2008-06-05 15:20:45 +00:00
/**
* testPreparedQuery method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testPreparedQuery () {
$this -> loadFixtures ( 'Article' );
$Article =& new Article ();
$this -> db -> _queryCache = array ();
$finalQuery = 'SELECT title, published FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.id = ' . $this -> db -> value ( 1 ) . ' AND ' . $this -> db -> fullTableName ( 'articles' ) . '.published = ' . $this -> db -> value ( 'Y' );
$query = 'SELECT title, published FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.id = ? AND ' . $this -> db -> fullTableName ( 'articles' ) . '.published = ?' ;
$params = array ( 1 , 'Y' );
$result = $Article -> query ( $query , $params );
$expected = array ( '0' => array ( $this -> db -> fullTableName ( 'articles' , false ) => array ( 'title' => 'First Article' , 'published' => 'Y' )));
if ( isset ( $result [ 0 ][ 0 ])) {
$expected [ 0 ][ 0 ] = $expected [ 0 ][ $this -> db -> fullTableName ( 'articles' , false )];
unset ( $expected [ 0 ][ $this -> db -> fullTableName ( 'articles' , false )]);
}
$this -> assertEqual ( $result , $expected );
$this -> assertTrue ( isset ( $this -> db -> _queryCache [ $finalQuery ]));
$finalQuery = 'SELECT id, created FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.title = ' . $this -> db -> value ( 'First Article' );
$query = 'SELECT id, created FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.title = ?' ;
$params = array ( 'First Article' );
$result = $Article -> query ( $query , $params , false );
$this -> assertTrue ( is_array ( $result ));
$this -> assertTrue ( isset ( $result [ 0 ][ $this -> db -> fullTableName ( 'articles' , false )]) || isset ( $result [ 0 ][ 0 ]));
$this -> assertFalse ( isset ( $this -> db -> _queryCache [ $finalQuery ]));
$query = 'SELECT title FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.title LIKE ?' ;
$params = array ( '%First%' );
$result = $Article -> query ( $query , $params );
$this -> assertTrue ( is_array ( $result ));
$this -> assertTrue (
isset ( $result [ 0 ][ $this -> db -> fullTableName ( 'articles' , false )][ 'title' ]) ||
isset ( $result [ 0 ][ 0 ][ 'title' ])
);
2008-07-05 11:02:09 +00:00
2008-07-03 02:19:19 +00:00
//related to ticket #5035
$query = 'SELECT title FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE title = ? AND published = ?' ;
$params = array ( 'First? Article' , 'Y' );
$Article -> query ( $query , $params );
$expected = 'SELECT title FROM ' . $this -> db -> fullTableName ( 'articles' ) . " WHERE title = 'First? Article' AND published = 'Y' " ;
$this -> assertTrue ( isset ( $this -> db -> _queryCache [ $expected ]));
2008-07-05 11:02:09 +00:00
2008-05-30 11:40:08 +00:00
}
2008-06-05 15:20:45 +00:00
/**
* testParameterMismatch method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testParameterMismatch () {
$this -> loadFixtures ( 'Article' );
$Article =& new Article ();
$query = 'SELECT * FROM ' . $this -> db -> fullTableName ( 'articles' ) . ' WHERE ' . $this -> db -> fullTableName ( 'articles' ) . '.published = ? AND ' . $this -> db -> fullTableName ( 'articles' ) . '.user_id = ?' ;
$params = array ( 'Y' );
2008-05-31 12:36:38 +00:00
$this -> expectError ();
ob_start ();
2008-05-30 11:40:08 +00:00
$result = $Article -> query ( $query , $params );
2008-05-31 12:36:38 +00:00
ob_end_clean ();
2008-05-30 11:40:08 +00:00
$this -> assertEqual ( $result , null );
}
2008-06-05 15:20:45 +00:00
/**
* testVeryStrangeUseCase method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testVeryStrangeUseCase () {
2008-05-31 12:36:38 +00:00
if ( $this -> db -> config [ 'driver' ] == 'mssql' ) {
2008-05-30 11:40:08 +00:00
return ;
}
$this -> loadFixtures ( 'Article' );
$Article =& new Article ();
$query = 'SELECT * FROM ? WHERE ? = ? AND ? = ?' ;
$param = array ( $this -> db -> fullTableName ( 'articles' ), $this -> db -> fullTableName ( 'articles' ) . '.user_id' , '3' , $this -> db -> fullTableName ( 'articles' ) . '.published' , 'Y' );
$this -> expectError ();
ob_start ();
$result = $Article -> query ( $query , $param );
ob_end_clean ();
}
2008-06-05 15:20:45 +00:00
/**
* testUnderscoreFieldSave method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function testUnderscoreFieldSave () {
$this -> loadFixtures ( 'UnderscoreField' );
$UnderscoreField =& new UnderscoreField ();
$currentCount = $UnderscoreField -> find ( 'count' );
$this -> assertEqual ( $currentCount , 3 );
$data = array ( 'UnderscoreField' => array (
'user_id' => '1' ,
2008-06-20 20:17:23 +00:00
'my_model_has_a_field' => 'Content here' ,
2008-05-30 11:40:08 +00:00
'body' => 'Body' ,
'published' => 'Y' ,
'another_field' => 4
));
$ret = $UnderscoreField -> save ( $data );
$this -> assertTrue ( $ret );
$currentCount = $UnderscoreField -> find ( 'count' );
$this -> assertEqual ( $currentCount , 4 );
}
2008-06-05 15:20:45 +00:00
/**
* testGroupBy method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-31 21:29:37 +00:00
function testGroupBy () {
2008-06-01 19:00:33 +00:00
$this -> loadFixtures ( 'Project' , 'Product' , 'Thread' , 'Message' , 'Bid' );
2008-05-31 12:36:38 +00:00
$Thread =& new Thread ();
2008-06-01 19:00:33 +00:00
$Product =& new Product ();
2008-06-14 20:39:27 +00:00
2008-05-31 21:29:37 +00:00
$result = $Thread -> find ( 'all' , array (
'group' => 'Thread.project_id'
));
2008-06-15 09:08:50 +00:00
2008-05-31 21:29:37 +00:00
$expected = array (
array (
'Thread' => array ( 'id' => 1 , 'project_id' => 1 , 'name' => 'Project 1, Thread 1' ),
2008-06-15 09:08:50 +00:00
'Project' => array ( 'id' => 1 , 'name' => 'Project 1' ),
'Message' => array ( array ( 'id' => 1 , 'thread_id' => 1 , 'name' => 'Thread 1, Message 1' )),
2008-05-31 21:29:37 +00:00
),
array (
'Thread' => array ( 'id' => 3 , 'project_id' => 2 , 'name' => 'Project 2, Thread 1' ),
2008-06-15 09:08:50 +00:00
'Project' => array ( 'id' => 2 , 'name' => 'Project 2' ),
'Message' => array ( array ( 'id' => 3 , 'thread_id' => 3 , 'name' => 'Thread 3, Message 1' )),
2008-05-31 21:29:37 +00:00
),
);
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
2008-05-31 21:29:37 +00:00
$rows = $Thread -> find ( 'all' , array (
'group' => 'Thread.project_id' , 'fields' => array ( 'Thread.project_id' , 'COUNT(*) AS total' )
));
$result = array ();
foreach ( $rows as $row ) {
$result [ $row [ 'Thread' ][ 'project_id' ]] = $row [ 0 ][ 'total' ];
}
$expected = array (
1 => 2 ,
2 => 1
);
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
2008-05-31 21:29:37 +00:00
$rows = $Thread -> find ( 'all' , array (
'group' => 'Thread.project_id' , 'fields' => array ( 'Thread.project_id' , 'COUNT(*) AS total' ), 'order' => 'Thread.project_id'
));
$result = array ();
foreach ( $rows as $row ) {
$result [ $row [ 'Thread' ][ 'project_id' ]] = $row [ 0 ][ 'total' ];
}
$expected = array (
1 => 2 ,
2 => 1
);
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
2008-05-31 12:36:38 +00:00
$result = $Thread -> find ( 'all' , array (
'conditions' => array ( 'Thread.project_id' => 1 ), 'group' => 'Thread.project_id' )
);
$expected = array (
array (
2008-05-31 21:29:37 +00:00
'Thread' => array ( 'id' => 1 , 'project_id' => 1 , 'name' => 'Project 1, Thread 1' ),
2008-06-15 09:08:50 +00:00
'Project' => array ( 'id' => 1 , 'name' => 'Project 1' ),
'Message' => array ( array ( 'id' => 1 , 'thread_id' => 1 , 'name' => 'Thread 1, Message 1' )),
2008-05-31 12:36:38 +00:00
)
);
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
2008-06-15 09:08:50 +00:00
$result = $Thread -> find ( 'all' , array (
'conditions' => array ( 'Thread.project_id' => 1 ), 'group' => 'Thread.project_id, Project.id' )
);
$this -> assertEqual ( $result , $expected );
$result = $Thread -> find ( 'all' , array (
'conditions' => array ( 'Thread.project_id' => 1 ), 'group' => 'project_id' )
);
$this -> assertEqual ( $result , $expected );
$result = $Thread -> find ( 'all' , array (
'conditions' => array ( 'Thread.project_id' => 1 ), 'group' => array ( 'project_id' ))
);
$this -> assertEqual ( $result , $expected );
$result = $Thread -> find ( 'all' , array (
'conditions' => array ( 'Thread.project_id' => 1 ), 'group' => array ( 'project_id' , 'Project.id' ))
);
$this -> assertEqual ( $result , $expected );
$result = $Thread -> find ( 'all' , array (
'conditions' => array ( 'Thread.project_id' => 1 ), 'group' => array ( 'Thread.project_id' , 'Project.id' ))
);
$this -> assertEqual ( $result , $expected );
2008-06-14 20:39:27 +00:00
$expected = array (
array ( 'Product' => array ( 'type' => 'Clothing' ), array ( 'price' => 32 )),
array ( 'Product' => array ( 'type' => 'Food' ), array ( 'price' => 9 )),
array ( 'Product' => array ( 'type' => 'Music' ), array ( 'price' => 4 )),
array ( 'Product' => array ( 'type' => 'Toy' ), array ( 'price' => 3 ))
);
2008-06-15 09:08:50 +00:00
$result = $Product -> find ( 'all' , array ( 'fields' => array ( 'Product.type' , 'MIN(Product.price) as price' ), 'group' => 'Product.type' ));
2008-06-14 20:39:27 +00:00
$this -> assertEqual ( $result , $expected );
2008-06-15 09:08:50 +00:00
$result = $Product -> find ( 'all' , array ( 'fields' => array ( 'Product.type' , 'MIN(Product.price) as price' ), 'group' => array ( 'Product.type' )));
2008-06-16 03:11:32 +00:00
$this -> assertEqual ( $result , $expected );
2008-05-31 12:36:38 +00:00
}
2008-06-05 15:20:45 +00:00
/**
* testSaveDateAsFirstEntry method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-31 16:57:30 +00:00
function testSaveDateAsFirstEntry () {
$this -> loadFixtures ( 'Article' );
$Article =& new Article ();
$data = array ( 'Article' => array (
'created' => array (
'day' => '1' , 'month' => '1' , 'year' => '2008'
),
'title' => 'Test Title' ,
2008-07-31 15:38:23 +00:00
// schreck - Jul 30, 2008 - should this be set to something else?
'user_id' => 1
2008-05-31 16:57:30 +00:00
));
$Article -> create ();
$this -> assertTrue ( $Article -> save ( $data ));
$testResult = $Article -> find ( array ( 'Article.title' => 'Test Title' ));
$this -> assertEqual ( $testResult [ 'Article' ][ 'title' ], $data [ 'Article' ][ 'title' ]);
$this -> assertEqual ( $testResult [ 'Article' ][ 'created' ], '2008-01-01 00:00:00' );
}
2008-06-16 03:11:32 +00:00
/**
* testDeleteDependentWithConditions method
*
* @ access public
* @ return void
*/
function testDeleteDependentWithConditions () {
$this -> loadFixtures ( 'Cd' , 'Book' , 'OverallFavorite' );
$Cd =& new Cd ();
$OverallFavorite =& new OverallFavorite ();
$Cd -> del ( 1 );
$result = $OverallFavorite -> find ( 'all' , array ( 'fields' => array ( 'model_type' , 'model_id' , 'priority' )));
$expected = array ( array ( 'OverallFavorite' => array ( 'model_type' => 'Book' , 'model_id' => 1 , 'priority' => 2 )));
$this -> assertTrue ( is_array ( $result ));
$this -> assertEqual ( $result , $expected );
}
2008-06-27 06:07:00 +00:00
/**
* testSaveAllHasManyValidationOnly method
*
* @ access public
* @ return void
*/
function testSaveAllHasManyValidationOnly () {
$this -> loadFixtures ( 'Article' , 'Comment' );
$TestModel =& new Article ();
$TestModel -> belongsTo = $TestModel -> hasAndBelongsToMany = array ();
$TestModel -> Comment -> validate = array ( 'comment' => VALID_NOT_EMPTY );
$result = $TestModel -> saveAll (
array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'id' => 1 , 'comment' => '' , 'published' => 'Y' , 'user_id' => 1 ),
array ( 'id' => 2 , 'comment' => 'comment' , 'published' => 'Y' , 'user_id' => 1 ),
)
),
array ( 'validate' => 'only' )
);
2008-08-26 13:31:07 +00:00
$this -> assertFalse ( $result );
2008-06-27 06:07:00 +00:00
$result = $TestModel -> saveAll (
array (
'Article' => array ( 'id' => 2 ),
'Comment' => array (
array ( 'id' => 1 , 'comment' => '' , 'published' => 'Y' , 'user_id' => 1 ),
array ( 'id' => 2 , 'comment' => 'comment' , 'published' => 'Y' , 'user_id' => 1 ),
2008-08-26 13:31:07 +00:00
array ( 'id' => 3 , 'comment' => '' , 'published' => 'Y' , 'user_id' => 1 ),
2008-06-27 06:07:00 +00:00
)
),
array ( 'validate' => 'only' , 'atomic' => false )
);
2008-08-26 13:31:07 +00:00
$expected = array ( 'Article' => true , 'Comment' => array ( false , true , false ));
2008-06-27 06:07:00 +00:00
$this -> assertIdentical ( $result , $expected );
$expected = array ( 'Comment' => array (
2008-08-26 13:31:07 +00:00
0 => array ( 'comment' => 'This field cannot be left blank' ),
2 => array ( 'comment' => 'This field cannot be left blank' )
2008-06-27 06:07:00 +00:00
));
$this -> assertEqual ( $TestModel -> validationErrors , $expected );
$expected = array (
2008-08-26 13:31:07 +00:00
0 => array ( 'comment' => 'This field cannot be left blank' ),
2 => array ( 'comment' => 'This field cannot be left blank' )
2008-06-27 06:07:00 +00:00
);
$this -> assertEqual ( $TestModel -> Comment -> validationErrors , $expected );
}
2008-07-31 15:38:23 +00:00
/**
* testPkInHabtmLinkModel method
*
* @ access public
* @ return void
*/
function testPkInHabtmLinkModel () {
//Test Nonconformant Models
$this -> loadFixtures ( 'Content' , 'ContentAccount' , 'Account' );
$TestModel =& new Content ();
$this -> assertEqual ( $TestModel -> ContentAccount -> primaryKey , 'iContentAccountsId' );
//test conformant models with no PK in the join table
$this -> loadFixtures ( 'Article' , 'Tag' );
$TestModel2 =& new Article ();
$this -> assertEqual ( $TestModel2 -> ArticlesTag -> primaryKey , 'article_id' );
//test conformant models with PK in join table
$this -> loadFixtures ( 'Item' , 'Portfolio' , 'ItemsPortfolio' );
$TestModel3 =& new Portfolio ();
$this -> assertEqual ( $TestModel3 -> ItemsPortfolio -> primaryKey , 'id' );
2008-08-11 16:18:19 +00:00
//test conformant models with PK in join table - join table contains extra field
$this -> loadFixtures ( 'JoinA' , 'JoinB' , 'JoinAB' );
$TestModel4 =& new JoinA ();
$this -> assertEqual ( $TestModel4 -> JoinAsJoinB -> primaryKey , 'id' );
}
/**
* testInsertAnotherHabtmRecordWithSameForeignKey method
*
* @ access public
* @ return void
*/
function testInsertAnotherHabtmRecordWithSameForeignKey () {
$this -> loadFixtures ( 'JoinA' , 'JoinB' , 'JoinAB' );
$TestModel = new JoinA ();
$result = $TestModel -> JoinAsJoinB -> findById ( 1 );
$expected = array ( 'JoinAsJoinB' => array ( 'id' => 1 , 'join_a_id' => 1 , 'join_b_id' => 2 , 'other' => 'Data for Join A 1 Join B 2' , 'created' => '2008-01-03 10:56:33' , 'updated' => '2008-01-03 10:56:33' ));
$this -> assertEqual ( $result , $expected );
$TestModel -> JoinAsJoinB -> create ();
$result = $TestModel -> JoinAsJoinB -> save ( array ( 'join_a_id' => 1 , 'join_b_id' => 1 , 'other' => 'Data for Join A 1 Join B 1' , 'created' => '2008-01-03 10:56:44' , 'updated' => '2008-01-03 10:56:44' ));
$this -> assertTrue ( $result );
$lastInsertId = $TestModel -> JoinAsJoinB -> getLastInsertID ();
$this -> assertTrue ( $lastInsertId != null );
$result = $TestModel -> JoinAsJoinB -> findById ( 1 );
$expected = array ( 'JoinAsJoinB' => array ( 'id' => 1 , 'join_a_id' => 1 , 'join_b_id' => 2 , 'other' => 'Data for Join A 1 Join B 2' , 'created' => '2008-01-03 10:56:33' , 'updated' => '2008-01-03 10:56:33' ));
$this -> assertEqual ( $result , $expected );
$updatedValue = 'UPDATED Data for Join A 1 Join B 2' ;
$TestModel -> JoinAsJoinB -> id = 1 ;
$result = $TestModel -> JoinAsJoinB -> saveField ( 'other' , $updatedValue , false );
$this -> assertTrue ( $result );
$result = $TestModel -> JoinAsJoinB -> findById ( 1 );
$this -> assertEqual ( $result [ 'JoinAsJoinB' ][ 'other' ], $updatedValue );
2008-07-31 15:38:23 +00:00
}
2008-08-27 04:55:15 +00:00
/**
* Tests that $cacheSources can only be disabled in the db using model settings , not enabled
*
* @ access public
* @ return void
*/
function testCacheSourcesDisabling () {
$this -> db -> cacheSources = true ;
$TestModel = new JoinA ();
$TestModel -> cacheSources = false ;
$TestModel -> setSource ( 'join_as' );
$this -> assertFalse ( $this -> db -> cacheSources );
$this -> db -> cacheSources = false ;
$TestModel = new JoinA ();
$TestModel -> cacheSources = true ;
$TestModel -> setSource ( 'join_as' );
$this -> assertFalse ( $this -> db -> cacheSources );
}
2008-06-05 15:20:45 +00:00
/**
* endTest method
2008-06-14 20:39:27 +00:00
*
2008-06-05 15:20:45 +00:00
* @ access public
* @ return void
*/
2008-05-30 11:40:08 +00:00
function endTest () {
ClassRegistry :: flush ();
}
}
2008-08-27 04:55:15 +00:00
2008-08-07 15:36:26 +00:00
?>