/** * @depends testCreate */ public function testSetProperties() { $model = new \Rapid\Model(); $this->assertEquals(array(), $model->properties(), 'Properties of new model are not empty'); $properties = array('my' => 1, 'another' => 'string'); $model->setProperties($properties, true); $this->assertEquals($properties, $model->properties(), 'Properties don\\t match'); $this->assertEquals(array(), $model->modifiedProperties(), 'Modified properties are incorrect'); $modifiedProperties = array('my' => 2); $model->setProperties($modifiedProperties); $this->assertEquals(array_merge($properties, $modifiedProperties), $model->properties(), 'Properties don\\t match'); $this->assertEquals($modifiedProperties, $model->modifiedProperties(), 'Modified properties are incorrect'); $model->setProperty('new', 1); $this->assertEquals(1, $model->property('new'), 'Property not set'); $this->assertEquals(array_merge($modifiedProperties, array('new' => 1)), $model->modifiedProperties(), 'Modified properties are incorrect'); }
public function save(\Rapid\Model $model) { if (null === ($id = $model->id())) { $data = $model->properties(); unset($data['id']); $id = $this->db()->insert($this->tablename, $data); $model->setId($id); } else { $data = $model->modifiedProperties(); if (count($data)) { $this->db()->update($this->tablename, $data, array('id' => $id)); } } }