PageRenderTime 52ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 1ms

/lib/Cake/Test/Case/Model/Behavior/ContainableBehaviorTest.php

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

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