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);
});
}