1
0
Fork 0
mirror of https://github.com/Oreolek/yii2-nested-sets.git synced 2024-06-26 11:40:47 +03:00
yii2-nested-sets/tests/NestedSetsBehaviorTest.php

614 lines
21 KiB
PHP
Raw Normal View History

2015-01-01 08:10:10 +02:00
<?php
/**
2015-01-05 10:03:13 +02:00
* @link https://github.com/creocoder/yii2-nested-sets
2015-01-01 08:10:10 +02:00
* @copyright Copyright (c) 2015 Alexander Kochetov
* @license http://opensource.org/licenses/BSD-3-Clause
*/
namespace tests;
use tests\models\MultipleRootsTree;
2015-01-01 08:10:10 +02:00
use tests\models\Tree;
2015-01-03 17:10:05 +02:00
use yii\helpers\ArrayHelper;
2015-01-01 08:10:10 +02:00
/**
* NestedSetsBehaviorTest
*/
class NestedSetsBehaviorTest extends DatabaseTestCase
{
2015-01-04 13:26:18 +02:00
public function testMakeRootNew()
2015-01-01 08:10:10 +02:00
{
2015-01-04 13:26:18 +02:00
$dataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/clean.xml');
$this->getDatabaseTester()->setDataSet($dataSet);
$this->getDatabaseTester()->onSetUp();
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'Root']);
2015-01-01 08:10:10 +02:00
$this->assertTrue($node->makeRoot());
2015-01-06 12:33:45 +02:00
$node = new MultipleRootsTree(['name' => 'Root']);
$this->assertTrue($node->makeRoot());
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-make-root-new.xml');
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-01 08:10:10 +02:00
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testMakeRootNewExceptionIsRaisedWhenTreeAttributeIsFalseAndRootIsExists()
2015-01-01 08:10:10 +02:00
{
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'Root']);
2015-01-01 08:10:10 +02:00
$node->makeRoot();
}
2015-01-04 13:26:18 +02:00
public function testPrependToNew()
{
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'New node']);
$this->assertTrue($node->prependTo(Tree::findOne(9)));
2015-01-03 07:49:37 +02:00
2015-01-06 12:33:45 +02:00
$node = new MultipleRootsTree(['name' => 'New node']);
2015-01-03 07:49:37 +02:00
$this->assertTrue($node->prependTo(MultipleRootsTree::findOne(31)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-prepend-to-new.xml');
2015-01-03 07:49:37 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testPrependToNewExceptionIsRaisedWhenTargetIsNewRecord()
{
$node = new Tree(['name' => 'New node']);
$node->prependTo(new Tree());
}
2015-01-04 13:26:18 +02:00
public function testAppendToNew()
{
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'New node']);
$this->assertTrue($node->appendTo(Tree::findOne(9)));
2015-01-03 07:49:37 +02:00
2015-01-06 12:33:45 +02:00
$node = new MultipleRootsTree(['name' => 'New node']);
2015-01-03 07:49:37 +02:00
$this->assertTrue($node->appendTo(MultipleRootsTree::findOne(31)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-append-to-new.xml');
2015-01-03 07:49:37 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
/**
* @expectedException \yii\db\Exception
*/
public function testAppendNewToExceptionIsRaisedWhenTargetIsNewRecord()
{
$node = new Tree(['name' => 'New node']);
$node->appendTo(new Tree());
}
2015-01-04 13:26:18 +02:00
public function testInsertBeforeNew()
{
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'New node']);
2015-01-03 05:14:42 +02:00
$this->assertTrue($node->insertBefore(Tree::findOne(9)));
2015-01-03 07:49:37 +02:00
2015-01-06 12:33:45 +02:00
$node = new MultipleRootsTree(['name' => 'New node']);
2015-01-03 07:49:37 +02:00
$this->assertTrue($node->insertBefore(MultipleRootsTree::findOne(31)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-before-new.xml');
2015-01-03 07:49:37 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertBeforeNewExceptionIsRaisedWhenTargetIsNewRecord()
{
$node = new Tree(['name' => 'New node']);
$node->insertBefore(new Tree());
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertBeforeNewExceptionIsRaisedWhenTargetIsRoot()
{
$node = new Tree(['name' => 'New node']);
$node->insertBefore(Tree::findOne(1));
}
2015-01-04 13:26:18 +02:00
public function testInsertAfterNew()
{
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'New node']);
2015-01-03 05:14:42 +02:00
$this->assertTrue($node->insertAfter(Tree::findOne(9)));
2015-01-03 07:49:37 +02:00
2015-01-06 12:33:45 +02:00
$node = new MultipleRootsTree(['name' => 'New node']);
2015-01-03 07:49:37 +02:00
$this->assertTrue($node->insertAfter(MultipleRootsTree::findOne(31)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-after-new.xml');
2015-01-03 07:49:37 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertAfterNewExceptionIsRaisedWhenTargetIsNewRecord()
{
$node = new Tree(['name' => 'New node']);
$node->insertAfter(new Tree());
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertAfterNewExceptionIsRaisedWhenTargetIsRoot()
{
$node = new Tree(['name' => 'New node']);
$node->insertAfter(Tree::findOne(1));
}
2015-01-04 13:26:18 +02:00
public function testMakeRootExists()
{
$node = MultipleRootsTree::findOne(31);
$node->name = 'Updated node 2';
$this->assertTrue($node->makeRoot());
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['multiple_roots_tree']);
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-make-root-exists.xml');
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 15:35:59 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testMakeRootExistsExceptionIsRaisedWhenTreeAttributeIsFalse()
2015-01-03 15:35:59 +02:00
{
$node = Tree::findOne(9);
$node->makeRoot();
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testMakeRootExistsExceptionIsRaisedWhenItsRoot()
2015-01-03 15:35:59 +02:00
{
$node = MultipleRootsTree::findOne(23);
$node->makeRoot();
}
2015-01-04 13:26:18 +02:00
public function testPrependToExistsUp()
{
2015-01-03 16:38:30 +02:00
$node = Tree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->prependTo(Tree::findOne(2)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->prependTo(MultipleRootsTree::findOne(24)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-prepend-to-exists-up.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
public function testPrependToExistsDown()
{
$node = Tree::findOne(9);
$node->name = 'Updated node 2';
$this->assertTrue($node->prependTo(Tree::findOne(16)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->prependTo(MultipleRootsTree::findOne(38)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-prepend-to-exists-down.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
2015-01-03 16:38:30 +02:00
2015-01-04 13:26:18 +02:00
public function testPrependToExistsAnotherTree()
{
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->prependTo(MultipleRootsTree::findOne(53)));
2015-01-04 13:26:18 +02:00
2015-01-03 16:38:30 +02:00
$dataSet = $this->getConnection()->createDataSet(['multiple_roots_tree']);
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-prepend-to-exists-another-tree.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 15:47:26 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testPrependToExistsExceptionIsRaisedWhenTargetIsNewRecord()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->prependTo(new Tree());
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testPrependToExistsExceptionIsRaisedWhenTargetIsSame()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->prependTo(Tree::findOne(9));
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testPrependToExistsExceptionIsRaisedWhenTargetIsChild()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->prependTo(Tree::findOne(11));
}
2015-01-04 13:26:18 +02:00
public function testAppendToExistsUp()
{
2015-01-03 16:38:30 +02:00
$node = Tree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->appendTo(Tree::findOne(2)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->appendTo(MultipleRootsTree::findOne(24)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-append-to-exists-up.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
public function testAppendToExistsDown()
{
$node = Tree::findOne(9);
$node->name = 'Updated node 2';
$this->assertTrue($node->appendTo(Tree::findOne(16)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->appendTo(MultipleRootsTree::findOne(38)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-append-to-exists-down.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
2015-01-03 16:38:30 +02:00
2015-01-04 13:26:18 +02:00
public function testAppendToExistsAnotherTree()
{
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->appendTo(MultipleRootsTree::findOne(53)));
2015-01-04 13:26:18 +02:00
2015-01-03 16:38:30 +02:00
$dataSet = $this->getConnection()->createDataSet(['multiple_roots_tree']);
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-append-to-exists-another-tree.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 15:47:26 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testAppendToExistsExceptionIsRaisedWhenTargetIsNewRecord()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->appendTo(new Tree());
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testAppendToExistsExceptionIsRaisedWhenTargetIsSame()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->appendTo(Tree::findOne(9));
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testAppendToExistsExceptionIsRaisedWhenTargetIsChild()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->appendTo(Tree::findOne(11));
}
2015-01-04 13:26:18 +02:00
public function testInsertBeforeExistsUp()
{
2015-01-03 16:38:30 +02:00
$node = Tree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertBefore(Tree::findOne(2)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertBefore(MultipleRootsTree::findOne(24)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-before-exists-up.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
public function testInsertBeforeExistsDown()
{
$node = Tree::findOne(9);
$node->name = 'Updated node 2';
$this->assertTrue($node->insertBefore(Tree::findOne(16)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertBefore(MultipleRootsTree::findOne(38)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-before-exists-down.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
2015-01-03 16:38:30 +02:00
2015-01-04 13:26:18 +02:00
public function testInsertBeforeExistsAnotherTree()
{
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertBefore(MultipleRootsTree::findOne(53)));
2015-01-04 13:26:18 +02:00
2015-01-03 16:38:30 +02:00
$dataSet = $this->getConnection()->createDataSet(['multiple_roots_tree']);
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-before-exists-another-tree.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 15:47:26 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertBeforeExistsExceptionIsRaisedWhenTargetIsNewRecord()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->insertBefore(new Tree());
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertBeforeExistsExceptionIsRaisedWhenTargetIsSame()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->insertBefore(Tree::findOne(9));
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertBeforeExistsExceptionIsRaisedWhenTargetIsChild()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->insertBefore(Tree::findOne(11));
}
2015-01-04 09:10:08 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertBeforeExistsExceptionIsRaisedWhenTargetIsRoot()
2015-01-04 09:10:08 +02:00
{
$node = Tree::findOne(9);
$node->insertBefore(Tree::findOne(1));
}
2015-01-04 13:26:18 +02:00
public function testInsertAfterExistsUp()
{
2015-01-03 16:38:30 +02:00
$node = Tree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertAfter(Tree::findOne(2)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertAfter(MultipleRootsTree::findOne(24)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-after-exists-up.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
public function testInsertAfterExistsDown()
{
$node = Tree::findOne(9);
$node->name = 'Updated node 2';
$this->assertTrue($node->insertAfter(Tree::findOne(16)));
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(31);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertAfter(MultipleRootsTree::findOne(38)));
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-after-exists-down.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
}
2015-01-03 16:38:30 +02:00
2015-01-04 13:26:18 +02:00
public function testInsertAfterExistsAnotherTree()
{
2015-01-03 16:38:30 +02:00
$node = MultipleRootsTree::findOne(9);
2015-01-04 09:42:45 +02:00
$node->name = 'Updated node 2';
$this->assertTrue($node->insertAfter(MultipleRootsTree::findOne(53)));
2015-01-04 13:26:18 +02:00
2015-01-03 16:38:30 +02:00
$dataSet = $this->getConnection()->createDataSet(['multiple_roots_tree']);
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-insert-after-exists-another-tree.xml');
2015-01-03 16:38:30 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 15:47:26 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertAfterExistsExceptionIsRaisedWhenTargetIsNewRecord()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->insertAfter(new Tree());
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertAfterExistsExceptionIsRaisedWhenTargetIsSame()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->insertAfter(Tree::findOne(9));
}
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertAfterExistsExceptionIsRaisedWhenTargetIsChild()
2015-01-03 15:47:26 +02:00
{
$node = Tree::findOne(9);
$node->insertAfter(Tree::findOne(11));
}
2015-01-04 09:10:08 +02:00
/**
* @expectedException \yii\db\Exception
*/
2015-01-04 13:26:18 +02:00
public function testInsertAfterExistsExceptionIsRaisedWhenTargetIsRoot()
2015-01-04 09:10:08 +02:00
{
$node = Tree::findOne(9);
$node->insertAfter(Tree::findOne(1));
}
public function testDeleteWithChildren()
{
$this->assertEquals(7, Tree::findOne(9)->deleteWithChildren());
$this->assertEquals(7, MultipleRootsTree::findOne(31)->deleteWithChildren());
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-delete-with-children.xml');
2015-01-03 08:53:57 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 12:31:00 +02:00
/**
* @expectedException \yii\db\Exception
*/
public function testDeleteWithChildrenExceptionIsRaisedWhenNodeIsNewRecord()
2015-01-03 12:31:00 +02:00
{
$node = new Tree();
$node->deleteWithChildren();
2015-01-03 12:31:00 +02:00
}
public function testDelete()
{
2015-01-03 08:33:49 +02:00
$this->assertEquals(1, Tree::findOne(9)->delete());
2015-01-03 08:39:41 +02:00
$this->assertEquals(1, MultipleRootsTree::findOne(31)->delete());
2015-01-04 13:26:18 +02:00
$dataSet = $this->getConnection()->createDataSet(['tree', 'multiple_roots_tree']);
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-delete.xml');
2015-01-03 08:39:41 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-03 12:31:00 +02:00
/**
* @expectedException \yii\db\Exception
*/
public function testDeleteExceptionIsRaisedWhenNodeIsNewRecord()
{
$node = new Tree();
$node->delete();
}
/**
* @expectedException \yii\base\NotSupportedException
*/
public function testDeleteExceptionIsRaisedWhenNodeIsRoot()
{
$node = Tree::findOne(1);
$node->delete();
}
2015-01-01 08:10:10 +02:00
/**
* @expectedException \yii\base\NotSupportedException
*/
public function testExceptionIsRaisedWhenInsertIsCalled()
{
2015-01-06 12:33:45 +02:00
$node = new Tree(['name' => 'Node']);
2015-01-01 08:10:10 +02:00
$node->insert();
}
2015-01-04 09:16:33 +02:00
public function testUpdate()
{
$node = Tree::findOne(9);
$node->name = 'Updated node 2';
$this->assertEquals(1, $node->update());
}
2015-01-08 22:25:46 +02:00
public function testParents()
{
2015-01-04 13:26:18 +02:00
$dataSet = new ArrayDataSet([
2015-01-08 22:25:46 +02:00
'tree' => ArrayHelper::toArray(Tree::findOne(11)->parents()->all()),
'multiple_roots_tree' => ArrayHelper::toArray(MultipleRootsTree::findOne(33)->parents()->all()),
2015-01-04 13:26:18 +02:00
]);
2015-01-03 17:12:46 +02:00
2015-01-08 22:25:46 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-parents.xml');
2015-01-03 17:12:46 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
$dataSet = new ArrayDataSet([
2015-01-08 22:25:46 +02:00
'tree' => ArrayHelper::toArray(Tree::findOne(11)->parents(1)->all()),
'multiple_roots_tree' => ArrayHelper::toArray(MultipleRootsTree::findOne(33)->parents(1)->all()),
2015-01-04 13:26:18 +02:00
]);
2015-01-03 17:20:53 +02:00
2015-01-08 22:25:46 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-parents-with-depth.xml');
2015-01-03 17:20:53 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-08 22:25:46 +02:00
public function testChildren()
{
2015-01-04 13:26:18 +02:00
$dataSet = new ArrayDataSet([
2015-01-08 22:25:46 +02:00
'tree' => ArrayHelper::toArray(Tree::findOne(9)->children()->all()),
'multiple_roots_tree' => ArrayHelper::toArray(MultipleRootsTree::findOne(31)->children()->all()),
2015-01-04 13:26:18 +02:00
]);
2015-01-03 17:52:53 +02:00
2015-01-08 22:25:46 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-children.xml');
2015-01-03 17:52:53 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
2015-01-04 13:26:18 +02:00
$dataSet = new ArrayDataSet([
2015-01-08 22:25:46 +02:00
'tree' => ArrayHelper::toArray(Tree::findOne(9)->children(1)->all()),
'multiple_roots_tree' => ArrayHelper::toArray(MultipleRootsTree::findOne(31)->children(1)->all()),
2015-01-04 13:26:18 +02:00
]);
2015-01-08 22:25:46 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-children-with-depth.xml');
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
public function testPrev()
{
2015-01-04 13:26:18 +02:00
$dataSet = new ArrayDataSet([
'tree' => ArrayHelper::toArray(Tree::findOne(9)->prev()->all()),
'multiple_roots_tree' => ArrayHelper::toArray(MultipleRootsTree::findOne(31)->prev()->all()),
]);
2015-01-03 18:15:40 +02:00
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-prev.xml');
2015-01-03 18:15:40 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
public function testNext()
{
2015-01-04 13:26:18 +02:00
$dataSet = new ArrayDataSet([
'tree' => ArrayHelper::toArray(Tree::findOne(9)->next()->all()),
'multiple_roots_tree' => ArrayHelper::toArray(MultipleRootsTree::findOne(31)->next()->all()),
]);
2015-01-03 18:15:40 +02:00
2015-01-04 13:26:18 +02:00
$expectedDataSet = $this->createFlatXMLDataSet(__DIR__ . '/data/test-next.xml');
2015-01-03 18:15:40 +02:00
$this->assertDataSetsEqual($expectedDataSet, $dataSet);
}
2015-01-08 22:25:46 +02:00
public function testIsRoot()
{
$this->assertTrue(Tree::findOne(1)->isRoot());
$this->assertFalse(Tree::findOne(2)->isRoot());
}
public function testIsChildOf()
{
2015-01-03 11:23:49 +02:00
$node = MultipleRootsTree::findOne(26);
$this->assertTrue($node->isChildOf(MultipleRootsTree::findOne(25)));
$this->assertTrue($node->isChildOf(MultipleRootsTree::findOne(23)));
$this->assertFalse($node->isChildOf(MultipleRootsTree::findOne(3)));
$this->assertFalse($node->isChildOf(MultipleRootsTree::findOne(1)));
}
public function testIsLeaf()
{
2015-01-03 11:23:49 +02:00
$this->assertTrue(Tree::findOne(4)->isLeaf());
$this->assertFalse(Tree::findOne(1)->isLeaf());
}
2015-01-01 08:10:10 +02:00
}