5
* Mock classes for use in Model and related test cases
9
* CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
10
* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
12
* Licensed under The Open Group Test Suite License
13
* Redistributions of files must retain the above copyright notice.
15
* @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
16
* @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
18
* @subpackage cake.tests.cases.libs.model
19
* @since CakePHP(tm) v 1.2.0.6464
20
* @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
22
if (!defined('CAKEPHP_UNIT_TEST_EXECUTION')) {
23
define('CAKEPHP_UNIT_TEST_EXECUTION', 1);
30
* @subpackage cake.tests.cases.libs.model
32
class Test extends CakeTestModel {
40
var $useTable = false;
57
'id'=> array('type' => 'integer', 'null' => '', 'default' => '1', 'length' => '8', 'key'=>'primary'),
58
'name'=> array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
59
'email'=> array('type' => 'string', 'null' => '1', 'default' => '', 'length' => '155'),
60
'notes'=> array('type' => 'text', 'null' => '1', 'default' => 'write some notes here', 'length' => ''),
61
'created'=> array('type' => 'date', 'null' => '1', 'default' => '', 'length' => ''),
62
'updated'=> array('type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null)
70
* @subpackage cake.tests.cases.libs.model
72
class TestAlias extends CakeTestModel {
80
var $useTable = false;
85
* @var string 'TestAlias'
88
var $name = 'TestAlias';
93
* @var string 'TestAlias'
96
var $alias = 'TestAlias';
104
var $_schema = array(
105
'id'=> array('type' => 'integer', 'null' => '', 'default' => '1', 'length' => '8', 'key'=>'primary'),
106
'name'=> array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
107
'email'=> array('type' => 'string', 'null' => '1', 'default' => '', 'length' => '155'),
108
'notes'=> array('type' => 'text', 'null' => '1', 'default' => 'write some notes here', 'length' => ''),
109
'created'=> array('type' => 'date', 'null' => '1', 'default' => '', 'length' => ''),
110
'updated'=> array('type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null)
118
* @subpackage cake.tests.cases.libs.model
120
class TestValidate extends CakeTestModel {
128
var $useTable = false;
133
* @var string 'TestValidate'
136
var $name = 'TestValidate';
144
var $_schema = array(
145
'id' => array('type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'),
146
'title' => array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'),
147
'body' => array('type' => 'string', 'null' => '1', 'default' => '', 'length' => ''),
148
'number' => array('type' => 'integer', 'null' => '', 'default' => '', 'length' => '8'),
149
'created' => array('type' => 'date', 'null' => '1', 'default' => '', 'length' => ''),
150
'modified' => array('type' => 'datetime', 'null' => '1', 'default' => '', 'length' => null)
154
* validateNumber method
156
* @param mixed $value
157
* @param mixed $options
161
function validateNumber($value, $options) {
162
$options = array_merge(array('min' => 0, 'max' => 100), $options);
163
$valid = ($value['number'] >= $options['min'] && $value['number'] <= $options['max']);
168
* validateTitle method
170
* @param mixed $value
174
function validateTitle($value) {
175
return (!empty($value) && strpos(low($value['title']), 'title-') === 0);
183
* @subpackage cake.tests.cases.libs.model
185
class User extends CakeTestModel {
201
var $validate = array('user' => 'notEmpty', 'password' => 'notEmpty');
208
* @subpackage cake.tests.cases.libs.model
210
class Article extends CakeTestModel {
215
* @var string 'Article'
218
var $name = 'Article';
226
var $belongsTo = array('User');
234
var $hasMany = array('Comment' => array('dependent' => true));
237
* hasAndBelongsToMany property
242
var $hasAndBelongsToMany = array('Tag');
250
var $validate = array('user_id' => 'numeric', 'title' => array('allowEmpty' => false, 'rule' => 'notEmpty'), 'body' => 'notEmpty');
253
* beforeSaveReturn property
258
var $beforeSaveReturn = true;
266
function beforeSave() {
267
return $this->beforeSaveReturn;
271
* titleDuplicate method
273
* @param mixed $title
277
function titleDuplicate ($title) {
278
if ($title === 'My Article Title') {
286
* Model stub for beforeDelete testing
289
* @package cake.tests
291
class BeforeDeleteComment extends CakeTestModel {
292
var $name = 'BeforeDeleteComment';
294
var $useTable = 'comments';
296
function beforeDelete($cascade = true) {
297
$db =& $this->getDataSource();
298
$db->delete($this, array($this->alias . '.' . $this->primaryKey => array(1, 3)));
304
* NumericArticle class
307
* @subpackage cake.tests.cases.libs.model
309
class NumericArticle extends CakeTestModel {
314
* @var string 'NumericArticle'
317
var $name = 'NumericArticle';
322
* @var string 'numeric_articles'
325
var $useTable = 'numeric_articles';
332
* @subpackage cake.tests.cases.libs.model
334
class Article10 extends CakeTestModel {
339
* @var string 'Article10'
342
var $name = 'Article10';
347
* @var string 'articles'
350
var $useTable = 'articles';
358
var $hasMany = array('Comment' => array('dependent' => true, 'exclusive' => true));
362
* ArticleFeatured class
365
* @subpackage cake.tests.cases.libs.model
367
class ArticleFeatured extends CakeTestModel {
372
* @var string 'ArticleFeatured'
375
var $name = 'ArticleFeatured';
383
var $belongsTo = array('User', 'Category');
391
var $hasOne = array('Featured');
399
var $hasMany = array('Comment' => array('className' => 'Comment', 'dependent' => true));
402
* hasAndBelongsToMany property
407
var $hasAndBelongsToMany = array('Tag');
415
var $validate = array('user_id' => 'numeric', 'title' => 'notEmpty', 'body' => 'notEmpty');
422
* @subpackage cake.tests.cases.libs.model
424
class Featured extends CakeTestModel {
429
* @var string 'Featured'
432
var $name = 'Featured';
440
var $belongsTo = array('ArticleFeatured', 'Category');
447
* @subpackage cake.tests.cases.libs.model
449
class Tag extends CakeTestModel {
464
* @subpackage cake.tests.cases.libs.model
466
class ArticlesTag extends CakeTestModel {
471
* @var string 'ArticlesTag'
474
var $name = 'ArticlesTag';
478
* ArticleFeaturedsTag class
481
* @subpackage cake.tests.cases.libs.model
483
class ArticleFeaturedsTag extends CakeTestModel {
488
* @var string 'ArticleFeaturedsTag'
491
var $name = 'ArticleFeaturedsTag';
498
* @subpackage cake.tests.cases.libs.model
500
class Comment extends CakeTestModel {
505
* @var string 'Comment'
508
var $name = 'Comment';
516
var $belongsTo = array('Article', 'User');
524
var $hasOne = array('Attachment' => array('dependent' => true));
528
* Modified Comment Class has afterFind Callback
531
* @subpackage cake.tests.cases.libs.model
533
class ModifiedComment extends CakeTestModel {
538
* @var string 'Comment'
541
var $name = 'Comment';
546
* @var string 'comments'
549
var $useTable = 'comments';
557
var $belongsTo = array('Article');
564
function afterFind($results) {
565
if (isset($results[0])) {
566
$results[0]['Comment']['callback'] = 'Fire';
573
* Modified Comment Class has afterFind Callback
576
* @subpackage cake.tests.cases.libs.model
578
class AgainModifiedComment extends CakeTestModel {
583
* @var string 'Comment'
586
var $name = 'Comment';
591
* @var string 'comments'
594
var $useTable = 'comments';
602
var $belongsTo = array('Article');
609
function afterFind($results) {
610
if (isset($results[0])) {
611
$results[0]['Comment']['querytype'] = $this->findQueryType;
618
* MergeVarPluginAppModel class
621
* @subpackage cake.tests.cases.libs.model
623
class MergeVarPluginAppModel extends AppModel {
636
* MergeVarPluginPost class
639
* @subpackage cake.tests.cases.libs.model
641
class MergeVarPluginPost extends MergeVarPluginAppModel {
657
var $useTable = 'posts';
661
* MergeVarPluginComment class
664
* @subpackage cake.tests.cases.libs.model
666
class MergeVarPluginComment extends MergeVarPluginAppModel {
674
'Containable' => array('some_settings')
682
var $useTable = 'comments';
690
* @subpackage cake.tests.cases.libs.model
692
class Attachment extends CakeTestModel {
697
* @var string 'Attachment'
700
var $name = 'Attachment';
707
* @subpackage cake.tests.cases.libs.model
709
class Category extends CakeTestModel {
714
* @var string 'Category'
717
var $name = 'Category';
721
* CategoryThread class
724
* @subpackage cake.tests.cases.libs.model
726
class CategoryThread extends CakeTestModel {
731
* @var string 'CategoryThread'
734
var $name = 'CategoryThread';
742
var $belongsTo = array('ParentCategory' => array('className' => 'CategoryThread', 'foreignKey' => 'parent_id'));
749
* @subpackage cake.tests.cases.libs.model
751
class Apple extends CakeTestModel {
756
* @var string 'Apple'
767
var $validate = array('name' => 'notEmpty');
775
var $hasOne = array('Sample');
783
var $hasMany = array('Child' => array('className' => 'Apple', 'dependent' => true));
791
var $belongsTo = array('Parent' => array('className' => 'Apple', 'foreignKey' => 'apple_id'));
798
* @subpackage cake.tests.cases.libs.model
800
class Sample extends CakeTestModel {
805
* @var string 'Sample'
808
var $name = 'Sample';
813
* @var string 'Apple'
816
var $belongsTo = 'Apple';
820
* AnotherArticle class
823
* @subpackage cake.tests.cases.libs.model
825
class AnotherArticle extends CakeTestModel {
830
* @var string 'AnotherArticle'
833
var $name = 'AnotherArticle';
841
var $hasMany = 'Home';
845
* Advertisement class
848
* @subpackage cake.tests.cases.libs.model
850
class Advertisement extends CakeTestModel {
855
* @var string 'Advertisement'
858
var $name = 'Advertisement';
866
var $hasMany = 'Home';
873
* @subpackage cake.tests.cases.libs.model
875
class Home extends CakeTestModel {
891
var $belongsTo = array('AnotherArticle', 'Advertisement');
898
* @subpackage cake.tests.cases.libs.model
900
class Post extends CakeTestModel {
916
var $belongsTo = array('Author');
918
function beforeFind($queryData) {
919
if (isset($queryData['connection'])) {
920
$this->useDbConfig = $queryData['connection'];
925
function afterFind($results) {
926
$this->useDbConfig = 'test_suite';
935
* @subpackage cake.tests.cases.libs.model
937
class Author extends CakeTestModel {
942
* @var string 'Author'
945
var $name = 'Author';
953
var $hasMany = array('Post');
958
* @param mixed $results
962
function afterFind($results) {
963
$results[0]['Author']['test'] = 'working';
969
* ModifiedAuthor class
972
* @subpackage cake.tests.cases.libs.model
974
class ModifiedAuthor extends Author {
979
* @var string 'Author'
982
var $name = 'Author';
987
* @param mixed $results
991
function afterFind($results) {
992
foreach($results as $index => $result) {
993
$results[$index]['Author']['user'] .= ' (CakePHP)';
1003
* @subpackage cake.tests.cases.libs.model
1005
class Project extends CakeTestModel {
1010
* @var string 'Project'
1013
var $name = 'Project';
1021
var $hasMany = array('Thread');
1028
* @subpackage cake.tests.cases.libs.model
1030
class Thread extends CakeTestModel {
1035
* @var string 'Thread'
1038
var $name = 'Thread';
1046
var $belongsTo = array('Project');
1054
var $hasMany = array('Message');
1061
* @subpackage cake.tests.cases.libs.model
1063
class Message extends CakeTestModel {
1068
* @var string 'Message'
1071
var $name = 'Message';
1079
var $hasOne = array('Bid');
1086
* @subpackage cake.tests.cases.libs.model
1088
class Bid extends CakeTestModel {
1099
* belongsTo property
1104
var $belongsTo = array('Message');
1108
* NodeAfterFind class
1111
* @subpackage cake.tests.cases.libs.model
1113
class NodeAfterFind extends CakeTestModel {
1118
* @var string 'NodeAfterFind'
1121
var $name = 'NodeAfterFind';
1129
var $validate = array('name' => 'notEmpty');
1134
* @var string 'apples'
1137
var $useTable = 'apples';
1145
var $hasOne = array('Sample' => array('className' => 'NodeAfterFindSample'));
1153
var $hasMany = array('Child' => array('className' => 'NodeAfterFind', 'dependent' => true));
1156
* belongsTo property
1161
var $belongsTo = array('Parent' => array('className' => 'NodeAfterFind', 'foreignKey' => 'apple_id'));
1166
* @param mixed $results
1170
function afterFind($results) {
1176
* NodeAfterFindSample class
1179
* @subpackage cake.tests.cases.libs.model
1181
class NodeAfterFindSample extends CakeTestModel {
1186
* @var string 'NodeAfterFindSample'
1189
var $name = 'NodeAfterFindSample';
1194
* @var string 'samples'
1197
var $useTable = 'samples';
1200
* belongsTo property
1202
* @var string 'NodeAfterFind'
1205
var $belongsTo = 'NodeAfterFind';
1209
* NodeNoAfterFind class
1212
* @subpackage cake.tests.cases.libs.model
1214
class NodeNoAfterFind extends CakeTestModel {
1219
* @var string 'NodeAfterFind'
1222
var $name = 'NodeAfterFind';
1230
var $validate = array('name' => 'notEmpty');
1235
* @var string 'apples'
1238
var $useTable = 'apples';
1246
var $hasOne = array('Sample' => array('className' => 'NodeAfterFindSample'));
1254
var $hasMany = array('Child' => array('className' => 'NodeAfterFind', 'dependent' => true));
1257
* belongsTo property
1262
var $belongsTo = array('Parent' => array('className' => 'NodeAfterFind', 'foreignKey' => 'apple_id'));
1269
* @subpackage cake.tests.cases.libs.model
1271
class Node extends CakeTestModel{
1276
* @var string 'Node'
1282
* hasAndBelongsToMany property
1287
var $hasAndBelongsToMany = array(
1288
'ParentNode' => array(
1289
'className' => 'Node',
1290
'joinTable' => 'dependency',
1291
'with' => 'Dependency',
1292
'foreignKey' => 'child_id',
1293
'associationForeignKey' => 'parent_id',
1302
* @subpackage cake.tests.cases.libs.model
1304
class Dependency extends CakeTestModel {
1309
* @var string 'Dependency'
1312
var $name = 'Dependency';
1319
* @subpackage cake.tests.cases.libs.model
1321
class ModelA extends CakeTestModel {
1326
* @var string 'ModelA'
1329
var $name = 'ModelA';
1334
* @var string 'apples'
1337
var $useTable = 'apples';
1345
var $hasMany = array('ModelB', 'ModelC');
1352
* @subpackage cake.tests.cases.libs.model
1354
class ModelB extends CakeTestModel {
1359
* @var string 'ModelB'
1362
var $name = 'ModelB';
1367
* @var string 'messages'
1370
var $useTable = 'messages';
1378
var $hasMany = array('ModelD');
1385
* @subpackage cake.tests.cases.libs.model
1387
class ModelC extends CakeTestModel {
1392
* @var string 'ModelC'
1395
var $name = 'ModelC';
1400
* @var string 'bids'
1403
var $useTable = 'bids';
1411
var $hasMany = array('ModelD');
1418
* @subpackage cake.tests.cases.libs.model
1420
class ModelD extends CakeTestModel {
1425
* @var string 'ModelD'
1428
var $name = 'ModelD';
1433
* @var string 'threads'
1436
var $useTable = 'threads';
1443
* @subpackage cake.tests.cases.libs.model
1445
class Something extends CakeTestModel {
1450
* @var string 'Something'
1453
var $name = 'Something';
1456
* hasAndBelongsToMany property
1461
var $hasAndBelongsToMany = array('SomethingElse' => array('with' => array('JoinThing' => array('doomed'))));
1465
* SomethingElse class
1468
* @subpackage cake.tests.cases.libs.model
1470
class SomethingElse extends CakeTestModel {
1475
* @var string 'SomethingElse'
1478
var $name = 'SomethingElse';
1481
* hasAndBelongsToMany property
1486
var $hasAndBelongsToMany = array('Something' => array('with' => 'JoinThing'));
1493
* @subpackage cake.tests.cases.libs.model
1495
class JoinThing extends CakeTestModel {
1500
* @var string 'JoinThing'
1503
var $name = 'JoinThing';
1506
* belongsTo property
1511
var $belongsTo = array('Something', 'SomethingElse');
1518
* @subpackage cake.tests.cases.libs.model
1520
class Portfolio extends CakeTestModel {
1525
* @var string 'Portfolio'
1528
var $name = 'Portfolio';
1531
* hasAndBelongsToMany property
1536
var $hasAndBelongsToMany = array('Item');
1543
* @subpackage cake.tests.cases.libs.model
1545
class Item extends CakeTestModel {
1550
* @var string 'Item'
1556
* belongsTo property
1561
var $belongsTo = array('Syfile' => array('counterCache' => true));
1564
* hasAndBelongsToMany property
1569
var $hasAndBelongsToMany = array('Portfolio' => array('unique' => false));
1573
* ItemsPortfolio class
1576
* @subpackage cake.tests.cases.libs.model
1578
class ItemsPortfolio extends CakeTestModel {
1583
* @var string 'ItemsPortfolio'
1586
var $name = 'ItemsPortfolio';
1593
* @subpackage cake.tests.cases.libs.model
1595
class Syfile extends CakeTestModel {
1600
* @var string 'Syfile'
1603
var $name = 'Syfile';
1606
* belongsTo property
1611
var $belongsTo = array('Image');
1618
* @subpackage cake.tests.cases.libs.model
1620
class Image extends CakeTestModel {
1625
* @var string 'Image'
1628
var $name = 'Image';
1635
* @subpackage cake.tests.cases.libs.model
1637
class DeviceType extends CakeTestModel {
1642
* @var string 'DeviceType'
1645
var $name = 'DeviceType';
1653
var $order = array('DeviceType.order' => 'ASC');
1656
* belongsTo property
1661
var $belongsTo = array(
1662
'DeviceTypeCategory', 'FeatureSet', 'ExteriorTypeCategory',
1663
'Image' => array('className' => 'Document'),
1664
'Extra1' => array('className' => 'Document'),
1665
'Extra2' => array('className' => 'Document'));
1673
var $hasMany = array('Device' => array('order' => array('Device.id' => 'ASC')));
1677
* DeviceTypeCategory class
1680
* @subpackage cake.tests.cases.libs.model
1682
class DeviceTypeCategory extends CakeTestModel {
1687
* @var string 'DeviceTypeCategory'
1690
var $name = 'DeviceTypeCategory';
1697
* @subpackage cake.tests.cases.libs.model
1699
class FeatureSet extends CakeTestModel {
1704
* @var string 'FeatureSet'
1707
var $name = 'FeatureSet';
1711
* ExteriorTypeCategory class
1714
* @subpackage cake.tests.cases.libs.model
1716
class ExteriorTypeCategory extends CakeTestModel {
1721
* @var string 'ExteriorTypeCategory'
1724
var $name = 'ExteriorTypeCategory';
1727
* belongsTo property
1732
var $belongsTo = array('Image' => array('className' => 'Device'));
1739
* @subpackage cake.tests.cases.libs.model
1741
class Document extends CakeTestModel {
1746
* @var string 'Document'
1749
var $name = 'Document';
1752
* belongsTo property
1757
var $belongsTo = array('DocumentDirectory');
1764
* @subpackage cake.tests.cases.libs.model
1766
class Device extends CakeTestModel {
1771
* @var string 'Device'
1774
var $name = 'Device';
1778
* DocumentDirectory class
1781
* @subpackage cake.tests.cases.libs.model
1783
class DocumentDirectory extends CakeTestModel {
1788
* @var string 'DocumentDirectory'
1791
var $name = 'DocumentDirectory';
1795
* PrimaryModel class
1798
* @subpackage cake.tests.cases.libs.model
1800
class PrimaryModel extends CakeTestModel {
1805
* @var string 'PrimaryModel'
1808
var $name = 'PrimaryModel';
1812
* SecondaryModel class
1815
* @subpackage cake.tests.cases.libs.model
1817
class SecondaryModel extends CakeTestModel {
1822
* @var string 'SecondaryModel'
1825
var $name = 'SecondaryModel';
1832
* @subpackage cake.tests.cases.libs.model
1834
class JoinA extends CakeTestModel {
1839
* @var string 'JoinA'
1842
var $name = 'JoinA';
1845
* hasAndBelongsToMany property
1850
var $hasAndBelongsToMany = array('JoinB', 'JoinC');
1857
* @subpackage cake.tests.cases.libs.model
1859
class JoinB extends CakeTestModel {
1864
* @var string 'JoinB'
1867
var $name = 'JoinB';
1870
* hasAndBelongsToMany property
1875
var $hasAndBelongsToMany = array('JoinA');
1882
* @subpackage cake.tests.cases.libs.model
1884
class JoinC extends CakeTestModel {
1889
* @var string 'JoinC'
1892
var $name = 'JoinC';
1895
* hasAndBelongsToMany property
1900
var $hasAndBelongsToMany = array('JoinA');
1907
* @subpackage cake.tests.cases.libs.model
1909
class ThePaper extends CakeTestModel {
1914
* @var string 'ThePaper'
1917
var $name = 'ThePaper';
1922
* @var string 'apples'
1925
var $useTable = 'apples';
1933
var $hasOne = array('Itself' => array('className' => 'ThePaper', 'foreignKey' => 'apple_id'));
1936
* hasAndBelongsToMany property
1941
var $hasAndBelongsToMany = array('Monkey' => array('joinTable' => 'the_paper_monkies', 'order' => 'id'));
1948
* @subpackage cake.tests.cases.libs.model
1950
class Monkey extends CakeTestModel {
1955
* @var string 'Monkey'
1958
var $name = 'Monkey';
1963
* @var string 'devices'
1966
var $useTable = 'devices';
1970
* AssociationTest1 class
1973
* @subpackage cake.tests.cases.libs.model
1975
class AssociationTest1 extends CakeTestModel {
1980
* @var string 'join_as'
1983
var $useTable = 'join_as';
1988
* @var string 'AssociationTest1'
1991
var $name = 'AssociationTest1';
1994
* hasAndBelongsToMany property
1999
var $hasAndBelongsToMany = array('AssociationTest2' => array(
2000
'unique' => false, 'joinTable' => 'join_as_join_bs', 'foreignKey' => false
2005
* AssociationTest2 class
2008
* @subpackage cake.tests.cases.libs.model
2010
class AssociationTest2 extends CakeTestModel {
2015
* @var string 'join_bs'
2018
var $useTable = 'join_bs';
2023
* @var string 'AssociationTest2'
2026
var $name = 'AssociationTest2';
2029
* hasAndBelongsToMany property
2034
var $hasAndBelongsToMany = array('AssociationTest1' => array(
2035
'unique' => false, 'joinTable' => 'join_as_join_bs'
2043
* @subpackage cake.tests.cases.libs.model
2045
class Callback extends CakeTestModel {
2049
* CallbackPostTestModel class
2052
* @subpackage cake.tests.cases.libs.model
2054
class CallbackPostTestModel extends CakeTestModel {
2055
var $useTable = 'posts';
2057
* variable to control return of beforeValidate
2061
var $beforeValidateReturn = true;
2063
* variable to control return of beforeSave
2067
var $beforeSaveReturn = true;
2069
* variable to control return of beforeDelete
2073
var $beforeDeleteReturn = true;
2075
* beforeSave callback
2079
function beforeSave($options) {
2080
return $this->beforeSaveReturn;
2083
* beforeValidate callback
2087
function beforeValidate($options) {
2088
return $this->beforeValidateReturn;
2091
* beforeDelete callback
2095
function beforeDelete($cascade = true) {
2096
return $this->beforeDeleteReturn;
2104
* @subpackage cake.tests.cases.libs.model
2106
class Uuid extends CakeTestModel {
2111
* @var string 'Uuid'
2121
* @subpackage cake.tests.cases.libs.model
2123
class DataTest extends CakeTestModel {
2128
* @var string 'DataTest'
2131
var $name = 'DataTest';
2138
* @subpackage cake.tests.cases.libs.model
2140
class TheVoid extends CakeTestModel {
2145
* @var string 'TheVoid'
2148
var $name = 'TheVoid';
2156
var $useTable = false;
2160
* ValidationTest1 class
2163
* @subpackage cake.tests.cases.libs.model
2165
class ValidationTest1 extends CakeTestModel {
2170
* @var string 'ValidationTest'
2173
var $name = 'ValidationTest1';
2181
var $useTable = false;
2189
var $_schema = array();
2197
var $validate = array(
2198
'title' => 'notEmpty',
2199
'published' => 'customValidationMethod',
2202
'/^.{5,}$/s' => 'no matchy',
2203
'/^[0-9A-Za-z \\.]{1,}$/s'
2208
* customValidationMethod method
2210
* @param mixed $data
2214
function customValidationMethod($data) {
2219
* Custom validator with parameters + default values
2224
function customValidatorWithParams($data, $validator, $or = true, $ignore_on_same = 'id') {
2225
$this->validatorParams = get_defined_vars();
2226
unset($this->validatorParams['this']);
2231
* Custom validator with messaage
2236
function customValidatorWithMessage($data) {
2237
return 'This field will *never* validate! Muhahaha!';
2240
* Test validation with many parameters
2244
function customValidatorWithSixParams($data, $one = 1, $two = 2, $three = 3, $four = 4, $five = 5, $six = 6) {
2245
$this->validatorParams = get_defined_vars();
2246
unset($this->validatorParams['this']);
2252
* ValidationTest2 class
2255
* @subpackage cake.tests.cases.libs.model
2257
class ValidationTest2 extends CakeTestModel {
2262
* @var string 'ValidationTest2'
2265
var $name = 'ValidationTest2';
2273
var $useTable = false;
2281
var $validate = array(
2282
'title' => 'notEmpty',
2283
'published' => 'customValidationMethod',
2286
'/^.{5,}$/s' => 'no matchy',
2287
'/^[0-9A-Za-z \\.]{1,}$/s'
2292
* customValidationMethod method
2294
* @param mixed $data
2298
function customValidationMethod($data) {
2317
* @subpackage cake.tests.cases.libs.model
2319
class Person extends CakeTestModel {
2324
* @var string 'Person'
2327
var $name = 'Person';
2330
* belongsTo property
2335
var $belongsTo = array(
2337
'className' => 'Person',
2338
'foreignKey' => 'mother_id'),
2340
'className' => 'Person',
2341
'foreignKey' => 'father_id'));
2345
* UnderscoreField class
2348
* @subpackage cake.tests.cases.libs.model
2350
class UnderscoreField extends CakeTestModel {
2355
* @var string 'UnderscoreField'
2358
var $name = 'UnderscoreField';
2365
* @subpackage cake.tests.cases.libs.model
2367
class Product extends CakeTestModel {
2372
* @var string 'Product'
2375
var $name = 'Product';
2382
* @subpackage cake.tests.cases.libs.model
2384
class Story extends CakeTestModel {
2389
* @var string 'Story'
2392
var $name = 'Story';
2395
* primaryKey property
2397
* @var string 'story'
2400
var $primaryKey = 'story';
2403
* hasAndBelongsToMany property
2408
var $hasAndBelongsToMany = array('Tag' => array('foreignKey' => 'story'));
2416
var $validate = array('title' => 'notEmpty');
2423
* @subpackage cake.tests.cases.libs.model
2425
class Cd extends CakeTestModel {
2441
var $hasOne = array('OverallFavorite' => array('foreignKey' => 'model_id', 'dependent' => true, 'conditions' => array('model_type' => 'Cd')));
2448
* @subpackage cake.tests.cases.libs.model
2450
class Book extends CakeTestModel {
2455
* @var string 'Book'
2466
var $hasOne = array('OverallFavorite' => array('foreignKey' => 'model_id', 'dependent' => true, 'conditions' => 'OverallFavorite.model_type = \'Book\''));
2470
* OverallFavorite class
2473
* @subpackage cake.tests.cases.libs.model
2475
class OverallFavorite extends CakeTestModel {
2480
* @var string 'OverallFavorite'
2483
var $name = 'OverallFavorite';
2490
* @subpackage cake.tests.cases.libs.model
2492
class MyUser extends CakeTestModel {
2497
* @var string 'MyUser'
2500
var $name = 'MyUser';
2503
* undocumented variable
2508
var $hasAndBelongsToMany = array('MyCategory');
2515
* @subpackage cake.tests.cases.libs.model
2517
class MyCategory extends CakeTestModel {
2522
* @var string 'MyCategory'
2525
var $name = 'MyCategory';
2528
* undocumented variable
2533
var $hasAndBelongsToMany = array('MyProduct', 'MyUser');
2540
* @subpackage cake.tests.cases.libs.model
2542
class MyProduct extends CakeTestModel {
2547
* @var string 'MyProduct'
2550
var $name = 'MyProduct';
2553
* undocumented variable
2558
var $hasAndBelongsToMany = array('MyCategory');
2562
* MyCategoriesMyUser class
2565
* @subpackage cake.tests.cases.libs.model
2567
class MyCategoriesMyUser extends CakeTestModel {
2572
* @var string 'MyCategoriesMyUser'
2575
var $name = 'MyCategoriesMyUser';
2579
* MyCategoriesMyProduct class
2582
* @subpackage cake.tests.cases.libs.model
2584
class MyCategoriesMyProduct extends CakeTestModel {
2589
* @var string 'MyCategoriesMyProduct'
2592
var $name = 'MyCategoriesMyProduct';
2599
* @subpackage cake.tests.cases.libs.model
2601
class I18nModel extends CakeTestModel {
2606
* @var string 'I18nModel'
2609
var $name = 'I18nModel';
2614
* @var string 'i18n'
2617
var $useTable = 'i18n';
2620
* displayField property
2622
* @var string 'field'
2625
var $displayField = 'field';
2632
* @subpackage cake.tests.cases.libs.model
2634
class NumberTree extends CakeTestModel {
2639
* @var string 'NumberTree'
2642
var $name = 'NumberTree';
2650
var $actsAs = array('Tree');
2655
* @param int $levelLimit
2656
* @param int $childLimit
2657
* @param mixed $currentLevel
2658
* @param mixed $parent_id
2659
* @param string $prefix
2660
* @param bool $hierachial
2664
function initialize($levelLimit = 3, $childLimit = 3, $currentLevel = null, $parent_id = null, $prefix = '1', $hierachial = true) {
2666
$db =& ConnectionManager::getDataSource($this->useDbConfig);
2667
$db->truncate($this->table);
2668
$this->save(array($this->name => array('name' => '1. Root')));
2669
$this->initialize($levelLimit, $childLimit, 1, $this->id, '1', $hierachial);
2670
$this->create(array());
2673
if (!$currentLevel || $currentLevel > $levelLimit) {
2677
for ($i = 1; $i <= $childLimit; $i++) {
2678
$name = $prefix . '.' . $i;
2679
$data = array($this->name => array('name' => $name));
2680
$this->create($data);
2683
if ($this->name == 'UnconventionalTree') {
2684
$data[$this->name]['join'] = $parent_id;
2686
$data[$this->name]['parent_id'] = $parent_id;
2690
$this->initialize($levelLimit, $childLimit, $currentLevel + 1, $this->id, $name, $hierachial);
2696
* NumberTreeTwo class
2699
* @subpackage cake.tests.cases.libs.model
2701
class NumberTreeTwo extends NumberTree {
2706
* @var string 'NumberTree'
2709
var $name = 'NumberTreeTwo';
2717
var $actsAs = array();
2724
* @subpackage cake.tests.cases.libs.model
2726
class FlagTree extends NumberTree {
2731
* @var string 'FlagTree'
2734
var $name = 'FlagTree';
2738
* UnconventionalTree class
2741
* @subpackage cake.tests.cases.libs.model
2743
class UnconventionalTree extends NumberTree {
2748
* @var string 'FlagTree'
2751
var $name = 'UnconventionalTree';
2752
var $actsAs = array(
2765
* @subpackage cake.tests.cases.libs.model
2767
class UuidTree extends NumberTree {
2772
* @var string 'FlagTree'
2775
var $name = 'UuidTree';
2782
* @subpackage cake.tests.cases.libs.model
2784
class Campaign extends CakeTestModel {
2789
* @var string 'Campaign'
2792
var $name = 'Campaign';
2800
var $hasMany = array('Ad' => array('fields' => array('id','campaign_id','name')));
2807
* @subpackage cake.tests.cases.libs.model
2809
class Ad extends CakeTestModel {
2825
var $actsAs = array('Tree');
2828
* belongsTo property
2833
var $belongsTo = array('Campaign');
2840
* @subpackage cake.tests.cases.libs.model
2842
class AfterTree extends NumberTree {
2847
* @var string 'AfterTree'
2850
var $name = 'AfterTree';
2858
var $actsAs = array('Tree');
2860
function afterSave($created) {
2861
if ($created && isset($this->data['AfterTree'])) {
2862
$this->data['AfterTree']['name'] = 'Six and One Half Changed in AfterTree::afterSave() but not in database';
2868
* Nonconformant Content class
2871
* @subpackage cake.tests.cases.libs.model
2873
class Content extends CakeTestModel {
2878
* @var string 'Content'
2881
var $name = 'Content';
2886
* @var string 'Content'
2889
var $useTable = 'Content';
2892
* primaryKey property
2894
* @var string 'iContentId'
2897
var $primaryKey = 'iContentId';
2900
* hasAndBelongsToMany property
2905
var $hasAndBelongsToMany = array('Account' => array('className' => 'Account', 'with' => 'ContentAccount', 'joinTable' => 'ContentAccounts', 'foreignKey' => 'iContentId', 'associationForeignKey', 'iAccountId'));
2909
* Nonconformant Account class
2912
* @subpackage cake.tests.cases.libs.model
2914
class Account extends CakeTestModel {
2919
* @var string 'Account'
2922
var $name = 'Account';
2927
* @var string 'Account'
2930
var $useTable = 'Accounts';
2933
* primaryKey property
2935
* @var string 'iAccountId'
2938
var $primaryKey = 'iAccountId';
2942
* Nonconformant ContentAccount class
2945
* @subpackage cake.tests.cases.libs.model
2947
class ContentAccount extends CakeTestModel {
2952
* @var string 'Account'
2955
var $name = 'ContentAccount';
2960
* @var string 'Account'
2963
var $useTable = 'ContentAccounts';
2966
* primaryKey property
2968
* @var string 'iAccountId'
2971
var $primaryKey = 'iContentAccountsId';
2978
* @subpackage cake.tests.cases.libs.model
2980
class FilmFile extends CakeTestModel {
2981
var $name = 'FilmFile';
2988
* @subpackage cake.tests.cases.libs.model
2990
class Basket extends CakeTestModel {
2991
var $name = 'Basket';
2993
var $belongsTo = array(
2994
'FilmFile' => array(
2995
'className' => 'FilmFile',
2996
'foreignKey' => 'object_id',
2997
'conditions' => "Basket.type = 'file'",
3005
* TestPluginArticle class
3008
* @subpackage cake.tests.cases.libs.model
3010
class TestPluginArticle extends CakeTestModel {
3015
* @var string 'TestPluginArticle'
3018
var $name = 'TestPluginArticle';
3021
* belongsTo property
3026
var $belongsTo = array('User');
3034
var $hasMany = array(
3035
'TestPluginComment' => array(
3036
'className' => 'TestPlugin.TestPluginComment',
3037
'foreignKey' => 'article_id',
3044
* TestPluginComment class
3047
* @subpackage cake.tests.cases.libs.model
3049
class TestPluginComment extends CakeTestModel {
3054
* @var string 'TestPluginComment'
3057
var $name = 'TestPluginComment';
3060
* belongsTo property
3065
var $belongsTo = array(
3066
'TestPluginArticle' => array(
3067
'className' => 'TestPlugin.TestPluginArticle',
3068
'foreignKey' => 'article_id',
3075
* Uuidportfolio class
3078
* @subpackage cake.tests.cases.libs.model
3080
class Uuidportfolio extends CakeTestModel {
3085
* @var string 'Uuidportfolio'
3088
var $name = 'Uuidportfolio';
3091
* hasAndBelongsToMany property
3096
var $hasAndBelongsToMany = array('Uuiditem');
3103
* @subpackage cake.tests.cases.libs.model
3105
class Uuiditem extends CakeTestModel {
3110
* @var string 'Item'
3113
var $name = 'Uuiditem';
3116
* hasAndBelongsToMany property
3121
var $hasAndBelongsToMany = array('Uuidportfolio' => array('with' => 'UuiditemsUuidportfolioNumericid'));
3126
* UuiditemsPortfolio class
3129
* @subpackage cake.tests.cases.libs.model
3131
class UuiditemsUuidportfolio extends CakeTestModel {
3136
* @var string 'ItemsPortfolio'
3139
var $name = 'UuiditemsUuidportfolio';
3143
* UuiditemsPortfolioNumericid class
3146
* @subpackage cake.tests.cases.libs.model
3148
class UuiditemsUuidportfolioNumericid extends CakeTestModel {
3156
var $name = 'UuiditemsUuidportfolioNumericid';
3160
* TranslateTestModel class.
3163
* @subpackage cake.tests.cases.libs.model
3165
class TranslateTestModel extends CakeTestModel {
3170
* @var string 'TranslateTestModel'
3173
var $name = 'TranslateTestModel';
3178
* @var string 'i18n'
3181
var $useTable = 'i18n';
3184
* displayField property
3186
* @var string 'field'
3189
var $displayField = 'field';
3193
* TranslateTestModel class.
3196
* @subpackage cake.tests.cases.libs.model
3198
class TranslateWithPrefix extends CakeTestModel {
3202
* @var string 'TranslateTestModel'
3205
var $name = 'TranslateWithPrefix';
3207
* tablePrefix property
3209
* @var string 'i18n'
3212
var $tablePrefix = 'i18n_';
3214
* displayField property
3216
* @var string 'field'
3219
var $displayField = 'field';
3222
* TranslatedItem class.
3225
* @subpackage cake.tests.cases.libs.model
3227
class TranslatedItem extends CakeTestModel {
3232
* @var string 'TranslatedItem'
3235
var $name = 'TranslatedItem';
3238
* cacheQueries property
3243
var $cacheQueries = false;
3251
var $actsAs = array('Translate' => array('content', 'title'));
3254
* translateModel property
3256
* @var string 'TranslateTestModel'
3259
var $translateModel = 'TranslateTestModel';
3263
* TranslatedItem class.
3266
* @subpackage cake.tests.cases.libs.model
3268
class TranslatedItem2 extends CakeTestModel {
3272
* @var string 'TranslatedItem'
3275
var $name = 'TranslatedItem';
3277
* cacheQueries property
3282
var $cacheQueries = false;
3289
var $actsAs = array('Translate' => array('content', 'title'));
3291
* translateModel property
3293
* @var string 'TranslateTestModel'
3296
var $translateModel = 'TranslateWithPrefix';
3299
* TranslatedItemWithTable class.
3302
* @subpackage cake.tests.cases.libs.model
3304
class TranslatedItemWithTable extends CakeTestModel {
3309
* @var string 'TranslatedItemWithTable'
3312
var $name = 'TranslatedItemWithTable';
3317
* @var string 'translated_items'
3320
var $useTable = 'translated_items';
3323
* cacheQueries property
3328
var $cacheQueries = false;
3336
var $actsAs = array('Translate' => array('content', 'title'));
3339
* translateModel property
3341
* @var string 'TranslateTestModel'
3344
var $translateModel = 'TranslateTestModel';
3347
* translateTable property
3349
* @var string 'another_i18n'
3352
var $translateTable = 'another_i18n';
3356
* TranslateArticleModel class.
3359
* @subpackage cake.tests.cases.libs.model
3361
class TranslateArticleModel extends CakeTestModel {
3366
* @var string 'TranslateArticleModel'
3369
var $name = 'TranslateArticleModel';
3374
* @var string 'article_i18n'
3377
var $useTable = 'article_i18n';
3380
* displayField property
3382
* @var string 'field'
3385
var $displayField = 'field';
3389
* TranslatedArticle class.
3392
* @subpackage cake.tests.cases.libs.model
3394
class TranslatedArticle extends CakeTestModel {
3399
* @var string 'TranslatedArticle'
3402
var $name = 'TranslatedArticle';
3405
* cacheQueries property
3410
var $cacheQueries = false;
3418
var $actsAs = array('Translate' => array('title', 'body'));
3421
* translateModel property
3423
* @var string 'TranslateArticleModel'
3426
var $translateModel = 'TranslateArticleModel';
3429
* belongsTo property
3434
var $belongsTo = array('User');
3437
class CounterCacheUser extends CakeTestModel {
3438
var $name = 'CounterCacheUser';
3439
var $alias = 'User';
3441
var $hasMany = array('Post' => array(
3442
'className' => 'CounterCachePost',
3443
'foreignKey' => 'user_id'
3447
class CounterCachePost extends CakeTestModel {
3448
var $name = 'CounterCachePost';
3449
var $alias = 'Post';
3451
var $belongsTo = array('User' => array(
3452
'className' => 'CounterCacheUser',
3453
'foreignKey' => 'user_id',
3454
'counterCache' => true
3458
class CounterCacheUserNonstandardPrimaryKey extends CakeTestModel {
3459
var $name = 'CounterCacheUserNonstandardPrimaryKey';
3460
var $alias = 'User';
3461
var $primaryKey = 'uid';
3463
var $hasMany = array('Post' => array(
3464
'className' => 'CounterCachePostNonstandardPrimaryKey',
3465
'foreignKey' => 'uid'
3469
class CounterCachePostNonstandardPrimaryKey extends CakeTestModel {
3470
var $name = 'CounterCachePostNonstandardPrimaryKey';
3471
var $alias = 'Post';
3472
var $primaryKey = 'pid';
3474
var $belongsTo = array('User' => array(
3475
'className' => 'CounterCacheUserNonstandardPrimaryKey',
3476
'foreignKey' => 'uid',
3477
'counterCache' => true
3481
class ArticleB extends CakeTestModel {
3482
var $name = 'ArticleB';
3483
var $useTable = 'articles';
3484
var $hasAndBelongsToMany = array(
3486
'className' => 'TagB',
3487
'joinTable' => 'articles_tags',
3488
'foreignKey' => 'article_id',
3489
'associationForeignKey' => 'tag_id'
3494
class TagB extends CakeTestModel {
3496
var $useTable = 'tags';
3497
var $hasAndBelongsToMany = array(
3498
'ArticleB' => array(
3499
'className' => 'ArticleB',
3500
'joinTable' => 'articles_tags',
3501
'foreignKey' => 'tag_id',
3502
'associationForeignKey' => 'article_id'
3507
class Fruit extends CakeTestModel {
3508
var $name = 'Fruit';
3509
var $hasAndBelongsToMany = array(
3511
'className' => 'UuidTag',
3512
'joinTable' => 'fruits_uuid_tags',
3513
'foreignKey' => 'fruit_id',
3514
'associationForeignKey' => 'uuid_tag_id',
3515
'with' => 'FruitsUuidTag'
3520
class FruitsUuidTag extends CakeTestModel {
3521
var $name = 'FruitsUuidTag';
3522
var $primaryKey = false;
3523
var $belongsTo = array(
3525
'className' => 'UuidTag',
3526
'foreignKey' => 'uuid_tag_id',
3529
'className' => 'Fruit',
3530
'foreignKey' => 'fruit_id',
3535
class UuidTag extends CakeTestModel {
3536
var $name = 'UuidTag';
3537
var $hasAndBelongsToMany = array(
3539
'className' => 'Fruit',
3540
'joinTable' => 'fruits_uuid_tags',
3541
'foreign_key' => 'uuid_tag_id',
3542
'associationForeignKey' => 'fruit_id',
3543
'with' => 'FruitsUuidTag'
3548
class FruitNoWith extends CakeTestModel {
3549
var $name = 'Fruit';
3550
var $useTable = 'fruits';
3551
var $hasAndBelongsToMany = array(
3553
'className' => 'UuidTagNoWith',
3554
'joinTable' => 'fruits_uuid_tags',
3555
'foreignKey' => 'fruit_id',
3556
'associationForeignKey' => 'uuid_tag_id',
3560
class UuidTagNoWith extends CakeTestModel {
3561
var $name = 'UuidTag';
3562
var $useTable = 'uuid_tags';
3563
var $hasAndBelongsToMany = array(
3565
'className' => 'FruitNoWith',
3566
'joinTable' => 'fruits_uuid_tags',
3567
'foreign_key' => 'uuid_tag_id',
3568
'associationForeignKey' => 'fruit_id',
3573
class ProductUpdateAll extends CakeTestModel {
3574
var $name = 'ProductUpdateAll';
3575
var $useTable = 'product_update_all';
3579
class GroupUpdateAll extends CakeTestModel {
3580
var $name = 'GroupUpdateAll';
3581
var $useTable = 'group_update_all';