Merge branch 'master' into 2.6

This commit is contained in:
mark_story 2014-11-14 21:25:09 -05:00
commit decce4daf2
6 changed files with 140 additions and 91 deletions

View file

@ -129,6 +129,7 @@ class TreeBehavior extends ModelBehavior {
$data = $Model->find('first', array(
'conditions' => array($Model->escapeField($Model->primaryKey) => $Model->id),
'fields' => array($Model->escapeField($left), $Model->escapeField($right)),
'order' => false,
'recursive' => -1));
if ($data) {
$this->_deletedRow[$Model->alias] = current($data);
@ -185,7 +186,9 @@ class TreeBehavior extends ModelBehavior {
if (array_key_exists($parent, $Model->data[$Model->alias]) && $Model->data[$Model->alias][$parent]) {
$parentNode = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $Model->data[$Model->alias][$parent]),
'fields' => array($Model->primaryKey, $right), 'recursive' => $recursive
'fields' => array($Model->primaryKey, $right),
'recursive' => $recursive,
'order' => false,
));
if (!$parentNode) {
return false;
@ -208,7 +211,9 @@ class TreeBehavior extends ModelBehavior {
} else {
$values = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $Model->id),
'fields' => array($Model->primaryKey, $parent, $left, $right), 'recursive' => $recursive)
'fields' => array($Model->primaryKey, $parent, $left, $right),
'order' => false,
'recursive' => $recursive)
);
if (empty($values)) {
@ -218,7 +223,9 @@ class TreeBehavior extends ModelBehavior {
$parentNode = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $Model->data[$Model->alias][$parent]),
'fields' => array($Model->primaryKey, $left, $right), 'recursive' => $recursive
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive
));
if (!$parentNode) {
return false;
@ -268,7 +275,11 @@ class TreeBehavior extends ModelBehavior {
} elseif ($Model->id === $id && isset($Model->data[$Model->alias][$left]) && isset($Model->data[$Model->alias][$right])) {
$data = $Model->data[$Model->alias];
} else {
$data = $Model->find('first', array('conditions' => array($scope, $Model->escapeField() => $id), 'recursive' => $recursive));
$data = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $id),
'order' => false,
'recursive' => $recursive
));
if (!$data) {
return 0;
}
@ -325,7 +336,8 @@ class TreeBehavior extends ModelBehavior {
$result = array_values((array)$Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $id),
'fields' => array($left, $right),
'recursive' => $recursive
'recursive' => $recursive,
'order' => false,
)));
if (empty($result) || !isset($result[0])) {
@ -425,11 +437,21 @@ class TreeBehavior extends ModelBehavior {
if ($overrideRecursive !== null) {
$recursive = $overrideRecursive;
}
$parentId = $Model->find('first', array('conditions' => array($Model->primaryKey => $id), 'fields' => array($parent), 'recursive' => -1));
$parentId = $Model->find('first', array(
'conditions' => array($Model->primaryKey => $id),
'fields' => array($parent),
'order' => false,
'recursive' => -1
));
if ($parentId) {
$parentId = $parentId[$Model->alias][$parent];
$parent = $Model->find('first', array('conditions' => array($Model->escapeField() => $parentId), 'fields' => $fields, 'recursive' => $recursive));
$parent = $Model->find('first', array(
'conditions' => array($Model->escapeField() => $parentId),
'fields' => $fields,
'order' => false,
'recursive' => $recursive
));
return $parent;
}
@ -458,7 +480,12 @@ class TreeBehavior extends ModelBehavior {
if ($overrideRecursive !== null) {
$recursive = $overrideRecursive;
}
$result = $Model->find('first', array('conditions' => array($Model->escapeField() => $id), 'fields' => array($left, $right), 'recursive' => $recursive));
$result = $Model->find('first', array(
'conditions' => array($Model->escapeField() => $id),
'fields' => array($left, $right),
'order' => false,
'recursive' => $recursive
));
if ($result) {
$result = array_values($result);
} else {
@ -467,7 +494,9 @@ class TreeBehavior extends ModelBehavior {
$item = $result[0];
$results = $Model->find('all', array(
'conditions' => array($scope, $Model->escapeField($left) . ' <=' => $item[$left], $Model->escapeField($right) . ' >=' => $item[$right]),
'fields' => $fields, 'order' => array($Model->escapeField($left) => 'asc'), 'recursive' => $recursive
'fields' => $fields, 'order' => array($Model->escapeField($left) => 'asc'),
'order' => false,
'recursive' => $recursive
));
return $results;
}
@ -496,12 +525,16 @@ class TreeBehavior extends ModelBehavior {
extract($this->settings[$Model->alias]);
list($node) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $id),
'fields' => array($Model->primaryKey, $left, $right, $parent), 'recursive' => $recursive
'fields' => array($Model->primaryKey, $left, $right, $parent),
'order' => false,
'recursive' => $recursive
)));
if ($node[$parent]) {
list($parentNode) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $node[$parent]),
'fields' => array($Model->primaryKey, $left, $right), 'recursive' => $recursive
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive
)));
if (($node[$right] + 1) == $parentNode[$right]) {
return false;
@ -509,7 +542,9 @@ class TreeBehavior extends ModelBehavior {
}
$nextNode = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField($left) => ($node[$right] + 1)),
'fields' => array($Model->primaryKey, $left, $right), 'recursive' => $recursive)
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive)
);
if ($nextNode) {
list($nextNode) = array_values($nextNode);
@ -554,12 +589,16 @@ class TreeBehavior extends ModelBehavior {
extract($this->settings[$Model->alias]);
list($node) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $id),
'fields' => array($Model->primaryKey, $left, $right, $parent), 'recursive' => $recursive
'fields' => array($Model->primaryKey, $left, $right, $parent),
'order' => false,
'recursive' => $recursive
)));
if ($node[$parent]) {
list($parentNode) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $node[$parent]),
'fields' => array($Model->primaryKey, $left, $right), 'recursive' => $recursive
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive
)));
if (($node[$left] - 1) == $parentNode[$left]) {
return false;
@ -568,6 +607,7 @@ class TreeBehavior extends ModelBehavior {
$previousNode = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField($right) => ($node[$left] - 1)),
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive
));
@ -620,7 +660,8 @@ class TreeBehavior extends ModelBehavior {
'recursive' => 0,
'conditions' => array($scope, array(
'NOT' => array($Model->escapeField($parent) => null), $Model->VerifyParent->escapeField() => null
))
)),
'order' => false,
));
$Model->unbindModel(array('belongsTo' => array('VerifyParent')));
if ($missingParents) {
@ -790,6 +831,7 @@ class TreeBehavior extends ModelBehavior {
list($node) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $id),
'fields' => array($Model->primaryKey, $left, $right, $parent),
'order' => false,
'recursive' => $recursive
)));
@ -803,6 +845,7 @@ class TreeBehavior extends ModelBehavior {
list($parentNode) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $node[$parent]),
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive
)));
} else {
@ -871,7 +914,11 @@ class TreeBehavior extends ModelBehavior {
}
}
}
$node = $Model->find('first', array('conditions' => array($scope, $Model->escapeField($right) . '< ' . $Model->escapeField($left)), 'recursive' => 0));
$node = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField($right) . '< ' . $Model->escapeField($left)),
'order' => false,
'recursive' => 0
));
if ($node) {
$errors[] = array('node', $node[$Model->alias][$Model->primaryKey], 'left greater than right.');
}
@ -882,7 +929,8 @@ class TreeBehavior extends ModelBehavior {
'fields' => array($Model->primaryKey, $left, $right, $parent)
))));
foreach ($Model->find('all', array('conditions' => $scope, 'recursive' => 0)) as $instance) {
$rows = $Model->find('all', array('conditions' => $scope, 'recursive' => 0));
foreach ($rows as $instance) {
if ($instance[$Model->alias][$left] === null || $instance[$Model->alias][$right] === null) {
$errors[] = array('node', $instance[$Model->alias][$Model->primaryKey],
'has invalid left or right values');
@ -927,6 +975,7 @@ class TreeBehavior extends ModelBehavior {
list($node) = array_values($Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $Model->id),
'fields' => array($Model->primaryKey, $parent, $left, $right),
'order' => false,
'recursive' => $recursive
)));
$edge = $this->_getMax($Model, $scope, $right, $recursive, $created);
@ -938,6 +987,7 @@ class TreeBehavior extends ModelBehavior {
$values = $Model->find('first', array(
'conditions' => array($scope, $Model->escapeField() => $parentId),
'fields' => array($Model->primaryKey, $left, $right),
'order' => false,
'recursive' => $recursive
));
@ -1009,6 +1059,7 @@ class TreeBehavior extends ModelBehavior {
'conditions' => $scope,
'fields' => $db->calculate($Model, 'max', array($name, $right)),
'recursive' => $recursive,
'order' => false,
'callbacks' => false
)));
return (empty($edge[$right])) ? 0 : $edge[$right];
@ -1030,6 +1081,7 @@ class TreeBehavior extends ModelBehavior {
'conditions' => $scope,
'fields' => $db->calculate($Model, 'min', array($name, $left)),
'recursive' => $recursive,
'order' => false,
'callbacks' => false
)));
return (empty($edge[$left])) ? 0 : $edge[$left];

View file

@ -300,11 +300,16 @@ class Sqlite extends DboSource {
// PDO::getColumnMeta is experimental and does not work with sqlite3,
// so try to figure it out based on the querystring
$querystring = $results->queryString;
if (stripos($querystring, 'SELECT') === 0) {
$last = strripos($querystring, 'FROM');
if ($last !== false) {
$selectpart = substr($querystring, 7, $last - 8);
$selects = String::tokenize($selectpart, ',', '(', ')');
if (stripos($querystring, 'SELECT') === 0 && stripos($querystring, 'FROM') > 0) {
$selectpart = substr($querystring, 7);
$selects = array();
foreach (String::tokenize($selectpart, ',', '(', ')') as $part) {
$fromPos = stripos($part, ' FROM ');
if ($fromPos !== false) {
$selects[] = trim(substr($part, 0, $fromPos));
break;
}
$selects[] = $part;
}
} elseif (strpos($querystring, 'PRAGMA table_info') === 0) {
$selects = array('cid', 'name', 'type', 'notnull', 'dflt_value', 'pk');

View file

@ -3383,9 +3383,10 @@ class Model extends Object implements CakeEventListener {
}
if (!is_array($fields)) {
$fields = func_get_args();
if (is_bool($fields[count($fields) - 1])) {
$or = $fields[count($fields) - 1];
unset($fields[count($fields) - 1]);
$fieldCount = count($fields) - 1;
if (is_bool($fields[$fieldCount])) {
$or = $fields[$fieldCount];
unset($fields[$fieldCount]);
}
}

View file

@ -64,7 +64,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testInitialize() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->find('count');
@ -82,7 +81,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectInvalidLeft() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->findByName('1.1');
@ -93,7 +91,7 @@ class TreeBehaviorNumberTest extends CakeTestCase {
$this->Tree->create();
$this->Tree->save($save);
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -110,7 +108,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectInvalidRight() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->findByName('1.1');
@ -121,7 +118,7 @@ class TreeBehaviorNumberTest extends CakeTestCase {
$this->Tree->create();
$this->Tree->save($save);
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -138,7 +135,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectInvalidParent() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->findByName('1.1');
@ -147,7 +143,7 @@ class TreeBehaviorNumberTest extends CakeTestCase {
$this->Tree->updateAll(array($parentField => null), array('id' => $result[$modelClass]['id']));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -164,14 +160,13 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectNoneExistentParent() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->findByName('1.1');
$this->Tree->updateAll(array($parentField => 999999), array('id' => $result[$modelClass]['id']));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover('MPTT');
$this->assertTrue($result);
@ -188,7 +183,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRecoverUsingParentMode() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->Behaviors->disable('Tree');
$this->Tree->create();
@ -212,7 +206,7 @@ class TreeBehaviorNumberTest extends CakeTestCase {
$this->Tree->Behaviors->enable('Tree');
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -244,7 +238,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRecoverUsingParentModeAndDelete() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->Behaviors->disable('Tree');
$this->Tree->create();
@ -280,7 +273,7 @@ class TreeBehaviorNumberTest extends CakeTestCase {
))));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$count = $this->Tree->find('count');
$this->assertEquals(6, $count);
@ -318,14 +311,13 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRecoverFromMissingParent() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->findByName('1.1');
$this->Tree->updateAll(array($parentField => 999999), array('id' => $result[$modelClass]['id']));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -342,13 +334,12 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectInvalidParents() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->updateAll(array($parentField => null));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -365,13 +356,12 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectInvalidLftsRghts() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->updateAll(array($leftField => 0, $rightField => 0));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$this->Tree->recover();
@ -387,7 +377,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDetectEqualLftsRghts() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 3);
$result = $this->Tree->findByName('1.1');
@ -398,7 +387,7 @@ class TreeBehaviorNumberTest extends CakeTestCase {
array($rightField . ' >' => $result[$modelClass][$leftField]));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -415,7 +404,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testAddOrphan() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->create();
@ -436,7 +424,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testAddMiddle() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
@ -468,7 +455,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testAddWithPreSpecifiedId() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array(
@ -499,7 +485,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testAddInvalid() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -525,7 +510,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testAddNotIndexedByModel() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->create();
@ -546,7 +530,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMovePromote() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -573,7 +556,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveWithWhitelist() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -601,7 +583,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testInsertWithWhitelist() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->whitelist = array('name', $parentField);
@ -621,7 +602,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveBefore() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -650,7 +630,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveAfter() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -679,7 +658,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveDemoteInvalid() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -712,7 +690,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveInvalid() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -737,7 +714,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveSelfInvalid() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->id = null;
@ -763,7 +739,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveUpSuccess() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.2')));
@ -785,7 +760,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveUpFail() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.1')));
@ -808,7 +782,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveUp2() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 10);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
@ -839,7 +812,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveUpFirst() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 10);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
@ -870,7 +842,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveDownSuccess() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
@ -892,7 +863,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveDownFail() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2')));
@ -914,7 +884,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveDownLast() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 10);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
@ -945,7 +914,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveDown2() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 10);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
@ -976,7 +944,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testSaveNoMove() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 10);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
@ -1007,7 +974,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testMoveToRootAndMoveUp() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(1, 1);
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
$this->Tree->id = $data[$modelClass]['id'];
@ -1032,7 +998,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDelete() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$initialCount = $this->Tree->find('count');
@ -1068,7 +1033,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testDeleteDoesNotExist() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$this->Tree->delete(99999);
}
@ -1081,7 +1045,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRemove() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$initialCount = $this->Tree->find('count');
$result = $this->Tree->findByName('1.1');
@ -1114,7 +1077,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRemoveLastTopParent() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$initialCount = $this->Tree->find('count');
@ -1148,7 +1110,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRemoveNoChildren() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$initialCount = $this->Tree->find('count');
@ -1183,7 +1144,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRemoveAndDelete() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$initialCount = $this->Tree->find('count');
@ -1218,7 +1178,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testRemoveAndDeleteNoChildren() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$initialCount = $this->Tree->find('count');
@ -1251,7 +1210,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testChildren() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
@ -1282,7 +1240,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testCountChildren() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
@ -1308,7 +1265,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testGetParentNode() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2.2')));
@ -1327,7 +1283,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testGetPath() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2.2')));
@ -1348,7 +1303,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testNoAmbiguousColumn() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->bindModel(array('belongsTo' => array('Dummy' =>
array('className' => $modelClass, 'foreignKey' => $parentField, 'conditions' => array('Dummy.id' => null)))), false);
$this->Tree->initialize(2, 2);
@ -1381,7 +1335,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testReorderTree() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(3, 3);
$nodes = $this->Tree->find('list', array('order' => $leftField));
@ -1413,7 +1366,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testReorderBigTreeWithQueryCaching() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 10);
$original = $this->Tree->cacheQueries;
@ -1431,7 +1383,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testGenerateTreeListWithSelfJoin() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->bindModel(array('belongsTo' => array('Dummy' =>
array('className' => $modelClass, 'foreignKey' => $parentField, 'conditions' => array('Dummy.id' => null)))), false);
$this->Tree->initialize(2, 2);
@ -1449,7 +1400,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testGenerateTreeListFormatting() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(2, 2);
$result = $this->Tree->generateTreeList(
@ -1470,7 +1420,6 @@ class TreeBehaviorNumberTest extends CakeTestCase {
public function testArraySyntax() {
extract($this->settings);
$this->Tree = new $modelClass();
$this->Tree->order = null;
$this->Tree->initialize(3, 3);
$this->assertSame($this->Tree->childCount(2), $this->Tree->childCount(array('id' => 2)));
$this->assertSame($this->Tree->getParentNode(2), $this->Tree->getParentNode(array('id' => 2)));

View file

@ -438,7 +438,7 @@ class TreeBehaviorScopedTest extends CakeTestCase {
$this->Tree->Behaviors->enable('Tree');
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -485,7 +485,7 @@ class TreeBehaviorScopedTest extends CakeTestCase {
$this->Tree->updateAll(array($parentField => 999999), array('id' => $result[$modelClass]['id']));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -515,7 +515,7 @@ class TreeBehaviorScopedTest extends CakeTestCase {
$this->Tree->updateAll(array($parentField => null));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);
@ -545,7 +545,7 @@ class TreeBehaviorScopedTest extends CakeTestCase {
$this->Tree->updateAll(array($leftField => 0, $rightField => 0));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$this->Tree->recover();
@ -579,7 +579,7 @@ class TreeBehaviorScopedTest extends CakeTestCase {
array($rightField . ' >' => $result[$modelClass][$leftField]));
$result = $this->Tree->verify();
$this->assertNotSame($result, true);
$this->assertNotSame(true, $result);
$result = $this->Tree->recover();
$this->assertTrue($result);

View file

@ -518,4 +518,46 @@ class SqliteTest extends CakeTestCase {
$this->assertNotContains($scientificNotation, $result);
}
/**
* Test that fields are parsed out in a reasonable fashion.
*
* @return void
*/
public function testFetchRowColumnParsing() {
$this->loadFixtures('User');
$sql = 'SELECT "User"."id", "User"."user", "User"."password", "User"."created", (1 + 1) AS "two" ' .
'FROM "users" AS "User" WHERE ' .
'"User"."id" IN (SELECT MAX("id") FROM "users") ' .
'OR "User.id" IN (5, 6, 7, 8)';
$result = $this->Dbo->fetchRow($sql);
$expected = array(
'User' => array(
'id' => 4,
'user' => 'garrett',
'password' => '5f4dcc3b5aa765d61d8327deb882cf99',
'created' => '2007-03-17 01:22:23'
),
0 => array(
'two' => 2
)
);
$this->assertEquals($expected, $result);
$sql = 'SELECT "User"."id", "User"."user" ' .
'FROM "users" AS "User" WHERE "User"."id" = 4 ' .
'UNION ' .
'SELECT "User"."id", "User"."user" ' .
'FROM "users" AS "User" WHERE "User"."id" = 3';
$result = $this->Dbo->fetchRow($sql);
$expected = array(
'User' => array(
'id' => 3,
'user' => 'larry',
),
);
$this->assertEquals($expected, $result);
}
}