mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 11:06:15 +00:00
Allow saving new records with pre specified primary key value with treebehavior.
This commit is contained in:
parent
4acc687dcd
commit
5de492fb25
3 changed files with 63 additions and 1 deletions
|
@ -178,7 +178,7 @@ class TreeBehavior extends ModelBehavior {
|
|||
extract($this->settings[$Model->alias]);
|
||||
|
||||
$this->_addToWhitelist($Model, array($left, $right));
|
||||
if (!$Model->id) {
|
||||
if (!$Model->id || !$Model->exists()) {
|
||||
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]),
|
||||
|
|
|
@ -369,6 +369,36 @@ class TreeBehaviorNumberTest extends CakeTestCase {
|
|||
$this->assertSame($validTree, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* testAddWithPreSpecifiedId method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testAddWithPreSpecifiedId() {
|
||||
extract($this->settings);
|
||||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find('first', array(
|
||||
'fields' => array('id'),
|
||||
'conditions' => array($modelClass . '.name' => '1.1')
|
||||
));
|
||||
|
||||
$this->Tree->create();
|
||||
$result = $this->Tree->save(array($modelClass => array(
|
||||
'id' => 100,
|
||||
'name' => 'testAddMiddle',
|
||||
$parentField => $data[$modelClass]['id'])
|
||||
));
|
||||
$expected = array_merge(
|
||||
array($modelClass => array('id' => 100, 'name' => 'testAddMiddle', $parentField => '2')),
|
||||
$result
|
||||
);
|
||||
$this->assertSame($expected, $result);
|
||||
|
||||
$this->assertTrue($this->Tree->verify());
|
||||
}
|
||||
|
||||
/**
|
||||
* testAddInvalid method
|
||||
*
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
App::uses('Model', 'Model');
|
||||
App::uses('AppModel', 'Model');
|
||||
App::uses('String', 'Utility');
|
||||
require_once dirname(dirname(__FILE__)) . DS . 'models.php';
|
||||
|
||||
/**
|
||||
|
@ -56,6 +57,37 @@ class TreeBehaviorUuidTest extends CakeTestCase {
|
|||
*/
|
||||
public $fixtures = array('core.uuid_tree');
|
||||
|
||||
/**
|
||||
* testAddWithPreSpecifiedId method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testAddWithPreSpecifiedId() {
|
||||
extract($this->settings);
|
||||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find('first', array(
|
||||
'fields' => array('id'),
|
||||
'conditions' => array($modelClass . '.name' => '1.1')
|
||||
));
|
||||
|
||||
$id = String::uuid();
|
||||
$this->Tree->create();
|
||||
$result = $this->Tree->save(array($modelClass => array(
|
||||
'id' => $id,
|
||||
'name' => 'testAddMiddle',
|
||||
$parentField => $data[$modelClass]['id'])
|
||||
));
|
||||
$expected = array_merge(
|
||||
array($modelClass => array('id' => $id, 'name' => 'testAddMiddle', $parentField => '2')),
|
||||
$result
|
||||
);
|
||||
$this->assertSame($expected, $result);
|
||||
|
||||
$this->assertTrue($this->Tree->verify());
|
||||
}
|
||||
|
||||
/**
|
||||
* testMovePromote method
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue