예제 #1
0
 /**
  * @covers RecordsMan\Record::save
  */
 public function testSave()
 {
     // Adding new one test
     /** @var Item $item */
     $item = Item::create(['title' => 'new test item', 'parent_id' => 1]);
     $itemsCount = Item::all()->count();
     /** @var Item $firstItem */
     $firstItem = Item::load(1);
     $childrenBefore = $firstItem->children_count;
     $this->assertEquals(null, $item->id);
     $item->save();
     $this->assertEquals(8, $item->id);
     $this->assertEquals($itemsCount + 1, Item::all()->count());
     // Counters updating test
     $subitemsCount = $firstItem->subitems_count;
     $newId = SubItem::create(['title' => 'new test subitem', 'item_id' => 1])->save()->get('id');
     $firstItem->reload();
     $this->assertEquals($childrenBefore + 1, $firstItem->children_count);
     $this->assertEquals($subitemsCount + 1, $firstItem->subitems_count);
     // Updating test
     /** @var SubItem $newItem */
     $newItem = SubItem::load($newId);
     $this->assertEquals('new test subitem', $newItem->title);
     $newItem->setTitle('updated title')->save();
     $newItem = SubItem::load($newId);
     $this->assertEquals('updated title', $newItem->title);
     // Broken foreign key test
     /** @var Item $topLevelItem */
     $topLevelItem = Item::create(['title' => 'top-level item', 'parent_id' => 0]);
     $topLevelItem->save();
     $this->assertTrue($topLevelItem->id > 0);
     /** @var SubSubItem $brokenItem */
     $brokenItem = SubSubItem::create(['title' => 'broken item', 'subitem_id' => 100]);
     $brokenItem->save(false);
     $this->assertTrue($brokenItem->id > 0);
     $brokenItem->drop();
     $this->setExpectedException('RecordsMan\\RecordsManException', '', 85);
     $brokenItem->save();
     //TODO: relation checking, autofill datetime fields, etc.
 }