cakephp2-php8/lib/Cake/tests/cases/libs/model/model_read.test.php

7566 lines
194 KiB
PHP
Raw Normal View History

<?php
/**
* ModelReadTest file
*
* PHP 5
*
2010-05-19 01:15:13 +00:00
* CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
2010-01-26 19:18:20 +00:00
* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice
*
2010-01-26 19:18:20 +00:00
* @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
2010-05-19 01:15:13 +00:00
* @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
* @package cake.tests.cases.libs.model
* @since CakePHP(tm) v 1.2.0.4206
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
require_once dirname(__FILE__) . DS . 'model.test.php';
/**
* ModelReadTest
*
* @package cake.tests.cases.libs.model.operations
*/
class ModelReadTest extends BaseModelTest {
2009-07-26 09:59:51 +00:00
/**
* testFetchingNonUniqueFKJoinTableRecords()
*
* Tests if the results are properly returned in the case there are non-unique FK's
* in the join table but another fields value is different. For example:
* something_id | something_else_id | doomed = 1
* something_id | something_else_id | doomed = 0
* Should return both records and not just one.
*
* @access public
* @return void
*/
function testFetchingNonUniqueFKJoinTableRecords() {
$this->loadFixtures('Something', 'SomethingElse', 'JoinThing');
$Something = new Something();
$joinThingData = array(
'JoinThing' => array(
'something_id' => 1,
'something_else_id' => 2,
'doomed' => '0',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)
);
$Something->JoinThing->create($joinThingData);
$Something->JoinThing->save();
$result = $Something->JoinThing->find('all', array('conditions' => array('something_else_id' => 2)));
2010-06-05 03:37:29 +00:00
$this->assertEqual($result[0]['JoinThing']['doomed'], true);
$this->assertEqual($result[1]['JoinThing']['doomed'], false);
$result = $Something->find('first');
$this->assertEqual(count($result['SomethingElse']), 2);
$doomed = Set::extract('/JoinThing/doomed', $result['SomethingElse']);
$this->assertTrue(in_array(true, $doomed));
$this->assertTrue(in_array(false, $doomed));
}
2009-07-26 09:59:51 +00:00
/**
* testGroupBy method
*
* These tests will never pass with Postgres or Oracle as all fields in a select must be
* part of an aggregate function or in the GROUP BY statement.
*
* @access public
* @return void
*/
function testGroupBy() {
$db = ConnectionManager::getDataSource('test');
$isStrictGroupBy = $this->db instanceof Postgres || $this->db instanceof Sqlite || $this->db instanceof Oracle;
$message = 'Postgres and Oracle have strict GROUP BY and are incompatible with this test.';
if ($this->skipIf($isStrictGroupBy, $message )) {
return;
}
$this->loadFixtures('Project', 'Product', 'Thread', 'Message', 'Bid');
2010-06-05 03:37:29 +00:00
$Thread = new Thread();
$Product = new Product();
$result = $Thread->find('all', array(
'group' => 'Thread.project_id',
'order' => 'Thread.id ASC'
));
$expected = array(
array(
'Thread' => array(
'id' => 1,
'project_id' => 1,
'name' => 'Project 1, Thread 1'
),
'Project' => array(
'id' => 1,
'name' => 'Project 1'
),
'Message' => array(
array(
'id' => 1,
'thread_id' => 1,
'name' => 'Thread 1, Message 1'
))),
array(
'Thread' => array(
'id' => 3,
'project_id' => 2,
'name' => 'Project 2, Thread 1'
),
'Project' => array(
'id' => 2,
'name' => 'Project 2'
),
'Message' => array(
array(
'id' => 3,
'thread_id' => 3,
'name' => 'Thread 3, Message 1'
))));
$this->assertEqual($result, $expected);
$rows = $Thread->find('all', array(
'group' => 'Thread.project_id',
'fields' => array('Thread.project_id', 'COUNT(*) AS total')
));
$result = array();
foreach($rows as $row) {
$result[$row['Thread']['project_id']] = $row[0]['total'];
}
$expected = array(
1 => 2,
2 => 1
);
$this->assertEqual($result, $expected);
$rows = $Thread->find('all', array(
'group' => 'Thread.project_id',
'fields' => array('Thread.project_id', 'COUNT(*) AS total'),
'order'=> 'Thread.project_id'
));
$result = array();
foreach($rows as $row) {
$result[$row['Thread']['project_id']] = $row[0]['total'];
}
$expected = array(
1 => 2,
2 => 1
);
$this->assertEqual($result, $expected);
$result = $Thread->find('all', array(
'conditions' => array('Thread.project_id' => 1),
'group' => 'Thread.project_id'
));
$expected = array(
array(
'Thread' => array(
'id' => 1,
'project_id' => 1,
'name' => 'Project 1, Thread 1'
),
'Project' => array(
'id' => 1,
'name' => 'Project 1'
),
'Message' => array(
array(
'id' => 1,
'thread_id' => 1,
'name' => 'Thread 1, Message 1'
))));
$this->assertEqual($result, $expected);
$result = $Thread->find('all', array(
'conditions' => array('Thread.project_id' => 1),
'group' => 'Thread.project_id, Project.id'
));
$this->assertEqual($result, $expected);
$result = $Thread->find('all', array(
'conditions' => array('Thread.project_id' => 1),
'group' => 'project_id'
));
$this->assertEqual($result, $expected);
$result = $Thread->find('all', array(
'conditions' => array('Thread.project_id' => 1),
'group' => array('project_id')
));
$this->assertEqual($result, $expected);
$result = $Thread->find('all', array(
'conditions' => array('Thread.project_id' => 1),
'group' => array('project_id', 'Project.id')
));
$this->assertEqual($result, $expected);
$result = $Thread->find('all', array(
'conditions' => array('Thread.project_id' => 1),
'group' => array('Thread.project_id', 'Project.id')
));
$this->assertEqual($result, $expected);
$expected = array(
array('Product' => array('type' => 'Clothing'), array('price' => 32)),
array('Product' => array('type' => 'Food'), array('price' => 9)),
array('Product' => array('type' => 'Music'), array( 'price' => 4)),
array('Product' => array('type' => 'Toy'), array('price' => 3))
);
$result = $Product->find('all',array(
2009-12-17 05:15:42 +00:00
'fields'=>array('Product.type', 'MIN(Product.price) as price'),
'group'=> 'Product.type',
'order' => 'Product.type ASC'
));
$this->assertEqual($result, $expected);
$result = $Product->find('all', array(
2009-12-17 05:15:42 +00:00
'fields'=>array('Product.type', 'MIN(Product.price) as price'),
'group'=> array('Product.type'),
'order' => 'Product.type ASC'));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testOldQuery method
*
* @access public
* @return void
*/
function testOldQuery() {
2010-06-05 03:37:29 +00:00
$this->loadFixtures('Article', 'User', 'Tag', 'ArticlesTag', 'Comment', 'Attachment');
$Article = new Article();
$query = 'SELECT title FROM ';
$query .= $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles') . '.id IN (1,2)';
$results = $Article->query($query);
$this->assertTrue(is_array($results));
$this->assertEqual(count($results), 2);
$query = 'SELECT title, body FROM ';
$query .= $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles') . '.id = 1';
$results = $Article->query($query, false);
2010-06-05 03:37:29 +00:00
$this->assertFalse($this->db->getQueryCache($query));
$this->assertTrue(is_array($results));
$query = 'SELECT title, id FROM ';
$query .= $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles');
$query .= '.published = ' . $this->db->value('Y');
$results = $Article->query($query, true);
2010-06-05 03:37:29 +00:00
$result = $this->db->getQueryCache($query);
$this->assertFalse(empty($result));
$this->assertTrue(is_array($results));
}
2009-07-26 09:59:51 +00:00
/**
* testPreparedQuery method
*
* @access public
* @return void
*/
function testPreparedQuery() {
2010-06-05 03:37:29 +00:00
$this->loadFixtures('Article', 'User', 'Tag', 'ArticlesTag');
$Article = new Article();
$query = 'SELECT title, published FROM ';
$query .= $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles');
$query .= '.id = ? AND ' . $this->db->fullTableName('articles') . '.published = ?';
$params = array(1, 'Y');
$result = $Article->query($query, $params);
$expected = array(
'0' => array(
$this->db->fullTableName('articles', false) => array(
'title' => 'First Article', 'published' => 'Y')
));
if (isset($result[0][0])) {
$expected[0][0] = $expected[0][$this->db->fullTableName('articles', false)];
unset($expected[0][$this->db->fullTableName('articles', false)]);
}
$this->assertEqual($result, $expected);
$result = $this->db->getQueryCache($query, $params);
2010-06-05 03:37:29 +00:00
$this->assertFalse(empty($result));
$query = 'SELECT id, created FROM ';
$query .= $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles') . '.title = ?';
$params = array('First Article');
$result = $Article->query($query, $params, false);
$this->assertTrue(is_array($result));
$this->assertTrue(
isset($result[0][$this->db->fullTableName('articles', false)])
|| isset($result[0][0])
);
$result = $this->db->getQueryCache($query, $params);
2010-06-05 03:37:29 +00:00
$this->assertTrue(empty($result));
$query = 'SELECT title FROM ';
$query .= $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles') . '.title LIKE ?';
$params = array('%First%');
$result = $Article->query($query, $params);
$this->assertTrue(is_array($result));
$this->assertTrue(
isset($result[0][$this->db->fullTableName('articles', false)]['title'])
|| isset($result[0][0]['title'])
);
//related to ticket #5035
$query = 'SELECT title FROM ';
$query .= $this->db->fullTableName('articles') . ' WHERE title = ? AND published = ?';
$params = array('First? Article', 'Y');
$Article->query($query, $params);
$result = $this->db->getQueryCache($query, $params);
2010-06-05 03:37:29 +00:00
$this->assertFalse($result === false);
}
2009-07-26 09:59:51 +00:00
/**
* testParameterMismatch method
*
* @access public
* @return void
*/
function testParameterMismatch() {
2010-06-05 03:37:29 +00:00
$this->loadFixtures('Article', 'User', 'Tag', 'ArticlesTag');
$Article = new Article();
$query = 'SELECT * FROM ' . $this->db->fullTableName('articles');
$query .= ' WHERE ' . $this->db->fullTableName('articles');
$query .= '.published = ? AND ' . $this->db->fullTableName('articles') . '.user_id = ?';
$params = array('Y');
$this->expectError();
ob_start();
$result = $Article->query($query, $params);
ob_end_clean();
$this->assertEqual($result, null);
}
2009-07-26 09:59:51 +00:00
/**
* testVeryStrangeUseCase method
*
* @access public
* @return void
*/
function testVeryStrangeUseCase() {
$message = "skipping SELECT * FROM ? WHERE ? = ? AND ? = ?; prepared query.";
$message .= " MSSQL is incompatible with this test.";
if ($this->skipIf($this->db instanceof Mssql, $message)) {
return;
}
2010-06-05 03:37:29 +00:00
$this->loadFixtures('Article', 'User', 'Tag', 'ArticlesTag');
$Article = new Article();
$query = 'SELECT * FROM ? WHERE ? = ? AND ? = ?';
$param = array(
$this->db->fullTableName('articles'),
$this->db->fullTableName('articles') . '.user_id', '3',
$this->db->fullTableName('articles') . '.published', 'Y'
);
$this->expectError();
ob_start();
$result = $Article->query($query, $param);
ob_end_clean();
}
2009-07-26 09:59:51 +00:00
/**
* testRecursiveUnbind method
*
* @access public
* @return void
*/
function testRecursiveUnbind() {
$this->loadFixtures('Apple', 'Sample');
2010-06-05 03:37:29 +00:00
$TestModel = new Apple();
$TestModel->recursive = 2;
$result = $TestModel->find('all');
$expected = array(
array(
'Apple' => array (
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' =>'',
'apple_id' => '',
'name' => ''
),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2',
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
)),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1'
)),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1',
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
)),
'Child' => array()
),
array(
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26', 'mytime' => '22:57:17'),
'Sample' => array('id' => 2, 'apple_id' => 2, 'name' => 'sample2'),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3',
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
)),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4',
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
)),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Sample' => array()
))),
array(
'Apple' => array(
'id' => 7,
'apple_id' => 6,
'color' =>
'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
),
'Child' => array()));
$this->assertEqual($result, $expected);
$result = $TestModel->Parent->unbindModel(array('hasOne' => array('Sample')));
$this->assertTrue($result);
$result = $TestModel->find('all');
$expected = array(
array(
'Apple' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' =>'',
'apple_id' => '',
'name' => ''
),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2',
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
)),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01', 'modified' =>
'2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1'
)),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1',
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
)),
'Child' => array()
),
array(
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3',
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
)),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4',
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
)),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))))),
array(
'Apple' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Sample' => array()
))),
array(
'Apple' => array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
),
'Child' => array()
));
$this->assertEqual($result, $expected);
$result = $TestModel->Parent->unbindModel(array('hasOne' => array('Sample')));
$this->assertTrue($result);
$result = $TestModel->unbindModel(array('hasMany' => array('Child')));
$this->assertTrue($result);
$result = $TestModel->find('all');
$expected = array(
array(
'Apple' => array (
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' =>'',
'apple_id' => '',
'name' => ''
)),
array(
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2',
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1',
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3',
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4',
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
)),
array(
'Apple' => array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
)));
$this->assertEqual($result, $expected);
$result = $TestModel->unbindModel(array('hasMany' => array('Child')));
$this->assertTrue($result);
$result = $TestModel->Sample->unbindModel(array('belongsTo' => array('Apple')));
$this->assertTrue($result);
$result = $TestModel->find('all');
$expected = array(
array(
'Apple' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' =>'',
'apple_id' => '',
'name' => ''
)),
array(
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
)),
array(
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1'
)),
array(
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3'
)),
array(
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4'
)),
array(
'Apple' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
)),
array(
'Apple' => array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Sample' => array(),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
)));
$this->assertEqual($result, $expected);
$result = $TestModel->Parent->unbindModel(array('belongsTo' => array('Parent')));
$this->assertTrue($result);
$result = $TestModel->unbindModel(array('hasMany' => array('Child')));
$this->assertTrue($result);
$result = $TestModel->find('all');
$expected = array(
array(
'Apple' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' =>'',
'apple_id' => '',
'name' => ''
)),
array(
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17',
'Sample' => array(),
'Child' => array(
array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2',
'Apple' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 1,
'apple_id' => 3,
'name' => 'sample1',
'Apple' => array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 2,
'apple_id' => 1,
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17',
'Sample' => array(
'id' => 2,
'apple_id' => 2,
'name' => 'sample2'
),
'Child' => array(
array(
'id' => 1,
'apple_id' => 2,
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => 3,
'apple_id' => 2,
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3',
'Apple' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' =>
'2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17',
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4'
),
'Child' => array(
array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => 4,
'apple_id' => 5,
'name' => 'sample4',
'Apple' => array(
'id' => 5,
'apple_id' => 5,
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'),
'Parent' => array(
'id' => 4,
'apple_id' => 2,
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17',
'Sample' => array(
'id' => 3,
'apple_id' => 4,
'name' => 'sample3'
),
'Child' => array(
array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
)),
array(
'Apple' => array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => 6,
'apple_id' => 4,
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17',
'Sample' => array(),
'Child' => array(
array(
'id' => 7,
'apple_id' => 6,
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25', 'modified' =>
'2006-12-25 05:34:21',
'mytime' => '22:57:17'
))),
'Sample' => array(
'id' => '',
'apple_id' => '',
'name' => ''
)));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testSelfAssociationAfterFind method
*
* @access public
* @return void
*/
function testSelfAssociationAfterFind() {
$this->loadFixtures('Apple');
$afterFindModel = new NodeAfterFind();
$afterFindModel->recursive = 3;
$afterFindData = $afterFindModel->find('all');
$duplicateModel = new NodeAfterFind();
$duplicateModel->recursive = 3;
$duplicateModelData = $duplicateModel->find('all');
$noAfterFindModel = new NodeNoAfterFind();
$noAfterFindModel->recursive = 3;
$noAfterFindData = $noAfterFindModel->find('all');
$this->assertFalse($afterFindModel == $noAfterFindModel);
// Limitation of PHP 4 and PHP 5 > 5.1.6 when comparing recursive objects
if (PHP_VERSION === '5.1.6') {
$this->assertFalse($afterFindModel != $duplicateModel);
}
$this->assertEqual($afterFindData, $noAfterFindData);
}
2009-07-26 09:59:51 +00:00
/**
* testFindAllThreaded method
*
* @access public
* @return void
*/
function testFindAllThreaded() {
$this->loadFixtures('Category');
2010-06-05 03:37:29 +00:00
$TestModel = new Category();
$result = $TestModel->find('threaded');
$expected = array(
array(
'Category' => array(
'id' => '1',
'parent_id' => '0',
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array(
'Category' => array(
'id' => '2',
'parent_id' => '1',
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array('Category' => array(
'id' => '7',
'parent_id' => '2',
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()),
array('Category' => array(
'id' => '8',
'parent_id' => '2',
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()))
),
array(
'Category' => array(
'id' => '3',
'parent_id' => '1',
'name' => 'Category 1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
)
)
),
array(
'Category' => array(
'id' => '4',
'parent_id' => '0',
'name' => 'Category 2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
),
array(
'Category' => array(
'id' => '5',
'parent_id' => '0',
'name' => 'Category 3',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array(
'Category' => array(
'id' => '6',
'parent_id' => '5',
'name' => 'Category 3.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
)
)
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array(
'conditions' => array('Category.name LIKE' => 'Category 1%')
));
$expected = array(
array(
'Category' => array(
'id' => '1',
'parent_id' => '0',
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array(
'Category' => array(
'id' => '2',
'parent_id' => '1',
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array('Category' => array(
'id' => '7',
'parent_id' => '2',
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()),
array('Category' => array(
'id' => '8',
'parent_id' => '2',
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()))
),
array(
'Category' => array(
'id' => '3',
'parent_id' => '1',
'name' => 'Category 1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
)
)
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array(
'fields' => 'id, parent_id, name'
));
$expected = array(
array(
'Category' => array(
'id' => '1',
'parent_id' => '0',
'name' => 'Category 1'
),
'children' => array(
array(
'Category' => array(
'id' => '2',
'parent_id' => '1',
'name' => 'Category 1.1'
),
'children' => array(
array('Category' => array(
'id' => '7',
'parent_id' => '2',
'name' => 'Category 1.1.1'),
'children' => array()),
array('Category' => array(
'id' => '8',
'parent_id' => '2',
'name' => 'Category 1.1.2'),
'children' => array()))
),
array(
'Category' => array(
'id' => '3',
'parent_id' => '1',
'name' => 'Category 1.2'
),
'children' => array()
)
)
),
array(
'Category' => array(
'id' => '4',
'parent_id' => '0',
'name' => 'Category 2'
),
'children' => array()
),
array(
'Category' => array(
'id' => '5',
'parent_id' => '0',
'name' => 'Category 3'
),
'children' => array(
array(
'Category' => array(
'id' => '6',
'parent_id' => '5',
'name' => 'Category 3.1'
),
'children' => array()
)
)
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array('order' => 'id DESC'));
$expected = array(
array(
'Category' => array(
'id' => 5,
'parent_id' => 0,
'name' => 'Category 3',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array(
'Category' => array(
'id' => 6,
'parent_id' => 5,
'name' => 'Category 3.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
)
)
),
array(
'Category' => array(
'id' => 4,
'parent_id' => 0,
'name' => 'Category 2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
),
array(
'Category' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array(
'Category' => array(
'id' => 3,
'parent_id' => 1,
'name' => 'Category 1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
),
array(
'Category' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array('Category' => array(
'id' => '8',
'parent_id' => '2',
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()),
array('Category' => array(
'id' => '7',
'parent_id' => '2',
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()))
)
)
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array(
'conditions' => array('Category.name LIKE' => 'Category 3%')
));
$expected = array(
array(
'Category' => array(
'id' => '5',
'parent_id' => '0',
'name' => 'Category 3',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array(
array(
'Category' => array(
'id' => '6',
'parent_id' => '5',
'name' => 'Category 3.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'children' => array()
)
)
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array(
'conditions' => array('Category.name LIKE' => 'Category 1.1%')
));
$expected = array(
array('Category' =>
array(
'id' => '2',
'parent_id' => '1',
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array(
array('Category' => array(
'id' => '7',
'parent_id' => '2',
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()),
array('Category' => array(
'id' => '8',
'parent_id' => '2',
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'),
'children' => array()))));
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array(
'fields' => 'id, parent_id, name',
'conditions' => array('Category.id !=' => 2)
));
$expected = array(
array(
'Category' => array(
'id' => '1',
'parent_id' => '0',
'name' => 'Category 1'
),
'children' => array(
array(
'Category' => array(
'id' => '3',
'parent_id' => '1',
'name' => 'Category 1.2'
),
'children' => array()
)
)
),
array(
'Category' => array(
'id' => '4',
'parent_id' => '0',
'name' => 'Category 2'
),
'children' => array()
),
array(
'Category' => array(
'id' => '5',
'parent_id' => '0',
'name' => 'Category 3'
),
'children' => array(
array(
'Category' => array(
'id' => '6',
'parent_id' => '5',
'name' => 'Category 3.1'
),
'children' => array()
)
)
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array(
'fields' => 'id, name, parent_id',
'conditions' => array('Category.id !=' => 1)
));
$expected = array (
array ('Category' => array(
'id' => '2',
'name' => 'Category 1.1',
'parent_id' => '1'
)),
array ('Category' => array(
'id' => '3',
'name' => 'Category 1.2',
'parent_id' => '1'
)),
array ('Category' => array(
'id' => '4',
'name' => 'Category 2',
'parent_id' => '0'
)),
array ('Category' => array(
'id' => '5',
'name' => 'Category 3',
'parent_id' => '0'
)),
array ('Category' => array(
'id' => '6',
'name' => 'Category 3.1',
'parent_id' => '5'
)),
array ('Category' => array(
'id' => '7',
'name' => 'Category 1.1.1',
'parent_id' => '2'
)),
array ('Category' => array(
'id' => '8',
'name' => 'Category 1.1.2',
'parent_id' => '2'
)));
$this->assertEqual($result, $expected);
$result = $TestModel->find('threaded', array(
'fields' => 'id, parent_id, name',
'conditions' => array('Category.id !=' => 1)
));
$expected = array(
array(
'Category' => array(
'id' => '2',
'parent_id' => '1',
'name' => 'Category 1.1'
),
'children' => array(
array('Category' => array(
'id' => '7',
'parent_id' => '2',
'name' => 'Category 1.1.1'),
'children' => array()),
array('Category' => array(
'id' => '8',
'parent_id' => '2',
'name' => 'Category 1.1.2'),
'children' => array()))
),
array(
'Category' => array(
'id' => '3',
'parent_id' => '1',
'name' => 'Category 1.2'
),
'children' => array()
)
);
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* test find('neighbors')
*
* @return void
*/
public function testFindNeighbors() {
$this->loadFixtures('User', 'Article', 'Comment', 'Tag', 'ArticlesTag', 'Attachment');
2010-06-05 03:37:29 +00:00
$TestModel = new Article();
$TestModel->id = 1;
$result = $TestModel->find('neighbors', array('fields' => array('id')));
$this->assertNull($result['prev']);
$this->assertEqual($result['next']['Article'], array('id' => 2));
$this->assertEqual(count($result['next']['Comment']), 2);
$this->assertEqual(count($result['next']['Tag']), 2);
$TestModel->id = 2;
$TestModel->recursive = 0;
$result = $TestModel->find('neighbors', array(
'fields' => array('id')
));
$expected = array(
'prev' => array(
'Article' => array(
'id' => 1
)),
'next' => array(
'Article' => array(
'id' => 3
)));
$this->assertEqual($result, $expected);
$TestModel->id = 3;
$TestModel->recursive = 1;
$result = $TestModel->find('neighbors', array('fields' => array('id')));
$this->assertNull($result['next']);
$this->assertEqual($result['prev']['Article'], array('id' => 2));
$this->assertEqual(count($result['prev']['Comment']), 2);
$this->assertEqual(count($result['prev']['Tag']), 2);
$TestModel->id = 1;
$result = $TestModel->find('neighbors', array('recursive' => -1));
$expected = array(
'prev' => null,
'next' => array(
'Article' => array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)
)
);
$this->assertEqual($result, $expected);
$TestModel->id = 2;
$result = $TestModel->find('neighbors', array('recursive' => -1));
$expected = array(
'prev' => array(
'Article' => array(
'id' => 1,
'user_id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)
),
'next' => array(
'Article' => array(
'id' => 3,
'user_id' => 1,
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
)
)
);
$this->assertEqual($result, $expected);
$TestModel->id = 3;
$result = $TestModel->find('neighbors', array('recursive' => -1));
$expected = array(
'prev' => array(
'Article' => array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)
),
'next' => null
);
$this->assertEqual($result, $expected);
$TestModel->recursive = 0;
$TestModel->id = 1;
$one = $TestModel->read();
$TestModel->id = 2;
$two = $TestModel->read();
$TestModel->id = 3;
$three = $TestModel->read();
$TestModel->id = 1;
$result = $TestModel->find('neighbors');
$expected = array('prev' => null, 'next' => $two);
$this->assertEqual($result, $expected);
$TestModel->id = 2;
$result = $TestModel->find('neighbors');
$expected = array('prev' => $one, 'next' => $three);
$this->assertEqual($result, $expected);
$TestModel->id = 3;
$result = $TestModel->find('neighbors');
$expected = array('prev' => $two, 'next' => null);
$this->assertEqual($result, $expected);
$TestModel->recursive = 2;
$TestModel->id = 1;
$one = $TestModel->read();
$TestModel->id = 2;
$two = $TestModel->read();
$TestModel->id = 3;
$three = $TestModel->read();
$TestModel->id = 1;
$result = $TestModel->find('neighbors', array('recursive' => 2));
$expected = array('prev' => null, 'next' => $two);
$this->assertEqual($result, $expected);
$TestModel->id = 2;
$result = $TestModel->find('neighbors', array('recursive' => 2));
$expected = array('prev' => $one, 'next' => $three);
$this->assertEqual($result, $expected);
$TestModel->id = 3;
$result = $TestModel->find('neighbors', array('recursive' => 2));
$expected = array('prev' => $two, 'next' => null);
$this->assertEqual($result, $expected);
}
/**
* testFindCombinedRelations method
*
* @access public
* @return void
*/
function testFindCombinedRelations() {
$this->loadFixtures('Apple', 'Sample');
2010-06-05 03:37:29 +00:00
$TestModel = new Apple();
$result = $TestModel->find('all');
$expected = array(
array(
'Apple' => array(
'id' => '1',
'apple_id' => '2',
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '2',
'apple_id' => '1',
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => null,
'apple_id' => null,
'name' => null
),
'Child' => array(
array(
'id' => '2',
'apple_id' => '1',
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => '2',
'apple_id' => '1',
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '1',
'apple_id' => '2',
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => '2',
'apple_id' => '2',
'name' => 'sample2'
),
'Child' => array(
array(
'id' => '1',
'apple_id' => '2',
'color' => 'Red 1',
'name' => 'Red Apple 1',
'created' => '2006-11-22 10:38:58',
'date' => '1951-01-04',
'modified' => '2006-12-01 13:31:26',
'mytime' => '22:57:17'
),
array(
'id' => '3',
'apple_id' => '2',
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
array(
'id' => '4',
'apple_id' => '2',
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => '3',
'apple_id' => '2',
'color' => 'blue green',
'name' => 'green blue',
'created' => '2006-12-25 05:13:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:24',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '2',
'apple_id' => '1',
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => '1',
'apple_id' => '3',
'name' => 'sample1'
),
'Child' => array()
),
array(
'Apple' => array(
'id' => '4',
'apple_id' => '2',
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '2',
'apple_id' => '1',
'color' => 'Bright Red 1',
'name' => 'Bright Red Apple',
'created' => '2006-11-22 10:43:13',
'date' => '2014-01-01',
'modified' => '2006-11-30 18:38:10',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => '3',
'apple_id' => '4',
'name' => 'sample3'
),
'Child' => array(
array(
'id' => '6',
'apple_id' => '4',
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => '5',
'apple_id' => '5',
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '5',
'apple_id' => '5',
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => '4',
'apple_id' => '5',
'name' => 'sample4'
),
'Child' => array(
array(
'id' => '5',
'apple_id' => '5',
'color' => 'Green',
'name' => 'Blue Green',
'created' => '2006-12-25 05:24:06',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:16',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => '6',
'apple_id' => '4',
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '4',
'apple_id' => '2',
'color' => 'Blue Green',
'name' => 'Test Name',
'created' => '2006-12-25 05:23:36',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:23:36',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => null,
'apple_id' => null,
'name' => null
),
'Child' => array(
array(
'id' => '7',
'apple_id' => '6',
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
))),
array(
'Apple' => array(
'id' => '7',
'apple_id' => '6',
'color' => 'Some wierd color',
'name' => 'Some odd color',
'created' => '2006-12-25 05:34:21',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:34:21',
'mytime' => '22:57:17'
),
'Parent' => array(
'id' => '6',
'apple_id' => '4',
'color' => 'My new appleOrange',
'name' => 'My new apple',
'created' => '2006-12-25 05:29:39',
'date' => '2006-12-25',
'modified' => '2006-12-25 05:29:39',
'mytime' => '22:57:17'
),
'Sample' => array(
'id' => null,
'apple_id' => null,
'name' => null
),
'Child' => array()
));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testSaveEmpty method
*
* @access public
* @return void
*/
function testSaveEmpty() {
$this->loadFixtures('Thread');
2010-06-05 03:37:29 +00:00
$TestModel = new Thread();
$data = array();
$expected = $TestModel->save($data);
$this->assertFalse($expected);
}
/**
* testFindAllWithConditionInChildQuery
*
* @todo external conditions like this are going to need to be revisited at some point
* @access public
* @return void
*/
function testFindAllWithConditionInChildQuery() {
$this->loadFixtures('Basket', 'FilmFile');
2010-06-05 03:37:29 +00:00
$TestModel = new Basket();
$recursive = 3;
$result = $TestModel->find('all', compact('conditions', 'recursive'));
$expected = array(
array(
'Basket' => array(
'id' => 1,
'type' => 'nonfile',
'name' => 'basket1',
'object_id' => 1,
'user_id' => 1,
),
'FilmFile' => array(
'id' => '',
'name' => '',
)
),
array(
'Basket' => array(
'id' => 2,
'type' => 'file',
'name' => 'basket2',
'object_id' => 2,
'user_id' => 1,
),
'FilmFile' => array(
'id' => 2,
'name' => 'two',
)
),
);
$this->assertEqual($result, $expected);
}
/**
* testFindAllWithConditionsHavingMixedDataTypes method
*
* @access public
* @return void
*/
function testFindAllWithConditionsHavingMixedDataTypes() {
2010-06-05 03:37:29 +00:00
$this->loadFixtures('Article', 'User', 'Tag', 'ArticlesTag');
$TestModel = new Article();
$expected = array(
array(
'Article' => array(
'id' => 1,
'user_id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)
),
array(
'Article' => array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)
)
);
$conditions = array('id' => array('1', 2));
$recursive = -1;
$order = 'Article.id ASC';
$result = $TestModel->find('all', compact('conditions', 'recursive', 'order'));
$this->assertEqual($result, $expected);
if ($this->skipIf($this->db instanceof Postgres, 'The rest of testFindAllWithConditionsHavingMixedDataTypes test is not compatible with Postgres')) {
return;
}
$conditions = array('id' => array('1', 2, '3.0'));
$order = 'Article.id ASC';
$result = $TestModel->find('all', compact('recursive', 'conditions', 'order'));
$expected = array(
array(
'Article' => array(
'id' => 1,
'user_id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)
),
array(
'Article' => array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)
),
array(
'Article' => array(
'id' => 3,
'user_id' => 1,
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
)
)
);
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testBindUnbind method
*
* @access public
* @return void
*/
function testBindUnbind() {
2010-06-05 03:37:29 +00:00
$this->loadFixtures(
'User',
'Comment',
'FeatureSet',
'DeviceType',
'DeviceTypeCategory',
'ExteriorTypeCategory',
'Device',
'Document',
'DocumentDirectory'
);
$TestModel = new User();
$result = $TestModel->hasMany;
$expected = array();
$this->assertEqual($result, $expected);
$result = $TestModel->bindModel(array('hasMany' => array('Comment')));
$this->assertTrue($result);
$result = $TestModel->find('all', array(
'fields' => 'User.id, User.user'
));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Comment' => array(
array(
'id' => '3',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Third Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:49:23',
'updated' => '2007-03-18 10:51:31'
),
array(
'id' => '4',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Fourth Comment for First Article',
'published' => 'N',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
),
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
))),
array(
'User' => array(
'id' => '2',
'user' => 'nate'
),
'Comment' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
))),
array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Comment' => array()
),
array(
'User' => array(
'id' => '4',
'user' => 'garrett'
),
'Comment' => array(
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' => 'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
))));
$this->assertEqual($result, $expected);
$TestModel->resetAssociations();
$result = $TestModel->hasMany;
$this->assertEqual($result, array());
$result = $TestModel->bindModel(array('hasMany' => array('Comment')), false);
$this->assertTrue($result);
$result = $TestModel->find('all', array(
'fields' => 'User.id, User.user'
));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Comment' => array(
array(
'id' => '3',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Third Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:49:23',
'updated' => '2007-03-18 10:51:31'
),
array(
'id' => '4',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Fourth Comment for First Article',
'published' => 'N',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
),
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
))),
array(
'User' => array(
'id' => '2',
'user' => 'nate'
),
'Comment' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
))),
array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Comment' => array()
),
array(
'User' => array(
'id' => '4',
'user' => 'garrett'
),
'Comment' => array(
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' => 'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
))));
$this->assertEqual($result, $expected);
$result = $TestModel->hasMany;
$expected = array(
'Comment' => array(
'className' => 'Comment',
'foreignKey' => 'user_id',
'conditions' => null,
'fields' => null,
'order' => null,
'limit' => null,
'offset' => null,
'dependent' => null,
'exclusive' => null,
'finderQuery' => null,
'counterQuery' => null
));
$this->assertEqual($result, $expected);
$result = $TestModel->unbindModel(array('hasMany' => array('Comment')));
$this->assertTrue($result);
$result = $TestModel->hasMany;
$expected = array();
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array(
'fields' => 'User.id, User.user'
));
$expected = array(
array('User' => array('id' => '1', 'user' => 'mariano')),
array('User' => array('id' => '2', 'user' => 'nate')),
array('User' => array('id' => '3', 'user' => 'larry')),
array('User' => array('id' => '4', 'user' => 'garrett')));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array(
'fields' => 'User.id, User.user'
));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Comment' => array(
array(
'id' => '3',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Third Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:49:23',
'updated' => '2007-03-18 10:51:31'
),
array(
'id' => '4',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Fourth Comment for First Article',
'published' => 'N',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
),
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
))),
array(
'User' => array(
'id' => '2',
'user' => 'nate'
),
'Comment' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
))),
array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Comment' => array()
),
array(
'User' => array(
'id' => '4',
'user' => 'garrett'
),
'Comment' => array(
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' =>
'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
))));
$this->assertEqual($result, $expected);
$result = $TestModel->unbindModel(array('hasMany' => array('Comment')), false);
$this->assertTrue($result);
$result = $TestModel->find('all', array('fields' => 'User.id, User.user'));
$expected = array(
array('User' => array('id' => '1', 'user' => 'mariano')),
array('User' => array('id' => '2', 'user' => 'nate')),
array('User' => array('id' => '3', 'user' => 'larry')),
array('User' => array('id' => '4', 'user' => 'garrett')));
$this->assertEqual($result, $expected);
$result = $TestModel->hasMany;
$expected = array();
$this->assertEqual($result, $expected);
$result = $TestModel->bindModel(array('hasMany' => array(
'Comment' => array('className' => 'Comment', 'conditions' => 'Comment.published = \'Y\'')
)));
$this->assertTrue($result);
$result = $TestModel->find('all', array('fields' => 'User.id, User.user'));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Comment' => array(
array(
'id' => '3',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Third Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:49:23',
'updated' => '2007-03-18 10:51:31'
),
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
))),
array(
'User' => array(
'id' => '2',
'user' => 'nate'
),
'Comment' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
))),
array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Comment' => array()
),
array(
'User' => array(
'id' => '4',
'user' => 'garrett'
),
'Comment' => array(
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' => 'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
))));
$this->assertEqual($result, $expected);
2010-06-05 03:37:29 +00:00
$TestModel2 = new DeviceType();
$expected = array(
'className' => 'FeatureSet',
'foreignKey' => 'feature_set_id',
'conditions' => '',
'fields' => '',
'order' => '',
'counterCache' => ''
);
$this->assertEqual($TestModel2->belongsTo['FeatureSet'], $expected);
$TestModel2->bindModel(array(
'belongsTo' => array(
'FeatureSet' => array(
'className' => 'FeatureSet',
'conditions' => array('active' => true)
)
)
));
$expected['conditions'] = array('active' => true);
$this->assertEqual($TestModel2->belongsTo['FeatureSet'], $expected);
$TestModel2->bindModel(array(
'belongsTo' => array(
'FeatureSet' => array(
'className' => 'FeatureSet',
'foreignKey' => false,
'conditions' => array('Feature.name' => 'DeviceType.name')
)
)
));
$expected['conditions'] = array('Feature.name' => 'DeviceType.name');
$expected['foreignKey'] = false;
$this->assertEqual($TestModel2->belongsTo['FeatureSet'], $expected);
$TestModel2->bindModel(array(
'hasMany' => array(
'NewFeatureSet' => array(
'className' => 'FeatureSet',
'conditions' => array('active' => true)
)
)
));
$expected = array(
'className' => 'FeatureSet',
'conditions' => array('active' => true),
'foreignKey' => 'device_type_id',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'dependent' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
);
$this->assertEqual($TestModel2->hasMany['NewFeatureSet'], $expected);
$this->assertTrue(is_object($TestModel2->NewFeatureSet));
}
2009-07-26 09:59:51 +00:00
/**
* testBindMultipleTimes method
*
* @access public
* @return void
*/
function testBindMultipleTimes() {
$this->loadFixtures('User', 'Comment', 'Article', 'Tag', 'ArticlesTag');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$result = $TestModel->hasMany;
$expected = array();
$this->assertEqual($result, $expected);
$result = $TestModel->bindModel(array(
'hasMany' => array(
'Items' => array('className' => 'Comment')
)));
$this->assertTrue($result);
$result = $TestModel->find('all', array(
'fields' => 'User.id, User.user'
));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Items' => array(
array(
'id' => '3',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Third Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:49:23',
'updated' => '2007-03-18 10:51:31'
),
array(
'id' => '4',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Fourth Comment for First Article',
'published' => 'N',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
),
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
))),
array(
'User' => array(
'id' => '2',
'user' => 'nate'
),
'Items' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
))),
array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Items' => array()
),
array(
'User' => array(
'id' => '4',
'user' => 'garrett'
),
'Items' => array(
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' => 'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
))));
$this->assertEqual($result, $expected);
$result = $TestModel->bindModel(array(
'hasMany' => array(
'Items' => array('className' => 'Article')
)));
$this->assertTrue($result);
$result = $TestModel->find('all', array(
'fields' => 'User.id, User.user'
));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Items' => array(
array(
'id' => 1,
'user_id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
array(
'id' => 3,
'user_id' => 1,
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
))),
array(
'User' => array(
'id' => '2',
'user' => 'nate'
),
'Items' => array()
),
array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Items' => array(
array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
))),
array(
'User' => array(
'id' => '4',
'user' => 'garrett'
),
'Items' => array()
));
$this->assertEqual($result, $expected);
}
/**
* test that multiple reset = true calls to bindModel() result in the original associations.
*
* @return void
*/
function testBindModelMultipleTimesResetCorrectly() {
$this->loadFixtures('User', 'Comment', 'Article');
$TestModel = new User();
$TestModel->bindModel(array('hasMany' => array('Comment')));
$TestModel->bindModel(array('hasMany' => array('Comment')));
$TestModel->resetAssociations();
$this->assertFalse(isset($TestModel->hasMany['Comment']), 'Association left behind');
}
/**
* testBindMultipleTimes method with different reset settings
*
* @access public
* @return void
*/
function testBindMultipleTimesWithDifferentResetSettings() {
$this->loadFixtures('User', 'Comment', 'Article');
$TestModel = new User();
$result = $TestModel->hasMany;
$expected = array();
$this->assertEqual($result, $expected);
$result = $TestModel->bindModel(array(
'hasMany' => array('Comment')
));
$this->assertTrue($result);
$result = $TestModel->bindModel(
array('hasMany' => array('Article')),
false
);
$this->assertTrue($result);
$result = array_keys($TestModel->hasMany);
$expected = array('Comment', 'Article');
$this->assertEqual($result, $expected);
$TestModel->resetAssociations();
$result = array_keys($TestModel->hasMany);
$expected = array('Article');
$this->assertEqual($result, $expected);
}
/**
* test that bindModel behaves with Custom primary Key associations
*
* @return void
*/
function bindWithCustomPrimaryKey() {
$this->loadFixtures('Story', 'StoriesTag', 'Tag');
2010-06-05 03:37:29 +00:00
$Model = ClassRegistry::init('StoriesTag');
$Model->bindModel(array(
'belongsTo' => array(
'Tag' => array(
'className' => 'Tag',
'foreignKey' => 'story'
))));
$result = $Model->find('all');
$this->assertFalse(empty($result));
}
/**
* test that calling unbindModel() with reset == true multiple times
* leaves associations in the correct state.
*
* @return void
*/
function testUnbindMultipleTimesResetCorrectly() {
$this->loadFixtures('User', 'Comment', 'Article');
$TestModel = new Article10();
$TestModel->unbindModel(array('hasMany' => array('Comment')));
$TestModel->unbindModel(array('hasMany' => array('Comment')));
$TestModel->resetAssociations();
$this->assertTrue(isset($TestModel->hasMany['Comment']), 'Association permanently removed');
}
/**
* testBindMultipleTimes method with different reset settings
*
* @access public
* @return void
*/
function testUnBindMultipleTimesWithDifferentResetSettings() {
$this->loadFixtures('User', 'Comment', 'Article');
$TestModel = new Comment();
$result = array_keys($TestModel->belongsTo);
$expected = array('Article', 'User');
$this->assertEqual($result, $expected);
$result = $TestModel->unbindModel(array(
'belongsTo' => array('User')
));
$this->assertTrue($result);
$result = $TestModel->unbindModel(
array('belongsTo' => array('Article')),
false
);
$this->assertTrue($result);
$result = array_keys($TestModel->belongsTo);
$expected = array();
$this->assertEqual($result, $expected);
$TestModel->resetAssociations();
$result = array_keys($TestModel->belongsTo);
$expected = array('User');
$this->assertEqual($result, $expected);
}
/**
* testAssociationAfterFind method
*
* @access public
* @return void
*/
function testAssociationAfterFind() {
$this->loadFixtures('Post', 'Author', 'Comment');
2010-06-05 03:37:29 +00:00
$TestModel = new Post();
$result = $TestModel->find('all');
$expected = array(
array(
'Post' => array(
'id' => '1',
'author_id' => '1',
'title' => 'First Post',
'body' => 'First Post Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'Author' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31',
'test' => 'working'
)),
array(
'Post' => array(
'id' => '2',
'author_id' => '3',
'title' => 'Second Post',
'body' => 'Second Post Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'Author' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31',
'test' => 'working'
)),
array(
'Post' => array(
'id' => '3',
'author_id' => '1',
'title' => 'Third Post',
'body' => 'Third Post Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
),
'Author' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31',
'test' => 'working'
)));
$this->assertEqual($result, $expected);
unset($TestModel);
2010-06-05 03:37:29 +00:00
$Author = new Author();
$Author->Post->bindModel(array(
'hasMany' => array(
'Comment' => array(
'className' => 'ModifiedComment',
'foreignKey' => 'article_id',
)
)));
$result = $Author->find('all', array(
'conditions' => array('Author.id' => 1),
'recursive' => 2
));
$expected = array(
'id' => 1,
'article_id' => 1,
'user_id' => 2,
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31',
'callback' => 'Fire'
);
$this->assertEqual($result[0]['Post'][0]['Comment'][0], $expected);
}
2009-07-26 09:59:51 +00:00
/**
* Tests that callbacks can be properly disabled
*
* @access public
* @return void
*/
function testCallbackDisabling() {
$this->loadFixtures('Author');
$TestModel = new ModifiedAuthor();
$result = Set::extract($TestModel->find('all'), '/Author/user');
$expected = array('mariano (CakePHP)', 'nate (CakePHP)', 'larry (CakePHP)', 'garrett (CakePHP)');
$this->assertEqual($result, $expected);
$result = Set::extract($TestModel->find('all', array('callbacks' => 'after')), '/Author/user');
$expected = array('mariano (CakePHP)', 'nate (CakePHP)', 'larry (CakePHP)', 'garrett (CakePHP)');
$this->assertEqual($result, $expected);
$result = Set::extract($TestModel->find('all', array('callbacks' => 'before')), '/Author/user');
$expected = array('mariano', 'nate', 'larry', 'garrett');
$this->assertEqual($result, $expected);
$result = Set::extract($TestModel->find('all', array('callbacks' => false)), '/Author/user');
$expected = array('mariano', 'nate', 'larry', 'garrett');
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* Tests that the database configuration assigned to the model can be changed using
* (before|after)Find callbacks
*
* @access public
* @return void
*/
function testCallbackSourceChange() {
$this->loadFixtures('Post');
$TestModel = new Post();
$this->assertEqual(3, count($TestModel->find('all')));
2010-06-05 03:37:29 +00:00
$this->expectError();
$this->assertFalse($TestModel->find('all', array('connection' => 'foo')));
}
/**
* testMultipleBelongsToWithSameClass method
*
* @access public
* @return void
*/
function testMultipleBelongsToWithSameClass() {
$this->loadFixtures(
'DeviceType',
'DeviceTypeCategory',
'FeatureSet',
'ExteriorTypeCategory',
'Document',
'Device',
'DocumentDirectory'
);
2010-06-05 03:37:29 +00:00
$DeviceType = new DeviceType();
$DeviceType->recursive = 2;
$result = $DeviceType->read(null, 1);
$expected = array(
'DeviceType' => array(
'id' => 1,
'device_type_category_id' => 1,
'feature_set_id' => 1,
'exterior_type_category_id' => 1,
'image_id' => 1,
'extra1_id' => 1,
'extra2_id' => 1,
'name' => 'DeviceType 1',
'order' => 0
),
'Image' => array(
'id' => 1,
'document_directory_id' => 1,
'name' => 'Document 1',
'DocumentDirectory' => array(
'id' => 1,
'name' => 'DocumentDirectory 1'
)),
'Extra1' => array(
'id' => 1,
'document_directory_id' => 1,
'name' => 'Document 1',
'DocumentDirectory' => array(
'id' => 1,
'name' => 'DocumentDirectory 1'
)),
'Extra2' => array(
'id' => 1,
'document_directory_id' => 1,
'name' => 'Document 1',
'DocumentDirectory' => array(
'id' => 1,
'name' => 'DocumentDirectory 1'
)),
'DeviceTypeCategory' => array(
'id' => 1,
'name' => 'DeviceTypeCategory 1'
),
'FeatureSet' => array(
'id' => 1,
'name' => 'FeatureSet 1'
),
'ExteriorTypeCategory' => array(
'id' => 1,
'image_id' => 1,
'name' => 'ExteriorTypeCategory 1',
'Image' => array(
'id' => 1,
'device_type_id' => 1,
'name' => 'Device 1',
'typ' => 1
)),
'Device' => array(
array(
'id' => 1,
'device_type_id' => 1,
'name' => 'Device 1',
'typ' => 1
),
array(
'id' => 2,
'device_type_id' => 1,
'name' => 'Device 2',
'typ' => 1
),
array(
'id' => 3,
'device_type_id' => 1,
'name' => 'Device 3',
'typ' => 2
)));
$this->assertEqual($expected, $result);
}
2009-07-26 09:59:51 +00:00
/**
* testHabtmRecursiveBelongsTo method
*
* @access public
* @return void
*/
function testHabtmRecursiveBelongsTo() {
$this->loadFixtures('Portfolio', 'Item', 'ItemsPortfolio', 'Syfile', 'Image');
2010-06-05 03:37:29 +00:00
$Portfolio = new Portfolio();
$result = $Portfolio->find('first', array('conditions' => array('id' => 2), 'recursive' => 3));
$expected = array(
'Portfolio' => array(
'id' => 2,
'seller_id' => 1,
'name' => 'Portfolio 2'
),
'Item' => array(
array(
'id' => 2,
'syfile_id' => 2,
'published' => false,
'name' => 'Item 2',
'ItemsPortfolio' => array(
'id' => 2,
'item_id' => 2,
'portfolio_id' => 2
),
'Syfile' => array(
'id' => 2,
'image_id' => 2,
'name' => 'Syfile 2',
'item_count' => null,
'Image' => array(
'id' => 2,
'name' => 'Image 2'
)
)),
array(
'id' => 6,
'syfile_id' => 6,
'published' => false,
'name' => 'Item 6',
'ItemsPortfolio' => array(
'id' => 6,
'item_id' => 6,
'portfolio_id' => 2
),
'Syfile' => array(
'id' => 6,
'image_id' => null,
'name' => 'Syfile 6',
'item_count' => null,
'Image' => array()
))));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
2010-06-05 03:37:29 +00:00
/**
* testNonNumericHabtmJoinKey method
*
* @access public
* @return void
*/
function testNonNumericHabtmJoinKey() {
$this->loadFixtures('Post', 'Tag', 'PostsTag', 'Author');
$Post = new Post();
$Post->bindModel(array(
'hasAndBelongsToMany' => array('Tag')
));
$Post->Tag->primaryKey = 'tag';
$result = $Post->find('all');
$expected = array(
array(
'Post' => array(
'id' => '1',
'author_id' => '1',
'title' => 'First Post',
'body' => 'First Post Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'Author' => array(
'id' => 1,
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31',
'test' => 'working'
),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '2',
'tag' => 'tag2',
'created' => '2007-03-18 12:24:23',
'updated' => '2007-03-18 12:26:31'
))),
array(
'Post' => array(
'id' => '2',
'author_id' => '3',
'title' => 'Second Post',
'body' => 'Second Post Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'Author' => array(
'id' => 3,
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31',
'test' => 'working'
),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '3',
'tag' => 'tag3',
'created' => '2007-03-18 12:26:23',
'updated' => '2007-03-18 12:28:31'
))),
array(
'Post' => array(
'id' => '3',
'author_id' => '1',
'title' => 'Third Post',
'body' => 'Third Post Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
),
'Author' => array(
'id' => 1,
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31',
'test' => 'working'
),
'Tag' => array()
));
$this->assertEqual($result, $expected);
}
/**
* testHabtmFinderQuery method
*
* @access public
* @return void
*/
function testHabtmFinderQuery() {
$this->loadFixtures('Article', 'Tag', 'ArticlesTag');
2010-06-05 03:37:29 +00:00
$Article = new Article();
$sql = $this->db->buildStatement(
array(
'fields' => $this->db->fields($Article->Tag, null, array(
'Tag.id', 'Tag.tag', 'ArticlesTag.article_id', 'ArticlesTag.tag_id'
)),
'table' => $this->db->fullTableName('tags'),
'alias' => 'Tag',
'limit' => null,
'offset' => null,
'group' => null,
'joins' => array(array(
'alias' => 'ArticlesTag',
'table' => $this->db->fullTableName('articles_tags'),
'conditions' => array(
array("ArticlesTag.article_id" => '{$__cakeID__$}'),
array("ArticlesTag.tag_id" => $this->db->identifier('Tag.id'))
)
)),
'conditions' => array(),
'order' => null
),
$Article
);
$Article->hasAndBelongsToMany['Tag']['finderQuery'] = $sql;
$result = $Article->find('first');
$expected = array(
array(
'id' => '1',
'tag' => 'tag1'
),
array(
'id' => '2',
'tag' => 'tag2'
));
$this->assertEqual($result['Tag'], $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testHabtmLimitOptimization method
*
* @access public
* @return void
*/
function testHabtmLimitOptimization() {
$this->loadFixtures('Article', 'User', 'Comment', 'Tag', 'ArticlesTag');
2010-06-05 03:37:29 +00:00
$TestModel = new Article();
$TestModel->hasAndBelongsToMany['Tag']['limit'] = 2;
$result = $TestModel->read(null, 2);
$expected = array(
'Article' => array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
),
'Comment' => array(
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
)),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '3',
'tag' => 'tag3',
'created' => '2007-03-18 12:26:23',
'updated' => '2007-03-18 12:28:31'
)));
$this->assertEqual($result, $expected);
$TestModel->hasAndBelongsToMany['Tag']['limit'] = 1;
$result = $TestModel->read(null, 2);
unset($expected['Tag'][1]);
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testHasManyLimitOptimization method
*
* @access public
* @return void
*/
function testHasManyLimitOptimization() {
$this->loadFixtures('Project', 'Thread', 'Message', 'Bid');
2010-06-05 03:37:29 +00:00
$Project = new Project();
$Project->recursive = 3;
$result = $Project->find('all');
$expected = array(
array(
'Project' => array(
'id' => 1,
'name' => 'Project 1'
),
'Thread' => array(
array(
'id' => 1,
'project_id' => 1,
'name' => 'Project 1, Thread 1',
'Project' => array(
'id' => 1,
'name' => 'Project 1',
'Thread' => array(
array(
'id' => 1,
'project_id' => 1,
'name' => 'Project 1, Thread 1'
),
array(
'id' => 2,
'project_id' => 1,
'name' => 'Project 1, Thread 2'
))),
'Message' => array(
array(
'id' => 1,
'thread_id' => 1,
'name' => 'Thread 1, Message 1',
'Bid' => array(
'id' => 1,
'message_id' => 1,
'name' => 'Bid 1.1'
)))),
array(
'id' => 2,
'project_id' => 1,
'name' => 'Project 1, Thread 2',
'Project' => array(
'id' => 1,
'name' => 'Project 1',
'Thread' => array(
array(
'id' => 1,
'project_id' => 1,
'name' => 'Project 1, Thread 1'
),
array(
'id' => 2,
'project_id' => 1,
'name' => 'Project 1, Thread 2'
))),
'Message' => array(
array(
'id' => 2,
'thread_id' => 2,
'name' => 'Thread 2, Message 1',
'Bid' => array(
'id' => 4,
'message_id' => 2,
'name' => 'Bid 2.1'
)))))),
array(
'Project' => array(
'id' => 2,
'name' => 'Project 2'
),
'Thread' => array(
array(
'id' => 3,
'project_id' => 2,
'name' => 'Project 2, Thread 1',
'Project' => array(
'id' => 2,
'name' => 'Project 2',
'Thread' => array(
array(
'id' => 3,
'project_id' => 2,
'name' => 'Project 2, Thread 1'
))),
'Message' => array(
array(
'id' => 3,
'thread_id' => 3,
'name' => 'Thread 3, Message 1',
'Bid' => array(
'id' => 3,
'message_id' => 3,
'name' => 'Bid 3.1'
)))))),
array(
'Project' => array(
'id' => 3,
'name' => 'Project 3'
),
'Thread' => array()
));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testFindAllRecursiveSelfJoin method
*
* @access public
* @return void
*/
function testFindAllRecursiveSelfJoin() {
$this->loadFixtures('Home', 'AnotherArticle', 'Advertisement');
2010-06-05 03:37:29 +00:00
$TestModel = new Home();
$TestModel->recursive = 2;
$result = $TestModel->find('all');
$expected = array(
array(
'Home' => array(
'id' => '1',
'another_article_id' => '1',
'advertisement_id' => '1',
'title' => 'First Home',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'AnotherArticle' => array(
'id' => '1',
'title' => 'First Article',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31',
'Home' => array(
array(
'id' => '1',
'another_article_id' => '1',
'advertisement_id' => '1',
'title' => 'First Home',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
))),
'Advertisement' => array(
'id' => '1',
'title' => 'First Ad',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31',
'Home' => array(
array(
'id' => '1',
'another_article_id' => '1',
'advertisement_id' => '1',
'title' => 'First Home',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
array(
'id' => '2',
'another_article_id' => '3',
'advertisement_id' => '1',
'title' => 'Second Home',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)))),
array(
'Home' => array(
'id' => '2',
'another_article_id' => '3',
'advertisement_id' => '1',
'title' => 'Second Home',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'AnotherArticle' => array(
'id' => '3',
'title' => 'Third Article',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31',
'Home' => array(
array(
'id' => '2',
'another_article_id' => '3',
'advertisement_id' => '1',
'title' => 'Second Home',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
))),
'Advertisement' => array(
'id' => '1',
'title' => 'First Ad',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31',
'Home' => array(
array(
'id' => '1',
'another_article_id' => '1',
'advertisement_id' => '1',
'title' => 'First Home',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
array(
'id' => '2',
'another_article_id' => '3',
'advertisement_id' => '1',
'title' => 'Second Home',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)))));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testFindAllRecursiveWithHabtm method
*
* @return void
*/
public function testFindAllRecursiveWithHabtm() {
$this->loadFixtures(
'MyCategoriesMyUsers',
'MyCategoriesMyProducts',
'MyCategory',
'MyUser',
'MyProduct'
);
2010-06-05 03:37:29 +00:00
$MyUser = new MyUser();
$MyUser->recursive = 2;
$result = $MyUser->find('all');
$expected = array(
array(
'MyUser' => array('id' => '1', 'firstname' => 'userA'),
'MyCategory' => array(
array(
'id' => '1',
'name' => 'A',
'MyProduct' => array(
array(
'id' => '1',
'name' => 'book'
))),
array(
'id' => '3',
'name' => 'C',
'MyProduct' => array(
array(
'id' => '2',
'name' => 'computer'
))))),
array(
'MyUser' => array(
'id' => '2',
'firstname' => 'userB'
),
'MyCategory' => array(
array(
'id' => '1',
'name' => 'A',
'MyProduct' => array(
array(
'id' => '1',
'name' => 'book'
))),
array(
'id' => '2',
'name' => 'B',
'MyProduct' => array(
array(
'id' => '1',
'name' => 'book'
),
array(
'id' => '2',
'name' => 'computer'
))))));
$this->assertEquals($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testReadFakeThread method
*
* @access public
* @return void
*/
function testReadFakeThread() {
$this->loadFixtures('CategoryThread');
2010-06-05 03:37:29 +00:00
$TestModel = new CategoryThread();
$fullDebug = $this->db->fullDebug;
$this->db->fullDebug = true;
$TestModel->recursive = 6;
$TestModel->id = 7;
$result = $TestModel->read();
$expected = array(
'CategoryThread' => array(
'id' => 7,
'parent_id' => 6,
'name' => 'Category 2.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 6,
'parent_id' => 5,
'name' => 'Category 2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 5,
'parent_id' => 4,
'name' => 'Category 1.1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 4,
'parent_id' => 3,
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
)))))));
$this->db->fullDebug = $fullDebug;
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testFindFakeThread method
*
* @access public
* @return void
*/
function testFindFakeThread() {
$this->loadFixtures('CategoryThread');
2010-06-05 03:37:29 +00:00
$TestModel = new CategoryThread();
$fullDebug = $this->db->fullDebug;
$this->db->fullDebug = true;
$TestModel->recursive = 6;
$result = $TestModel->find('first', array('conditions' => array('CategoryThread.id' => 7)));
$expected = array(
'CategoryThread' => array(
'id' => 7,
'parent_id' => 6,
'name' => 'Category 2.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 6,
'parent_id' => 5,
'name' => 'Category 2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 5,
'parent_id' => 4,
'name' => 'Category 1.1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 4,
'parent_id' => 3,
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
)))))));
$this->db->fullDebug = $fullDebug;
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testFindAllFakeThread method
*
* @access public
* @return void
*/
function testFindAllFakeThread() {
$this->loadFixtures('CategoryThread');
2010-06-05 03:37:29 +00:00
$TestModel = new CategoryThread();
$fullDebug = $this->db->fullDebug;
$this->db->fullDebug = true;
$TestModel->recursive = 6;
$result = $TestModel->find('all', null, null, 'CategoryThread.id ASC');
$expected = array(
array(
'CategoryThread' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => null,
'parent_id' => null,
'name' => null,
'created' => null,
'updated' => null,
'ParentCategory' => array()
)),
array(
'CategoryThread' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array()
)),
array(
'CategoryThread' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array()
))),
array(
'CategoryThread' => array(
'id' => 4,
'parent_id' => 3,
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array()
)))),
array(
'CategoryThread' => array(
'id' => 5,
'parent_id' => 4,
'name' => 'Category 1.1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 4,
'parent_id' => 3,
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array()
))))),
array(
'CategoryThread' => array(
'id' => 6,
'parent_id' => 5,
'name' => 'Category 2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 5,
'parent_id' => 4,
'name' => 'Category 1.1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 4,
'parent_id' => 3,
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array()
)))))),
array(
'CategoryThread' => array(
'id' => 7,
'parent_id' => 6,
'name' => 'Category 2.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
),
'ParentCategory' => array(
'id' => 6,
'parent_id' => 5,
'name' => 'Category 2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 5,
'parent_id' => 4,
'name' => 'Category 1.1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 4,
'parent_id' => 3,
'name' => 'Category 1.1.2',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 3,
'parent_id' => 2,
'name' => 'Category 1.1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 2,
'parent_id' => 1,
'name' => 'Category 1.1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31',
'ParentCategory' => array(
'id' => 1,
'parent_id' => 0,
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
))))))));
$this->db->fullDebug = $fullDebug;
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testConditionalNumerics method
*
* @access public
* @return void
*/
function testConditionalNumerics() {
$this->loadFixtures('NumericArticle');
2010-06-05 03:37:29 +00:00
$NumericArticle = new NumericArticle();
$data = array('conditions' => array('title' => '12345abcde'));
$result = $NumericArticle->find('first', $data);
$this->assertTrue(!empty($result));
$data = array('conditions' => array('title' => '12345'));
$result = $NumericArticle->find('first', $data);
$this->assertTrue(empty($result));
}
/**
* test find('all') method
*
* @access public
* @return void
*/
function testFindAll() {
$this->loadFixtures('User');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$TestModel->cacheQueries = false;
$result = $TestModel->find('all');
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
)),
array(
'User' => array(
'id' => '2',
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:18:23',
'updated' => '2007-03-17 01:20:31'
)),
array(
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
)),
array(
'User' => array(
'id' => '4',
'user' => 'garrett',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:22:23',
'updated' => '2007-03-17 01:24:31'
)));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('conditions' => 'User.id > 2'));
$expected = array(
array(
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
)),
array(
'User' => array(
'id' => '4',
'user' => 'garrett',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:22:23',
'updated' => '2007-03-17 01:24:31'
)));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array(
'conditions' => array('User.id !=' => '0', 'User.user LIKE' => '%arr%')
));
$expected = array(
array(
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
)),
array(
'User' => array(
'id' => '4',
'user' => 'garrett',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:22:23',
'updated' => '2007-03-17 01:24:31'
)));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('conditions' => array('User.id' => '0')));
$expected = array();
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array(
'conditions' => array('or' => array('User.id' => '0', 'User.user LIKE' => '%a%')
)));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
)),
array(
'User' => array(
'id' => '2',
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:18:23',
'updated' => '2007-03-17 01:20:31'
)),
array(
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
)),
array(
'User' => array(
'id' => '4',
'user' => 'garrett',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:22:23',
'updated' => '2007-03-17 01:24:31'
)));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('fields' => 'User.id, User.user'));
$expected = array(
array('User' => array('id' => '1', 'user' => 'mariano')),
array('User' => array('id' => '2', 'user' => 'nate')),
array('User' => array('id' => '3', 'user' => 'larry')),
array('User' => array('id' => '4', 'user' => 'garrett')));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('fields' => 'User.user', 'order' => 'User.user ASC'));
$expected = array(
array('User' => array('user' => 'garrett')),
array('User' => array('user' => 'larry')),
array('User' => array('user' => 'mariano')),
array('User' => array('user' => 'nate')));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('fields' => 'User.user', 'order' => 'User.user DESC'));
$expected = array(
array('User' => array('user' => 'nate')),
array('User' => array('user' => 'mariano')),
array('User' => array('user' => 'larry')),
array('User' => array('user' => 'garrett')));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('limit' => 3, 'page' => 1));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
)),
array(
'User' => array(
'id' => '2',
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:18:23',
'updated' => '2007-03-17 01:20:31'
)),
array(
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
)));
$this->assertEqual($result, $expected);
$ids = array(4 => 1, 5 => 3);
$result = $TestModel->find('all', array(
'conditions' => array('User.id' => $ids),
'order' => 'User.id'
));
$expected = array(
array(
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
)),
array(
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
)));
$this->assertEqual($result, $expected);
// These tests are expected to fail on SQL Server since the LIMIT/OFFSET
// hack can't handle small record counts.
if ($this->db instanceof Mssql) {
$result = $TestModel->find('all', array('limit' => 3, 'page' => 2));
$expected = array(
array(
'User' => array(
'id' => '4',
'user' => 'garrett',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:22:23',
'updated' => '2007-03-17 01:24:31'
)));
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array('limit' => 3, 'page' => 3));
$expected = array();
$this->assertEqual($result, $expected);
}
}
2009-07-26 09:59:51 +00:00
/**
* test find('list') method
*
* @access public
* @return void
*/
function testGenerateFindList() {
$this->loadFixtures('Article', 'Apple', 'Post', 'Author', 'User', 'Comment');
2010-06-05 03:37:29 +00:00
$TestModel = new Article();
$TestModel->displayField = 'title';
$result = $TestModel->find('list', array(
'order' => 'Article.title ASC'
));
$expected = array(
1 => 'First Article',
2 => 'Second Article',
3 => 'Third Article'
);
$this->assertEqual($result, $expected);
$db = ConnectionManager::getDataSource('test');
if ($db instanceof Mysql) {
$result = $TestModel->find('list', array(
'order' => array('FIELD(Article.id, 3, 2) ASC', 'Article.title ASC')
));
$expected = array(
1 => 'First Article',
3 => 'Third Article',
2 => 'Second Article'
);
$this->assertEqual($result, $expected);
}
$result = Set::combine(
$TestModel->find('all', array(
'order' => 'Article.title ASC',
'fields' => array('id', 'title')
)),
'{n}.Article.id', '{n}.Article.title'
);
$expected = array(
1 => 'First Article',
2 => 'Second Article',
3 => 'Third Article'
);
$this->assertEqual($result, $expected);
$result = Set::combine(
$TestModel->find('all', array(
'order' => 'Article.title ASC'
)),
'{n}.Article.id', '{n}.Article'
);
$expected = array(
1 => array(
'id' => 1,
'user_id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
2 => array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
3 => array(
'id' => 3,
'user_id' => 1,
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
));
$this->assertEqual($result, $expected);
$result = Set::combine(
$TestModel->find('all', array(
'order' => 'Article.title ASC'
)),
'{n}.Article.id', '{n}.Article', '{n}.Article.user_id'
);
$expected = array(
1 => array(
1 => array(
'id' => 1,
'user_id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
3 => array(
'id' => 3,
'user_id' => 1,
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
)),
3 => array(
2 => array(
'id' => 2,
'user_id' => 3,
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
)));
$this->assertEqual($result, $expected);
$result = Set::combine(
$TestModel->find('all', array(
'order' => 'Article.title ASC',
'fields' => array('id', 'title', 'user_id')
)),
'{n}.Article.id', '{n}.Article.title', '{n}.Article.user_id'
);
$expected = array(
1 => array(
1 => 'First Article',
3 => 'Third Article'
),
3 => array(
2 => 'Second Article'
));
$this->assertEqual($result, $expected);
2010-06-05 03:37:29 +00:00
$TestModel = new Apple();
$expected = array(
1 => 'Red Apple 1',
2 => 'Bright Red Apple',
3 => 'green blue',
4 => 'Test Name',
5 => 'Blue Green',
6 => 'My new apple',
7 => 'Some odd color'
);
$this->assertEqual($TestModel->find('list'), $expected);
$this->assertEqual($TestModel->Parent->find('list'), $expected);
2010-06-05 03:37:29 +00:00
$TestModel = new Post();
$result = $TestModel->find('list', array(
'fields' => 'Post.title'
));
$expected = array(
1 => 'First Post',
2 => 'Second Post',
3 => 'Third Post'
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('list', array(
'fields' => 'title'
));
$expected = array(
1 => 'First Post',
2 => 'Second Post',
3 => 'Third Post'
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('list', array(
'fields' => array('title', 'id')
));
$expected = array(
'First Post' => '1',
'Second Post' => '2',
'Third Post' => '3'
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('list', array(
'fields' => array('title', 'id', 'created')
));
$expected = array(
'2007-03-18 10:39:23' => array(
'First Post' => '1'
),
'2007-03-18 10:41:23' => array(
'Second Post' => '2'
),
'2007-03-18 10:43:23' => array(
'Third Post' => '3'
),
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('list', array(
'fields' => array('Post.body')
));
$expected = array(
1 => 'First Post Body',
2 => 'Second Post Body',
3 => 'Third Post Body'
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('list', array(
'fields' => array('Post.title', 'Post.body')
));
$expected = array(
'First Post' => 'First Post Body',
'Second Post' => 'Second Post Body',
'Third Post' => 'Third Post Body'
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('list', array(
'fields' => array('Post.id', 'Post.title', 'Author.user'),
'recursive' => 1
));
$expected = array(
'mariano' => array(
1 => 'First Post',
3 => 'Third Post'
),
'larry' => array(
2 => 'Second Post'
));
$this->assertEqual($result, $expected);
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$result = $TestModel->find('list', array(
'fields' => array('User.user', 'User.password')
));
$expected = array(
'mariano' => '5f4dcc3b5aa765d61d8327deb882cf99',
'nate' => '5f4dcc3b5aa765d61d8327deb882cf99',
'larry' => '5f4dcc3b5aa765d61d8327deb882cf99',
'garrett' => '5f4dcc3b5aa765d61d8327deb882cf99'
);
$this->assertEqual($result, $expected);
2010-06-05 03:37:29 +00:00
$TestModel = new ModifiedAuthor();
$result = $TestModel->find('list', array(
'fields' => array('Author.id', 'Author.user')
));
$expected = array(
1 => 'mariano (CakePHP)',
2 => 'nate (CakePHP)',
3 => 'larry (CakePHP)',
4 => 'garrett (CakePHP)'
);
$this->assertEqual($result, $expected);
$TestModel = new Article();
$TestModel->displayField = 'title';
$result = $TestModel->find('list', array(
'conditions' => array('User.user' => 'mariano'),
'recursive' => 0
));
$expected = array(
1 => 'First Article',
3 => 'Third Article'
);
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testFindField method
*
* @access public
* @return void
*/
function testFindField() {
$this->loadFixtures('User');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$TestModel->id = 1;
$result = $TestModel->field('user');
$this->assertEqual($result, 'mariano');
$result = $TestModel->field('User.user');
$this->assertEqual($result, 'mariano');
$TestModel->id = false;
$result = $TestModel->field('user', array(
'user' => 'mariano'
));
$this->assertEqual($result, 'mariano');
$result = $TestModel->field('COUNT(*) AS count', true);
$this->assertEqual($result, 4);
$result = $TestModel->field('COUNT(*)', true);
$this->assertEqual($result, 4);
}
2009-07-26 09:59:51 +00:00
/**
* testFindUnique method
*
* @access public
* @return void
*/
function testFindUnique() {
$this->loadFixtures('User');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$this->assertFalse($TestModel->isUnique(array(
'user' => 'nate'
)));
$TestModel->id = 2;
$this->assertTrue($TestModel->isUnique(array(
'user' => 'nate'
)));
$this->assertFalse($TestModel->isUnique(array(
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99'
)));
}
2009-07-26 09:59:51 +00:00
/**
* test find('count') method
*
* @access public
* @return void
*/
function testFindCount() {
$this->loadFixtures('User', 'Project');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$this->db->getLog(false, true);
$result = $TestModel->find('count');
$this->assertEqual($result, 4);
$fullDebug = $this->db->fullDebug;
$this->db->fullDebug = true;
$TestModel->order = 'User.id';
$result = $TestModel->find('count');
$this->assertEqual($result, 4);
2010-06-05 03:37:29 +00:00
$log = $this->db->getLog();
$this->assertTrue(isset($log['log'][0]['query']));
$this->assertNoPattern('/ORDER\s+BY/', $log['log'][0]['query']);
}
/**
* Test that find('first') does not use the id set to the object.
*
* @return void
*/
function testFindFirstNoIdUsed() {
$this->loadFixtures('Project');
2010-06-05 03:37:29 +00:00
$Project = new Project();
$Project->id = 3;
$result = $Project->find('first');
$this->assertEqual($result['Project']['name'], 'Project 1', 'Wrong record retrieved');
}
/**
* test find with COUNT(DISTINCT field)
*
* @return void
*/
function testFindCountDistinct() {
$skip = $this->skipIf(
$this->db instanceof Sqlite,
'SELECT COUNT(DISTINCT field) is not compatible with SQLite'
);
if ($skip) {
return;
}
$this->loadFixtures('Project');
2010-06-05 03:37:29 +00:00
$TestModel = new Project();
$TestModel->create(array('name' => 'project')) && $TestModel->save();
$TestModel->create(array('name' => 'project')) && $TestModel->save();
$TestModel->create(array('name' => 'project')) && $TestModel->save();
$result = $TestModel->find('count', array('fields' => 'DISTINCT name'));
$this->assertEqual($result, 4);
}
2009-07-26 09:59:51 +00:00
/**
* Test find(count) with Db::expression
*
* @access public
* @return void
*/
function testFindCountWithDbExpressions() {
if ($this->skipIf($this->db instanceof Postgres, 'testFindCountWithExpressions is not compatible with Postgres')) {
return;
}
$this->loadFixtures('Project');
$db = ConnectionManager::getDataSource('test');
2010-06-05 03:37:29 +00:00
$TestModel = new Project();
$result = $TestModel->find('count', array('conditions' => array(
$db->expression('Project.name = \'Project 3\'')
)));
$this->assertEqual($result, 1);
$result = $TestModel->find('count', array('conditions' => array(
'Project.name' => $db->expression('\'Project 3\'')
)));
$this->assertEqual($result, 1);
}
2009-07-26 09:59:51 +00:00
/**
* testFindMagic method
*
* @access public
* @return void
*/
function testFindMagic() {
$this->loadFixtures('User');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$result = $TestModel->findByUser('mariano');
$expected = array(
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
));
$this->assertEqual($result, $expected);
$result = $TestModel->findByPassword('5f4dcc3b5aa765d61d8327deb882cf99');
$expected = array('User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testRead method
*
* @access public
* @return void
*/
function testRead() {
$this->loadFixtures('User', 'Article');
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$result = $TestModel->read();
$this->assertFalse($result);
$TestModel->id = 2;
$result = $TestModel->read();
$expected = array(
'User' => array(
'id' => '2',
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:18:23',
'updated' => '2007-03-17 01:20:31'
));
$this->assertEqual($result, $expected);
$result = $TestModel->read(null, 2);
$expected = array(
'User' => array(
'id' => '2',
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:18:23',
'updated' => '2007-03-17 01:20:31'
));
$this->assertEqual($result, $expected);
$TestModel->id = 2;
$result = $TestModel->read(array('id', 'user'));
$expected = array('User' => array('id' => '2', 'user' => 'nate'));
$this->assertEqual($result, $expected);
$result = $TestModel->read('id, user', 2);
$expected = array(
'User' => array(
'id' => '2',
'user' => 'nate'
));
$this->assertEqual($result, $expected);
$result = $TestModel->bindModel(array('hasMany' => array('Article')));
$this->assertTrue($result);
$TestModel->id = 1;
$result = $TestModel->read('id, user');
$expected = array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Article' => array(
array(
'id' => '1',
'user_id' => '1',
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
array(
'id' => '3',
'user_id' => '1',
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
)));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testRecursiveRead method
*
* @access public
* @return void
*/
function testRecursiveRead() {
$this->loadFixtures(
'User',
'Article',
'Comment',
'Tag',
'ArticlesTag',
'Featured',
'ArticleFeatured'
);
2010-06-05 03:37:29 +00:00
$TestModel = new User();
$result = $TestModel->bindModel(array('hasMany' => array('Article')), false);
$this->assertTrue($result);
$TestModel->recursive = 0;
$result = $TestModel->read('id, user', 1);
$expected = array(
'User' => array('id' => '1', 'user' => 'mariano'),
);
$this->assertEqual($result, $expected);
$TestModel->recursive = 1;
$result = $TestModel->read('id, user', 1);
$expected = array(
'User' => array(
'id' => '1',
'user' => 'mariano'
),
'Article' => array(
array(
'id' => '1',
'user_id' => '1',
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
array(
'id' => '3',
'user_id' => '1',
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
)));
$this->assertEqual($result, $expected);
$TestModel->recursive = 2;
$result = $TestModel->read('id, user', 3);
$expected = array(
'User' => array(
'id' => '3',
'user' => 'larry'
),
'Article' => array(
array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31',
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
),
'Comment' => array(
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31'
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31'
)),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '3',
'tag' => 'tag3',
'created' => '2007-03-18 12:26:23',
'updated' => '2007-03-18 12:28:31'
)))));
$this->assertEqual($result, $expected);
}
function testRecursiveFindAll() {
$this->loadFixtures(
'User',
'Article',
'Comment',
'Tag',
'ArticlesTag',
'Attachment',
'ArticleFeatured',
2010-06-05 03:37:29 +00:00
'ArticleFeaturedsTags',
'Featured',
'Category'
);
2010-06-05 03:37:29 +00:00
$TestModel = new Article();
$result = $TestModel->find('all', array('conditions' => array('Article.user_id' => 1)));
$expected = array(
array(
'Article' => array(
'id' => '1',
'user_id' => '1',
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Comment' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' => 'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
),
array(
'id' => '3',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Third Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:49:23',
'updated' => '2007-03-18 10:51:31'
),
array(
'id' => '4',
'article_id' => '1',
'user_id' => '1',
'comment' => 'Fourth Comment for First Article',
'published' => 'N',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
)
),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '2',
'tag' => 'tag2',
'created' => '2007-03-18 12:24:23',
'updated' => '2007-03-18 12:26:31'
))),
array(
'Article' => array(
'id' => '3',
'user_id' => '1',
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
),
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Comment' => array(),
'Tag' => array()
)
);
$this->assertEqual($result, $expected);
$result = $TestModel->find('all', array(
'conditions' => array('Article.user_id' => 3),
'limit' => 1,
'recursive' => 2
));
$expected = array(
array(
'Article' => array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
),
'Comment' => array(
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31',
'Article' => array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Attachment' => array(
'id' => '1',
'comment_id' => 5,
'attachment' => 'attachment.zip',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
)
),
array(
'id' => '6',
'article_id' => '2',
'user_id' => '2',
'comment' => 'Second Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:55:23',
'updated' => '2007-03-18 10:57:31',
'Article' => array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'User' => array(
'id' => '2',
'user' => 'nate',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:18:23',
'updated' => '2007-03-17 01:20:31'
),
2010-06-05 03:37:29 +00:00
'Attachment' => array()
)
),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '3',
'tag' => 'tag3',
'created' => '2007-03-18 12:26:23',
'updated' => '2007-03-18 12:28:31'
))));
$this->assertEqual($result, $expected);
$Featured = new Featured();
$Featured->recursive = 2;
$Featured->bindModel(array(
'belongsTo' => array(
'ArticleFeatured' => array(
'conditions' => "ArticleFeatured.published = 'Y'",
'fields' => 'id, title, user_id, published'
)
)
));
$Featured->ArticleFeatured->unbindModel(array(
'hasMany' => array('Attachment', 'Comment'),
'hasAndBelongsToMany' => array('Tag'))
);
$orderBy = 'ArticleFeatured.id ASC';
$result = $Featured->find('all', array(
'order' => $orderBy, 'limit' => 3
));
$expected = array(
array(
'Featured' => array(
'id' => '1',
'article_featured_id' => '1',
'category_id' => '1',
'published_date' => '2007-03-31 10:39:23',
'end_date' => '2007-05-15 10:39:23',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'ArticleFeatured' => array(
'id' => '1',
'title' => 'First Article',
'user_id' => '1',
'published' => 'Y',
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Category' => array(),
'Featured' => array(
'id' => '1',
'article_featured_id' => '1',
'category_id' => '1',
'published_date' => '2007-03-31 10:39:23',
'end_date' => '2007-05-15 10:39:23',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)),
'Category' => array(
'id' => '1',
'parent_id' => '0',
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
)),
array(
'Featured' => array(
'id' => '2',
'article_featured_id' => '2',
'category_id' => '1',
'published_date' => '2007-03-31 10:39:23',
'end_date' => '2007-05-15 10:39:23',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'ArticleFeatured' => array(
'id' => '2',
'title' => 'Second Article',
'user_id' => '3',
'published' => 'Y',
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
),
'Category' => array(),
'Featured' => array(
'id' => '2',
'article_featured_id' => '2',
'category_id' => '1',
'published_date' => '2007-03-31 10:39:23',
'end_date' => '2007-05-15 10:39:23',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)),
'Category' => array(
'id' => '1',
'parent_id' => '0',
'name' => 'Category 1',
'created' => '2007-03-18 15:30:23',
'updated' => '2007-03-18 15:32:31'
)));
$this->assertEqual($result, $expected);
}
2009-07-26 09:59:51 +00:00
/**
* testRecursiveFindAllWithLimit method
*
* @access public
* @return void
*/
function testRecursiveFindAllWithLimit() {
$this->loadFixtures('Article', 'User', 'Tag', 'ArticlesTag', 'Comment', 'Attachment');
2010-06-05 03:37:29 +00:00
$TestModel = new Article();
$TestModel->hasMany['Comment']['limit'] = 2;
$result = $TestModel->find('all', array(
'conditions' => array('Article.user_id' => 1)
));
$expected = array(
array(
'Article' => array(
'id' => '1',
'user_id' => '1',
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
),
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Comment' => array(
array(
'id' => '1',
'article_id' => '1',
'user_id' => '2',
'comment' => 'First Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:45:23',
'updated' => '2007-03-18 10:47:31'
),
array(
'id' => '2',
'article_id' => '1',
'user_id' => '4',
'comment' => 'Second Comment for First Article',
'published' => 'Y',
'created' => '2007-03-18 10:47:23',
'updated' => '2007-03-18 10:49:31'
),
),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '2',
'tag' => 'tag2',
'created' => '2007-03-18 12:24:23',
'updated' => '2007-03-18 12:26:31'
))),
array(
'Article' => array(
'id' => '3',
'user_id' => '1',
'title' => 'Third Article',
'body' => 'Third Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:43:23',
'updated' => '2007-03-18 10:45:31'
),
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Comment' => array(),
'Tag' => array()
)
);
$this->assertEqual($result, $expected);
$TestModel->hasMany['Comment']['limit'] = 1;
$result = $TestModel->find('all', array(
'conditions' => array('Article.user_id' => 3),
'limit' => 1,
'recursive' => 2
));
$expected = array(
array(
'Article' => array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'User' => array(
'id' => '3',
'user' => 'larry',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:20:23',
'updated' => '2007-03-17 01:22:31'
),
'Comment' => array(
array(
'id' => '5',
'article_id' => '2',
'user_id' => '1',
'comment' => 'First Comment for Second Article',
'published' => 'Y',
'created' => '2007-03-18 10:53:23',
'updated' => '2007-03-18 10:55:31',
'Article' => array(
'id' => '2',
'user_id' => '3',
'title' => 'Second Article',
'body' => 'Second Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:41:23',
'updated' => '2007-03-18 10:43:31'
),
'User' => array(
'id' => '1',
'user' => 'mariano',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:16:23',
'updated' => '2007-03-17 01:18:31'
),
'Attachment' => array(
'id' => '1',
'comment_id' => 5,
'attachment' => 'attachment.zip',
'created' => '2007-03-18 10:51:23',
'updated' => '2007-03-18 10:53:31'
)
)
),
'Tag' => array(
array(
'id' => '1',
'tag' => 'tag1',
'created' => '2007-03-18 12:22:23',
'updated' => '2007-03-18 12:24:31'
),
array(
'id' => '3',
'tag' => 'tag3',
'created' => '2007-03-18 12:26:23',
'updated' => '2007-03-18 12:28:31'
)
)
)
);
$this->assertEqual($result, $expected);
}
/**
* Testing availability of $this->findQueryType in Model callbacks
*
* @return void
*/
function testFindQueryTypeInCallbacks() {
$this->loadFixtures('Comment');
2010-06-05 03:37:29 +00:00
$Comment = new AgainModifiedComment();
$comments = $Comment->find('all');
$this->assertEqual($comments[0]['Comment']['querytype'], 'all');
$comments = $Comment->find('first');
$this->assertEqual($comments['Comment']['querytype'], 'first');
}
2009-12-11 00:43:09 +00:00
/**
* testVirtualFields()
*
* Test correct fetching of virtual fields
* currently is not possible to do Relation.virtualField
*
* @access public
* @return void
*/
function testVirtualFields() {
$this->loadFixtures('Post', 'Author');
2010-06-05 03:37:29 +00:00
$Post = ClassRegistry::init('Post');
$Post->virtualFields = array('two' => "1 + 1");
$result = $Post->find('first');
$this->assertEqual($result['Post']['two'], 2);
$Post->Author->virtualFields = array('false' => '1 = 2');
$result = $Post->find('first');
$this->assertEqual($result['Post']['two'], 2);
$this->assertFalse((bool)$result['Author']['false']);
$result = $Post->find('first',array('fields' => array('author_id')));
$this->assertFalse(isset($result['Post']['two']));
$this->assertFalse(isset($result['Author']['false']));
$result = $Post->find('first',array('fields' => array('author_id', 'two')));
$this->assertEqual($result['Post']['two'], 2);
$this->assertFalse(isset($result['Author']['false']));
$result = $Post->find('first',array('fields' => array('two')));
$this->assertEqual($result['Post']['two'], 2);
$Post->id = 1;
$result = $Post->field('two');
$this->assertEqual($result, 2);
$result = $Post->find('first',array(
'conditions' => array('two' => 2),
'limit' => 1
));
$this->assertEqual($result['Post']['two'], 2);
$result = $Post->find('first',array(
'conditions' => array('two <' => 3),
'limit' => 1
));
$this->assertEqual($result['Post']['two'], 2);
$result = $Post->find('first',array(
'conditions' => array('NOT' => array('two >' => 3)),
'limit' => 1
));
$this->assertEqual($result['Post']['two'], 2);
2010-06-05 03:37:29 +00:00
$dbo = $Post->getDataSource();
$Post->virtualFields = array('other_field' => 'Post.id + 1');
2010-05-30 16:51:48 +00:00
$result = $Post->find('first', array(
'conditions' => array('other_field' => 3),
'limit' => 1
));
$this->assertEqual($result['Post']['id'], 2);
$Post->virtualFields = array('other_field' => 'Post.id + 1');
2010-05-31 00:28:00 +00:00
$result = $Post->find('all', array(
2010-05-30 16:51:48 +00:00
'fields' => array($dbo->calculate($Post, 'max', array('other_field')))
));
$this->assertEqual($result[0][0]['other_field'], 4);
ClassRegistry::flush();
2010-06-05 03:37:29 +00:00
$Writing = ClassRegistry::init(array('class' => 'Post', 'alias' => 'Writing'), 'Model');
$Writing->virtualFields = array('two' => "1 + 1");
$result = $Writing->find('first');
$this->assertEqual($result['Writing']['two'], 2);
$Post->create();
$Post->virtualFields = array('other_field' => 'COUNT(Post.id) + 1');
$result = $Post->field('other_field');
$this->assertEqual($result, 4);
}
/**
* testVirtualFieldsMysql()
*
* Test correct fetching of virtual fields
* currently is not possible to do Relation.virtualField
*
*/
public function testVirtualFieldsMysql() {
if ($this->skipIf(!($this->db instanceof Mysql), 'The rest of virtualFieds test is not compatible with Postgres')) {
return;
}
$this->loadFixtures('Post', 'Author');
2010-06-05 03:37:29 +00:00
$Post = ClassRegistry::init('Post');
$Post->create();
$Post->virtualFields = array(
'low_title' => 'lower(Post.title)',
'unique_test_field' => 'COUNT(Post.id)'
);
$expectation = array(
'Post' => array(
'low_title' => 'first post',
'unique_test_field' => 1
)
);
$result = $Post->find('first', array(
'fields' => array_keys($Post->virtualFields),
'group' => array('low_title')
));
$this->assertEqual($result, $expectation);
2010-06-05 03:37:29 +00:00
$Author = ClassRegistry::init('Author');
$Author->virtualFields = array(
'full_name' => 'CONCAT(Author.user, " ", Author.id)'
);
$result = $Author->find('first', array(
'conditions' => array('Author.user' => 'mariano'),
'fields' => array('Author.password', 'Author.full_name'),
'recursive' => -1
));
$this->assertTrue(isset($result['Author']['full_name']));
$result = $Author->find('first', array(
'conditions' => array('Author.user' => 'mariano'),
'fields' => array('Author.full_name', 'Author.password'),
'recursive' => -1
));
$this->assertTrue(isset($result['Author']['full_name']));
}
/**
* test that virtual fields work when they don't contain functions.
*
* @return void
*/
function testVirtualFieldAsAString() {
$this->loadFixtures('Post', 'Author');
2010-06-05 03:37:29 +00:00
$Post = new Post();
$Post->virtualFields = array(
'writer' => 'Author.user'
);
$result = $Post->find('first');
$this->assertTrue(isset($result['Post']['writer']), 'virtual field not fetched %s');
}
/**
* test that isVirtualField will accept both aliased and non aliased fieldnames
*
* @return void
*/
function testIsVirtualField() {
$this->loadFixtures('Post');
2010-06-05 03:37:29 +00:00
$Post = ClassRegistry::init('Post');
$Post->virtualFields = array('other_field' => 'COUNT(Post.id) + 1');
$this->assertTrue($Post->isVirtualField('other_field'));
$this->assertTrue($Post->isVirtualField('Post.other_field'));
$this->assertFalse($Post->isVirtualField('id'));
$this->assertFalse($Post->isVirtualField('Post.id'));
$this->assertFalse($Post->isVirtualField(array()));
}
/**
* test that getting virtual fields works with and without model alias attached
*
* @return void
*/
function testGetVirtualField() {
$this->loadFixtures('Post');
2010-06-05 03:37:29 +00:00
$Post = ClassRegistry::init('Post');
$Post->virtualFields = array('other_field' => 'COUNT(Post.id) + 1');
$this->assertEqual($Post->getVirtualField('other_field'), $Post->virtualFields['other_field']);
$this->assertEqual($Post->getVirtualField('Post.other_field'), $Post->virtualFields['other_field']);
}
}