public function testHasOne() { \DatabaseManager::generateFakeRecords(); $admin = $this->personRepository->findOne(array('login' => 'admin')); $backend = $this->moduleRepository->findOne(array('name' => 'Backend')); $admin->setDefaultModule($backend); $admin->save(); $row = $this->dbal->fetchAssoc("select * from person where login = :login and v_end > :now", array('login' => 'admin', 'now' => $this->dbal->fetchNow())); $this->assertEquals($backend->getIdModule(), $admin->getIdModuleDefaultModule()); $this->assertEquals($backend->getIdModule(), $row['id_module_default_module']); $user = $this->personRepository->findOne(array('login' => 'user')); $this->assertEquals($backend, $user->getDefaultModule()); $user->setDefaultModule(null); $user->save(); $row = $this->dbal->fetchAssoc("select * from person where login = :login and v_end > :now", array('login' => 'user', 'now' => $this->dbal->fetchNow())); $this->assertNull($row['id_module_default_module']); \DatabaseManager::clearTables(); }
public function testSave() { $adminModel = $this->personRepository->create(array('login' => 'admin', 'salt' => '123', 'hash' => crypt('123', '123'))); $adminModel->save(); /** * Check row existing in database */ $row = $this->dbal->fetchAssoc("select * from person where login = :login", array('login' => 'admin')); $this->assertNotNull($row); /** * Test version behaviour in person model */ $this->assertEquals('9999-12-31 23:59:59', $row['v_end']); $dbTime = $this->dbal->fetchNow(); /** * Difference between $dbNow and v_start time of model need to be less than 5 seconds */ $this->assertLessThan(5, abs(strtotime($dbTime) - strtotime($row['v_start']))); /** * Test not version model */ $backendModule = $this->moduleRepository->create(array('name' => 'backend')); $backendModule->save(); $row = $this->dbal->fetchAssoc("select * from module where name = :name", array('name' => 'backend')); $this->assertNotNull($row); $this->assertEquals('backend', $row['name']); /** * Test repository store for models */ $map = $this->getRepositoryMap($this->personRepository); $modelKey = $this->personRepository->makeKey($adminModel); $this->assertEquals($adminModel->getIdPerson() . ':' . $adminModel->getVEnd(), $modelKey); /** * Admin model need to be in map */ $this->assertContains($adminModel, $map); \DatabaseManager::clearTables(); }