public function testDirtyTimestamp() { $sql_time = '2016-10-25 11:44:08'; $a = ['types' => [['date' => $sql_time]]]; $this->setDB($a); $db = new Persistence_SQL($this->db->connection); $m = new Model($db, ['table' => 'types']); $m->addField('ts', ['actual' => 'date', 'type' => 'datetime']); $m->loadAny(); $m['ts'] = clone $m['ts']; $this->assertFalse($m->isDirty('ts')); }
public function testPersist() { $db = new Persistence_SQL($this->db->connection); $a = ['item' => [1 => ['id' => 1, 'name' => 'John', 'surname' => 'Smith']]]; $this->setDB($a); $m = new Model($db, 'item'); $m->addField('name', ['never_persist' => true]); $m->addField('surname', ['never_save' => true]); $m->load(1); $this->assertNull($m['name']); $this->assertEquals('Smith', $m['surname']); $m['name'] = 'Bill'; $m['surname'] = 'Stalker'; $m->save(); $this->assertEquals($a, $this->getDB()); $m->reload(); $this->assertEquals('Smith', $m['surname']); $m->getElement('surname')->never_save = false; $m['surname'] = 'Stalker'; $m->save(); $a['item'][1]['surname'] = 'Stalker'; $this->assertEquals($a, $this->getDB()); $m->addHook('beforeSave', function ($m) { if ($m->isDirty('name')) { $m['surname'] = $m['name']; unset($m['name']); } elseif ($m->isDirty('surname')) { $m['name'] = $m['surname']; unset($m['surname']); } }); $m['name'] = 'X'; $m->save(); $a['item'][1]['surname'] = 'X'; $this->assertEquals($a, $this->getDB()); $this->assertNull($m['name']); $this->assertEquals('X', $m['surname']); $m['surname'] = 'Y'; $m->save(); $this->assertEquals($a, $this->getDB()); $this->assertEquals('Y', $m['name']); $this->assertEquals('X', $m['surname']); }