PageRenderTime 62ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 1ms

/cake/tests/cases/libs/model/behaviors/containable.test.php

http://github.com/Datawalke/Coordino
PHP | 3795 lines | 3397 code | 169 blank | 229 comment | 15 complexity | e6a9e5631e6c781c73bc17e71560c3e1 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * ContainableBehaviorTest file
  4. *
  5. * PHP versions 4 and 5
  6. *
  7. * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
  8. * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
  9. *
  10. * Licensed under The Open Group Test Suite License
  11. * Redistributions of files must retain the above copyright notice.
  12. *
  13. * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
  14. * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
  15. * @package cake
  16. * @subpackage cake.tests.cases.libs.model.behaviors
  17. * @since CakePHP(tm) v 1.2.0.5669
  18. * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
  19. */
  20. App::import('Core', array('AppModel', 'Model'));
  21. require_once(dirname(dirname(__FILE__)) . DS . 'models.php');
  22. /**
  23. * ContainableTest class
  24. *
  25. * @package cake
  26. * @subpackage cake.tests.cases.libs.model.behaviors
  27. */
  28. class ContainableBehaviorTest extends CakeTestCase {
  29. /**
  30. * Fixtures associated with this test case
  31. *
  32. * @var array
  33. * @access public
  34. */
  35. var $fixtures = array(
  36. 'core.article', 'core.article_featured', 'core.article_featureds_tags', 'core.articles_tag', 'core.attachment', 'core.category',
  37. 'core.comment', 'core.featured', 'core.tag', 'core.user', 'core.join_a', 'core.join_b', 'core.join_c', 'core.join_a_c', 'core.join_a_b'
  38. );
  39. /**
  40. * Method executed before each test
  41. *
  42. * @access public
  43. */
  44. function startTest() {
  45. $this->User =& ClassRegistry::init('User');
  46. $this->Article =& ClassRegistry::init('Article');
  47. $this->Tag =& ClassRegistry::init('Tag');
  48. $this->User->bindModel(array(
  49. 'hasMany' => array('Article', 'ArticleFeatured', 'Comment')
  50. ), false);
  51. $this->User->ArticleFeatured->unbindModel(array('belongsTo' => array('Category')), false);
  52. $this->User->ArticleFeatured->hasMany['Comment']['foreignKey'] = 'article_id';
  53. $this->Tag->bindModel(array(
  54. 'hasAndBelongsToMany' => array('Article')
  55. ), false);
  56. $this->User->Behaviors->attach('Containable');
  57. $this->Article->Behaviors->attach('Containable');
  58. $this->Tag->Behaviors->attach('Containable');
  59. }
  60. /**
  61. * Method executed after each test
  62. *
  63. * @access public
  64. */
  65. function endTest() {
  66. unset($this->Article);
  67. unset($this->User);
  68. unset($this->Tag);
  69. ClassRegistry::flush();
  70. }
  71. /**
  72. * testContainments method
  73. *
  74. * @access public
  75. * @return void
  76. */
  77. function testContainments() {
  78. $r = $this->__containments($this->Article, array('Comment' => array('conditions' => array('Comment.user_id' => 2))));
  79. $this->assertTrue(Set::matches('/Article/keep/Comment/conditions[Comment.user_id=2]', $r));
  80. $r = $this->__containments($this->User, array(
  81. 'ArticleFeatured' => array(
  82. 'Featured' => array(
  83. 'id',
  84. 'Category' => 'name'
  85. )
  86. )));
  87. $this->assertEqual(Set::extract('/ArticleFeatured/keep/Featured/fields', $r), array('id'));
  88. $r = $this->__containments($this->Article, array(
  89. 'Comment' => array(
  90. 'User',
  91. 'conditions' => array('Comment' => array('user_id' => 2)),
  92. ),
  93. ));
  94. $this->assertTrue(Set::matches('/User', $r));
  95. $this->assertTrue(Set::matches('/Comment', $r));
  96. $this->assertTrue(Set::matches('/Article/keep/Comment/conditions/Comment[user_id=2]', $r));
  97. $r = $this->__containments($this->Article, array('Comment(comment, published)' => 'Attachment(attachment)', 'User(user)'));
  98. $this->assertTrue(Set::matches('/Comment', $r));
  99. $this->assertTrue(Set::matches('/User', $r));
  100. $this->assertTrue(Set::matches('/Article/keep/Comment', $r));
  101. $this->assertTrue(Set::matches('/Article/keep/User', $r));
  102. $this->assertEqual(Set::extract('/Article/keep/Comment/fields', $r), array('comment', 'published'));
  103. $this->assertEqual(Set::extract('/Article/keep/User/fields', $r), array('user'));
  104. $this->assertTrue(Set::matches('/Comment/keep/Attachment', $r));
  105. $this->assertEqual(Set::extract('/Comment/keep/Attachment/fields', $r), array('attachment'));
  106. $r = $this->__containments($this->Article, array('Comment' => array('limit' => 1)));
  107. $this->assertEqual(array_keys($r), array('Comment', 'Article'));
  108. $this->assertEqual(array_shift(Set::extract('/Comment/keep', $r)), array('keep' => array()));
  109. $this->assertTrue(Set::matches('/Article/keep/Comment', $r));
  110. $this->assertEqual(array_shift(Set::extract('/Article/keep/Comment/.', $r)), array('limit' => 1));
  111. $r = $this->__containments($this->Article, array('Comment.User'));
  112. $this->assertEqual(array_keys($r), array('User', 'Comment', 'Article'));
  113. $this->assertEqual(array_shift(Set::extract('/User/keep', $r)), array('keep' => array()));
  114. $this->assertEqual(array_shift(Set::extract('/Comment/keep', $r)), array('keep' => array('User' => array())));
  115. $this->assertEqual(array_shift(Set::extract('/Article/keep', $r)), array('keep' => array('Comment' => array())));
  116. $r = $this->__containments($this->Tag, array('Article' => array('User' => array('Comment' => array(
  117. 'Attachment' => array('conditions' => array('Attachment.id >' => 1))
  118. )))));
  119. $this->assertTrue(Set::matches('/Attachment', $r));
  120. $this->assertTrue(Set::matches('/Comment/keep/Attachment/conditions', $r));
  121. $this->assertEqual($r['Comment']['keep']['Attachment']['conditions'], array('Attachment.id >' => 1));
  122. $this->assertTrue(Set::matches('/User/keep/Comment', $r));
  123. $this->assertTrue(Set::matches('/Article/keep/User', $r));
  124. $this->assertTrue(Set::matches('/Tag/keep/Article', $r));
  125. }
  126. /**
  127. * testInvalidContainments method
  128. *
  129. * @access public
  130. * @return void
  131. */
  132. function testInvalidContainments() {
  133. $this->expectError();
  134. $r = $this->__containments($this->Article, array('Comment', 'InvalidBinding'));
  135. $this->Article->Behaviors->attach('Containable', array('notices' => false));
  136. $r = $this->__containments($this->Article, array('Comment', 'InvalidBinding'));
  137. }
  138. /**
  139. * testBeforeFind method
  140. *
  141. * @access public
  142. * @return void
  143. */
  144. function testBeforeFind() {
  145. $r = $this->Article->find('all', array('contain' => array('Comment')));
  146. $this->assertFalse(Set::matches('/User', $r));
  147. $this->assertTrue(Set::matches('/Comment', $r));
  148. $this->assertFalse(Set::matches('/Comment/User', $r));
  149. $r = $this->Article->find('all', array('contain' => 'Comment.User'));
  150. $this->assertTrue(Set::matches('/Comment/User', $r));
  151. $this->assertFalse(Set::matches('/Comment/Article', $r));
  152. $r = $this->Article->find('all', array('contain' => array('Comment' => array('User', 'Article'))));
  153. $this->assertTrue(Set::matches('/Comment/User', $r));
  154. $this->assertTrue(Set::matches('/Comment/Article', $r));
  155. $r = $this->Article->find('all', array('contain' => array('Comment' => array('conditions' => array('Comment.user_id' => 2)))));
  156. $this->assertFalse(Set::matches('/Comment[user_id!=2]', $r));
  157. $this->assertTrue(Set::matches('/Comment[user_id=2]', $r));
  158. $r = $this->Article->find('all', array('contain' => array('Comment.user_id = 2')));
  159. $this->assertFalse(Set::matches('/Comment[user_id!=2]', $r));
  160. $r = $this->Article->find('all', array('contain' => 'Comment.id DESC'));
  161. $ids = $descIds = Set::extract('/Comment[1]/id', $r);
  162. rsort($descIds);
  163. $this->assertEqual($ids, $descIds);
  164. $r = $this->Article->find('all', array('contain' => 'Comment'));
  165. $this->assertTrue(Set::matches('/Comment[user_id!=2]', $r));
  166. $r = $this->Article->find('all', array('contain' => array('Comment' => array('fields' => 'comment'))));
  167. $this->assertFalse(Set::matches('/Comment/created', $r));
  168. $this->assertTrue(Set::matches('/Comment/comment', $r));
  169. $this->assertFalse(Set::matches('/Comment/updated', $r));
  170. $r = $this->Article->find('all', array('contain' => array('Comment' => array('fields' => array('comment', 'updated')))));
  171. $this->assertFalse(Set::matches('/Comment/created', $r));
  172. $this->assertTrue(Set::matches('/Comment/comment', $r));
  173. $this->assertTrue(Set::matches('/Comment/updated', $r));
  174. $r = $this->Article->find('all', array('contain' => array('Comment' => array('comment', 'updated'))));
  175. $this->assertFalse(Set::matches('/Comment/created', $r));
  176. $this->assertTrue(Set::matches('/Comment/comment', $r));
  177. $this->assertTrue(Set::matches('/Comment/updated', $r));
  178. $r = $this->Article->find('all', array('contain' => array('Comment(comment,updated)')));
  179. $this->assertFalse(Set::matches('/Comment/created', $r));
  180. $this->assertTrue(Set::matches('/Comment/comment', $r));
  181. $this->assertTrue(Set::matches('/Comment/updated', $r));
  182. $r = $this->Article->find('all', array('contain' => 'Comment.created'));
  183. $this->assertTrue(Set::matches('/Comment/created', $r));
  184. $this->assertFalse(Set::matches('/Comment/comment', $r));
  185. $r = $this->Article->find('all', array('contain' => array('User.Article(title)', 'Comment(comment)')));
  186. $this->assertFalse(Set::matches('/Comment/Article', $r));
  187. $this->assertFalse(Set::matches('/Comment/User', $r));
  188. $this->assertTrue(Set::matches('/Comment/comment', $r));
  189. $this->assertFalse(Set::matches('/Comment/created', $r));
  190. $this->assertTrue(Set::matches('/User/Article/title', $r));
  191. $this->assertFalse(Set::matches('/User/Article/created', $r));
  192. $r = $this->Article->find('all', array('contain' => array()));
  193. $this->assertFalse(Set::matches('/User', $r));
  194. $this->assertFalse(Set::matches('/Comment', $r));
  195. $this->expectError();
  196. $r = $this->Article->find('all', array('contain' => array('Comment' => 'NonExistingBinding')));
  197. }
  198. /**
  199. * testContain method
  200. *
  201. * @access public
  202. * @return void
  203. */
  204. function testContain() {
  205. $this->Article->contain('Comment.User');
  206. $r = $this->Article->find('all');
  207. $this->assertTrue(Set::matches('/Comment/User', $r));
  208. $this->assertFalse(Set::matches('/Comment/Article', $r));
  209. $r = $this->Article->find('all');
  210. $this->assertFalse(Set::matches('/Comment/User', $r));
  211. }
  212. /**
  213. * Test that mixing contain() and the contain find option.
  214. *
  215. * @access public
  216. * @return void
  217. */
  218. function testContainAndContainOption() {
  219. $this->Article->contain();
  220. $r = $this->Article->find('all', array(
  221. 'contain' => array('Comment')
  222. ));
  223. $this->assertTrue(isset($r[0]['Comment']), 'No comment returned');
  224. }
  225. /**
  226. * testFindEmbeddedNoBindings method
  227. *
  228. * @access public
  229. * @return void
  230. */
  231. function testFindEmbeddedNoBindings() {
  232. $result = $this->Article->find('all', array('contain' => false));
  233. $expected = array(
  234. array('Article' => array(
  235. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  236. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  237. )),
  238. array('Article' => array(
  239. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  240. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  241. )),
  242. array('Article' => array(
  243. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  244. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  245. ))
  246. );
  247. $this->assertEqual($result, $expected);
  248. }
  249. /**
  250. * testFindFirstLevel method
  251. *
  252. * @access public
  253. * @return void
  254. */
  255. function testFindFirstLevel() {
  256. $this->Article->contain('User');
  257. $result = $this->Article->find('all', array('recursive' => 1));
  258. $expected = array(
  259. array(
  260. 'Article' => array(
  261. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  262. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  263. ),
  264. 'User' => array(
  265. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  266. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  267. )
  268. ),
  269. array(
  270. 'Article' => array(
  271. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  272. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  273. ),
  274. 'User' => array(
  275. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  276. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31'
  277. )
  278. ),
  279. array(
  280. 'Article' => array(
  281. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  282. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  283. ),
  284. 'User' => array(
  285. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  286. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  287. )
  288. )
  289. );
  290. $this->assertEqual($result, $expected);
  291. $this->Article->contain('User', 'Comment');
  292. $result = $this->Article->find('all', array('recursive' => 1));
  293. $expected = array(
  294. array(
  295. 'Article' => array(
  296. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  297. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  298. ),
  299. 'User' => array(
  300. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  301. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  302. ),
  303. 'Comment' => array(
  304. array(
  305. 'id' => 1, 'article_id' => 1, 'user_id' => 2, 'comment' => 'First Comment for First Article',
  306. 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31'
  307. ),
  308. array(
  309. 'id' => 2, 'article_id' => 1, 'user_id' => 4, 'comment' => 'Second Comment for First Article',
  310. 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31'
  311. ),
  312. array(
  313. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  314. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31'
  315. ),
  316. array(
  317. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  318. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  319. )
  320. )
  321. ),
  322. array(
  323. 'Article' => array(
  324. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  325. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  326. ),
  327. 'User' => array(
  328. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  329. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31'
  330. ),
  331. 'Comment' => array(
  332. array(
  333. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  334. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'
  335. ),
  336. array(
  337. 'id' => 6, 'article_id' => 2, 'user_id' => 2, 'comment' => 'Second Comment for Second Article',
  338. 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31'
  339. )
  340. )
  341. ),
  342. array(
  343. 'Article' => array(
  344. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  345. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  346. ),
  347. 'User' => array(
  348. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  349. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  350. ),
  351. 'Comment' => array()
  352. )
  353. );
  354. $this->assertEqual($result, $expected);
  355. }
  356. /**
  357. * testFindEmbeddedFirstLevel method
  358. *
  359. * @access public
  360. * @return void
  361. */
  362. function testFindEmbeddedFirstLevel() {
  363. $result = $this->Article->find('all', array('contain' => array('User')));
  364. $expected = array(
  365. array(
  366. 'Article' => array(
  367. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  368. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  369. ),
  370. 'User' => array(
  371. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  372. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  373. )
  374. ),
  375. array(
  376. 'Article' => array(
  377. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  378. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  379. ),
  380. 'User' => array(
  381. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  382. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31'
  383. )
  384. ),
  385. array(
  386. 'Article' => array(
  387. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  388. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  389. ),
  390. 'User' => array(
  391. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  392. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  393. )
  394. )
  395. );
  396. $this->assertEqual($result, $expected);
  397. $result = $this->Article->find('all', array('contain' => array('User', 'Comment')));
  398. $expected = array(
  399. array(
  400. 'Article' => array(
  401. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  402. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  403. ),
  404. 'User' => array(
  405. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  406. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  407. ),
  408. 'Comment' => array(
  409. array(
  410. 'id' => 1, 'article_id' => 1, 'user_id' => 2, 'comment' => 'First Comment for First Article',
  411. 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31'
  412. ),
  413. array(
  414. 'id' => 2, 'article_id' => 1, 'user_id' => 4, 'comment' => 'Second Comment for First Article',
  415. 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31'
  416. ),
  417. array(
  418. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  419. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31'
  420. ),
  421. array(
  422. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  423. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  424. )
  425. )
  426. ),
  427. array(
  428. 'Article' => array(
  429. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  430. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  431. ),
  432. 'User' => array(
  433. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  434. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31'
  435. ),
  436. 'Comment' => array(
  437. array(
  438. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  439. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'
  440. ),
  441. array(
  442. 'id' => 6, 'article_id' => 2, 'user_id' => 2, 'comment' => 'Second Comment for Second Article',
  443. 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31'
  444. )
  445. )
  446. ),
  447. array(
  448. 'Article' => array(
  449. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  450. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  451. ),
  452. 'User' => array(
  453. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  454. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  455. ),
  456. 'Comment' => array()
  457. )
  458. );
  459. $this->assertEqual($result, $expected);
  460. }
  461. /**
  462. * testFindSecondLevel method
  463. *
  464. * @access public
  465. * @return void
  466. */
  467. function testFindSecondLevel() {
  468. $this->Article->contain(array('Comment' => 'User'));
  469. $result = $this->Article->find('all', array('recursive' => 2));
  470. $expected = array(
  471. array(
  472. 'Article' => array(
  473. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  474. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  475. ),
  476. 'Comment' => array(
  477. array(
  478. 'id' => 1, 'article_id' => 1, 'user_id' => 2, 'comment' => 'First Comment for First Article',
  479. 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31',
  480. 'User' => array(
  481. 'id' => 2, 'user' => 'nate', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  482. 'created' => '2007-03-17 01:18:23', 'updated' => '2007-03-17 01:20:31'
  483. )
  484. ),
  485. array(
  486. 'id' => 2, 'article_id' => 1, 'user_id' => 4, 'comment' => 'Second Comment for First Article',
  487. 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31',
  488. 'User' => array(
  489. 'id' => 4, 'user' => 'garrett', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  490. 'created' => '2007-03-17 01:22:23', 'updated' => '2007-03-17 01:24:31'
  491. )
  492. ),
  493. array(
  494. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  495. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31',
  496. 'User' => array(
  497. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  498. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  499. )
  500. ),
  501. array(
  502. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  503. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31',
  504. 'User' => array(
  505. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  506. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  507. )
  508. )
  509. )
  510. ),
  511. array(
  512. 'Article' => array(
  513. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  514. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  515. ),
  516. 'Comment' => array(
  517. array(
  518. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  519. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31',
  520. 'User' => array(
  521. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  522. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  523. )
  524. ),
  525. array(
  526. 'id' => 6, 'article_id' => 2, 'user_id' => 2, 'comment' => 'Second Comment for Second Article',
  527. 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31',
  528. 'User' => array(
  529. 'id' => 2, 'user' => 'nate', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  530. 'created' => '2007-03-17 01:18:23', 'updated' => '2007-03-17 01:20:31'
  531. )
  532. )
  533. )
  534. ),
  535. array(
  536. 'Article' => array(
  537. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  538. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  539. ),
  540. 'Comment' => array()
  541. )
  542. );
  543. $this->assertEqual($result, $expected);
  544. $this->Article->contain(array('User' => 'ArticleFeatured'));
  545. $result = $this->Article->find('all', array('recursive' => 2));
  546. $expected = array(
  547. array(
  548. 'Article' => array(
  549. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  550. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  551. ),
  552. 'User' => array(
  553. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  554. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  555. 'ArticleFeatured' => array(
  556. array(
  557. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  558. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  559. ),
  560. array(
  561. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  562. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  563. )
  564. )
  565. )
  566. ),
  567. array(
  568. 'Article' => array(
  569. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  570. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  571. ),
  572. 'User' => array(
  573. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  574. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31',
  575. 'ArticleFeatured' => array(
  576. array(
  577. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  578. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  579. )
  580. )
  581. )
  582. ),
  583. array(
  584. 'Article' => array(
  585. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  586. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  587. ),
  588. 'User' => array(
  589. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  590. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  591. 'ArticleFeatured' => array(
  592. array(
  593. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  594. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  595. ),
  596. array(
  597. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  598. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  599. )
  600. )
  601. )
  602. )
  603. );
  604. $this->assertEqual($result, $expected);
  605. $this->Article->contain(array('User' => array('ArticleFeatured', 'Comment')));
  606. $result = $this->Article->find('all', array('recursive' => 2));
  607. $expected = array(
  608. array(
  609. 'Article' => array(
  610. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  611. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  612. ),
  613. 'User' => array(
  614. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  615. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  616. 'ArticleFeatured' => array(
  617. array(
  618. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  619. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  620. ),
  621. array(
  622. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  623. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  624. )
  625. ),
  626. 'Comment' => array(
  627. array(
  628. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  629. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31'
  630. ),
  631. array(
  632. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  633. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  634. ),
  635. array(
  636. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  637. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'
  638. )
  639. )
  640. )
  641. ),
  642. array(
  643. 'Article' => array(
  644. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  645. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  646. ),
  647. 'User' => array(
  648. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  649. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31',
  650. 'ArticleFeatured' => array(
  651. array(
  652. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  653. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  654. )
  655. ),
  656. 'Comment' => array()
  657. )
  658. ),
  659. array(
  660. 'Article' => array(
  661. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  662. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  663. ),
  664. 'User' => array(
  665. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  666. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  667. 'ArticleFeatured' => array(
  668. array(
  669. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  670. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  671. ),
  672. array(
  673. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  674. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  675. )
  676. ),
  677. 'Comment' => array(
  678. array(
  679. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  680. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31'
  681. ),
  682. array(
  683. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  684. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  685. ),
  686. array(
  687. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  688. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'
  689. )
  690. )
  691. )
  692. )
  693. );
  694. $this->assertEqual($result, $expected);
  695. $this->Article->contain(array('User' => array('ArticleFeatured')), 'Tag', array('Comment' => 'Attachment'));
  696. $result = $this->Article->find('all', array('recursive' => 2));
  697. $expected = array(
  698. array(
  699. 'Article' => array(
  700. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  701. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  702. ),
  703. 'User' => array(
  704. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  705. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  706. 'ArticleFeatured' => array(
  707. array(
  708. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  709. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  710. ),
  711. array(
  712. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  713. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  714. )
  715. )
  716. ),
  717. 'Comment' => array(
  718. array(
  719. 'id' => 1, 'article_id' => 1, 'user_id' => 2, 'comment' => 'First Comment for First Article',
  720. 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31',
  721. 'Attachment' => array()
  722. ),
  723. array(
  724. 'id' => 2, 'article_id' => 1, 'user_id' => 4, 'comment' => 'Second Comment for First Article',
  725. 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31',
  726. 'Attachment' => array()
  727. ),
  728. array(
  729. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  730. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31',
  731. 'Attachment' => array()
  732. ),
  733. array(
  734. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  735. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31',
  736. 'Attachment' => array()
  737. )
  738. ),
  739. 'Tag' => array(
  740. array('id' => 1, 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'),
  741. array('id' => 2, 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31')
  742. )
  743. ),
  744. array(
  745. 'Article' => array(
  746. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  747. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  748. ),
  749. 'User' => array(
  750. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  751. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31',
  752. 'ArticleFeatured' => array(
  753. array(
  754. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  755. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  756. )
  757. )
  758. ),
  759. 'Comment' => array(
  760. array(
  761. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  762. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31',
  763. 'Attachment' => array(
  764. 'id' => 1, 'comment_id' => 5, 'attachment' => 'attachment.zip',
  765. 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  766. )
  767. ),
  768. array(
  769. 'id' => 6, 'article_id' => 2, 'user_id' => 2, 'comment' => 'Second Comment for Second Article',
  770. 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31',
  771. 'Attachment' => array()
  772. )
  773. ),
  774. 'Tag' => array(
  775. array('id' => 1, 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'),
  776. array('id' => 3, 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')
  777. )
  778. ),
  779. array(
  780. 'Article' => array(
  781. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  782. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  783. ),
  784. 'User' => array(
  785. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  786. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  787. 'ArticleFeatured' => array(
  788. array(
  789. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  790. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  791. ),
  792. array(
  793. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  794. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  795. )
  796. )
  797. ),
  798. 'Comment' => array(),
  799. 'Tag' => array()
  800. )
  801. );
  802. $this->assertEqual($result, $expected);
  803. }
  804. /**
  805. * testFindEmbeddedSecondLevel method
  806. *
  807. * @access public
  808. * @return void
  809. */
  810. function testFindEmbeddedSecondLevel() {
  811. $result = $this->Article->find('all', array('contain' => array('Comment' => 'User')));
  812. $expected = array(
  813. array(
  814. 'Article' => array(
  815. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  816. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  817. ),
  818. 'Comment' => array(
  819. array(
  820. 'id' => 1, 'article_id' => 1, 'user_id' => 2, 'comment' => 'First Comment for First Article',
  821. 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31',
  822. 'User' => array(
  823. 'id' => 2, 'user' => 'nate', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  824. 'created' => '2007-03-17 01:18:23', 'updated' => '2007-03-17 01:20:31'
  825. )
  826. ),
  827. array(
  828. 'id' => 2, 'article_id' => 1, 'user_id' => 4, 'comment' => 'Second Comment for First Article',
  829. 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31',
  830. 'User' => array(
  831. 'id' => 4, 'user' => 'garrett', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  832. 'created' => '2007-03-17 01:22:23', 'updated' => '2007-03-17 01:24:31'
  833. )
  834. ),
  835. array(
  836. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  837. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31',
  838. 'User' => array(
  839. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  840. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  841. )
  842. ),
  843. array(
  844. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  845. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31',
  846. 'User' => array(
  847. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  848. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  849. )
  850. )
  851. )
  852. ),
  853. array(
  854. 'Article' => array(
  855. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  856. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  857. ),
  858. 'Comment' => array(
  859. array(
  860. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  861. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31',
  862. 'User' => array(
  863. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  864. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31'
  865. )
  866. ),
  867. array(
  868. 'id' => 6, 'article_id' => 2, 'user_id' => 2, 'comment' => 'Second Comment for Second Article',
  869. 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31',
  870. 'User' => array(
  871. 'id' => 2, 'user' => 'nate', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  872. 'created' => '2007-03-17 01:18:23', 'updated' => '2007-03-17 01:20:31'
  873. )
  874. )
  875. )
  876. ),
  877. array(
  878. 'Article' => array(
  879. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  880. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  881. ),
  882. 'Comment' => array()
  883. )
  884. );
  885. $this->assertEqual($result, $expected);
  886. $result = $this->Article->find('all', array('contain' => array('User' => 'ArticleFeatured')));
  887. $expected = array(
  888. array(
  889. 'Article' => array(
  890. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  891. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  892. ),
  893. 'User' => array(
  894. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  895. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  896. 'ArticleFeatured' => array(
  897. array(
  898. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  899. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  900. ),
  901. array(
  902. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  903. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  904. )
  905. )
  906. )
  907. ),
  908. array(
  909. 'Article' => array(
  910. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  911. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  912. ),
  913. 'User' => array(
  914. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  915. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31',
  916. 'ArticleFeatured' => array(
  917. array(
  918. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  919. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  920. )
  921. )
  922. )
  923. ),
  924. array(
  925. 'Article' => array(
  926. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  927. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  928. ),
  929. 'User' => array(
  930. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  931. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  932. 'ArticleFeatured' => array(
  933. array(
  934. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  935. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  936. ),
  937. array(
  938. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  939. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  940. )
  941. )
  942. )
  943. )
  944. );
  945. $this->assertEqual($result, $expected);
  946. $result = $this->Article->find('all', array('contain' => array('User' => array('ArticleFeatured', 'Comment'))));
  947. $expected = array(
  948. array(
  949. 'Article' => array(
  950. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  951. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  952. ),
  953. 'User' => array(
  954. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  955. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  956. 'ArticleFeatured' => array(
  957. array(
  958. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  959. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  960. ),
  961. array(
  962. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  963. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  964. )
  965. ),
  966. 'Comment' => array(
  967. array(
  968. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  969. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31'
  970. ),
  971. array(
  972. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  973. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  974. ),
  975. array(
  976. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  977. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'
  978. )
  979. )
  980. )
  981. ),
  982. array(
  983. 'Article' => array(
  984. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  985. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  986. ),
  987. 'User' => array(
  988. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  989. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31',
  990. 'ArticleFeatured' => array(
  991. array(
  992. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  993. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  994. )
  995. ),
  996. 'Comment' => array()
  997. )
  998. ),
  999. array(
  1000. 'Article' => array(
  1001. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  1002. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  1003. ),
  1004. 'User' => array(
  1005. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  1006. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  1007. 'ArticleFeatured' => array(
  1008. array(
  1009. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  1010. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  1011. ),
  1012. array(
  1013. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  1014. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  1015. )
  1016. ),
  1017. 'Comment' => array(
  1018. array(
  1019. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  1020. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31'
  1021. ),
  1022. array(
  1023. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  1024. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  1025. ),
  1026. array(
  1027. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  1028. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31'
  1029. )
  1030. )
  1031. )
  1032. )
  1033. );
  1034. $this->assertEqual($result, $expected);
  1035. $result = $this->Article->find('all', array('contain' => array('User' => 'ArticleFeatured', 'Tag', 'Comment' => 'Attachment')));
  1036. $expected = array(
  1037. array(
  1038. 'Article' => array(
  1039. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  1040. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  1041. ),
  1042. 'User' => array(
  1043. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  1044. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  1045. 'ArticleFeatured' => array(
  1046. array(
  1047. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  1048. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'
  1049. ),
  1050. array(
  1051. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  1052. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  1053. )
  1054. )
  1055. ),
  1056. 'Comment' => array(
  1057. array(
  1058. 'id' => 1, 'article_id' => 1, 'user_id' => 2, 'comment' => 'First Comment for First Article',
  1059. 'published' => 'Y', 'created' => '2007-03-18 10:45:23', 'updated' => '2007-03-18 10:47:31',
  1060. 'Attachment' => array()
  1061. ),
  1062. array(
  1063. 'id' => 2, 'article_id' => 1, 'user_id' => 4, 'comment' => 'Second Comment for First Article',
  1064. 'published' => 'Y', 'created' => '2007-03-18 10:47:23', 'updated' => '2007-03-18 10:49:31',
  1065. 'Attachment' => array()
  1066. ),
  1067. array(
  1068. 'id' => 3, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Third Comment for First Article',
  1069. 'published' => 'Y', 'created' => '2007-03-18 10:49:23', 'updated' => '2007-03-18 10:51:31',
  1070. 'Attachment' => array()
  1071. ),
  1072. array(
  1073. 'id' => 4, 'article_id' => 1, 'user_id' => 1, 'comment' => 'Fourth Comment for First Article',
  1074. 'published' => 'N', 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31',
  1075. 'Attachment' => array()
  1076. )
  1077. ),
  1078. 'Tag' => array(
  1079. array('id' => 1, 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'),
  1080. array('id' => 2, 'tag' => 'tag2', 'created' => '2007-03-18 12:24:23', 'updated' => '2007-03-18 12:26:31')
  1081. )
  1082. ),
  1083. array(
  1084. 'Article' => array(
  1085. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  1086. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  1087. ),
  1088. 'User' => array(
  1089. 'id' => 3, 'user' => 'larry', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  1090. 'created' => '2007-03-17 01:20:23', 'updated' => '2007-03-17 01:22:31',
  1091. 'ArticleFeatured' => array(
  1092. array(
  1093. 'id' => 2, 'user_id' => 3, 'title' => 'Second Article', 'body' => 'Second Article Body',
  1094. 'published' => 'Y', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'
  1095. )
  1096. )
  1097. ),
  1098. 'Comment' => array(
  1099. array(
  1100. 'id' => 5, 'article_id' => 2, 'user_id' => 1, 'comment' => 'First Comment for Second Article',
  1101. 'published' => 'Y', 'created' => '2007-03-18 10:53:23', 'updated' => '2007-03-18 10:55:31',
  1102. 'Attachment' => array(
  1103. 'id' => 1, 'comment_id' => 5, 'attachment' => 'attachment.zip',
  1104. 'created' => '2007-03-18 10:51:23', 'updated' => '2007-03-18 10:53:31'
  1105. )
  1106. ),
  1107. array(
  1108. 'id' => 6, 'article_id' => 2, 'user_id' => 2, 'comment' => 'Second Comment for Second Article',
  1109. 'published' => 'Y', 'created' => '2007-03-18 10:55:23', 'updated' => '2007-03-18 10:57:31',
  1110. 'Attachment' => array()
  1111. )
  1112. ),
  1113. 'Tag' => array(
  1114. array('id' => 1, 'tag' => 'tag1', 'created' => '2007-03-18 12:22:23', 'updated' => '2007-03-18 12:24:31'),
  1115. array('id' => 3, 'tag' => 'tag3', 'created' => '2007-03-18 12:26:23', 'updated' => '2007-03-18 12:28:31')
  1116. )
  1117. ),
  1118. array(
  1119. 'Article' => array(
  1120. 'id' => 3, 'user_id' => 1, 'title' => 'Third Article', 'body' => 'Third Article Body',
  1121. 'published' => 'Y', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31'
  1122. ),
  1123. 'User' => array(
  1124. 'id' => 1, 'user' => 'mariano', 'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
  1125. 'created' => '2007-03-17 01:16:23', 'updated' => '2007-03-17 01:18:31',
  1126. 'ArticleFeatured' => array(
  1127. array(
  1128. 'id' => 1, 'user_id' => 1, 'title' => 'First Article', 'body' => 'First Article Body',
  1129. 'published' => 'Y', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 …

Large files files are truncated, but you can click here to view the full file