| 
<?php
 namespace tinyorm\test;
 
 use tinyorm\Entity;
 use tinyorm\persistence\DbDriver;
 
 class EntityTest extends BaseTestCase {
 
 /**
 * @var DbDriver
 */
 private $persistenceDriver;
 
 function testFind()
 {
 $id = $this->assertEntitySaved();
 $entity = TestEntity::find($id);
 $this->assertInstanceOf(TestEntity::class, $entity);
 $this->assertEquals($id, $entity->getPK());
 $this->assertEquals("UNIQUE", $entity->c_unique);
 }
 
 function testSave()
 {
 $entity = new TestEntity([
 "c_unique" => "UNIQUE"
 ]);
 $entity->save();
 $this->assertGreaterThan(0, $entity->getPK());
 }
 
 function testIncrement()
 {
 $id = $this->assertEntitySaved();
 $memoryEntity = TestEntity::find($id);
 $this->assertTrue($memoryEntity->increment("c_int", 10));
 $this->assertEquals(10, $memoryEntity->c_int);
 
 $dbEntity = TestEntity::find($id);
 $this->assertEquals(10, $dbEntity->c_int);
 }
 
 function testDelete()
 {
 $entity = new TestEntity([
 "c_unique" => "UNIQUE"
 ]);
 $this->persistenceDriver->save($entity, $rowCount);
 $this->assertTrue($entity->delete());
 $this->assertNull(TestEntity::find($entity->getPK()));
 }
 
 /**
 * @return int new entity ID
 */
 function assertEntitySaved()
 {
 $entity = new TestEntity([
 "c_unique" => "UNIQUE",
 "c_int" => 0,
 ]);
 $this->persistenceDriver->save($entity, $rowCount);
 $this->assertEquals(1, $rowCount);
 return $entity->getPK();
 }
 
 function setUp()
 {
 parent::setUp();
 $this->persistenceDriver = new DbDriver($this->connection);
 Entity::setDefaultPersistenceDriver($this->persistenceDriver);
 }
 
 function tearDown()
 {
 parent::tearDown();
 $this->persistenceDriver = null;
 Entity::unsetDefaultPersistenceDriver();
 }
 }
 |