Phalcon\Test\Mvc\Model\Behavior\NestedSetTest::testShouldCreateARootNodeUsingSaveNode PHP Method

testShouldCreateARootNodeUsingSaveNode() public method

Creating root nodes
Since: 2016-02-27
Author: Serghei Iakovlev ([email protected])
    public function testShouldCreateARootNodeUsingSaveNode()
    {
        $this->specify('Unable to create a root node using NestedSet::saveNode', function () {
            $I = $this->tester;
            $I->seeNumRecords(0, CategoriesManyRoots::$table);
            $category1 = new CategoriesManyRoots();
            $category1->name = 'Mobile Phones';
            $category1->saveNode();
            $I->seeInDatabase(CategoriesManyRoots::$table, ['name' => 'Mobile Phones']);
            $category1 = CategoriesManyRoots::findFirst();
            expect($category1->root)->equals(1);
            expect($category1->lft)->equals(1);
            expect($category1->rgt)->equals(2);
            expect($category1->level)->equals(1);
            $category2 = new CategoriesManyRoots();
            $category2->name = 'Cars';
            $category2->saveNode();
            $I->seeInDatabase(CategoriesManyRoots::$table, ['name' => 'Cars']);
            $category2 = CategoriesManyRoots::findFirst(2);
            expect($category2->root)->equals(2);
            expect($category2->lft)->equals(1);
            expect($category2->rgt)->equals(2);
            expect($category2->level)->equals(1);
            $category3 = new CategoriesManyRoots();
            $category3->name = 'Computers';
            $category3->saveNode();
            $I->seeInDatabase(CategoriesManyRoots::$table, ['name' => 'Computers']);
            $category3 = CategoriesManyRoots::findFirst(3);
            expect($category3->root)->equals(3);
            expect($category3->lft)->equals(1);
            expect($category3->rgt)->equals(2);
            expect($category3->level)->equals(1);
            $I->seeNumRecords(3, CategoriesManyRoots::$table);
            $this->checkIntegrity($category1->root);
            $this->checkIntegrity($category2->root);
            $this->checkIntegrity($category3->root);
        });
    }