ResetBehavior = new ResetBehavior(); $this->Model = ClassRegistry::init('MyComment'); $this->Model->Behaviors->load('Tools.Reset'); } public function testObject() { $this->assertTrue(is_object($this->ResetBehavior)); $this->assertInstanceOf('ResetBehavior', $this->ResetBehavior); } public function testResetRecords() { $x = $this->Model->find('first', ['order' => ['updated' => 'DESC']]); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $y = $this->Model->find('first', ['order' => ['updated' => 'DESC']]); $this->assertSame($x, $y); } public function testResetRecordsWithUpdatedTimestamp() { $this->Model->Behaviors->unload('Reset'); $this->Model->Behaviors->load('Tools.Reset', ['updateTimestamp' => true]); $x = $this->Model->find('first', ['order' => ['updated' => 'DESC']]); $this->assertTrue($x['MyComment']['updated'] < '2007-12-31'); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $x = $this->Model->find('first', ['order' => ['updated' => 'ASC']]); $this->assertTrue($x['MyComment']['updated'] > (date('Y') - 1) . '-12-31'); } public function testResetWithCallback() { $this->Model->Behaviors->unload('Reset'); $this->Model->Behaviors->load('Tools.Reset', ['callback' => 'customCallback']); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $this->assertEquals('Second Comment for Second Article', $x['MyComment']['comment']); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $expected = 'Second Comment for Second Article xyz'; $this->assertEquals($expected, $x['MyComment']['comment']); } public function testResetWithObjectCallback() { $this->Model->Behaviors->unload('Reset'); $this->Model->Behaviors->load('Tools.Reset', ['callback' => [$this->Model, 'customObjectCallback']]); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $this->assertEquals('Second Comment for Second Article', $x['MyComment']['comment']); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $expected = 'Second Comment for Second Article xxx'; $this->assertEquals($expected, $x['MyComment']['comment']); } public function testResetWithStaticCallback() { $this->Model->Behaviors->unload('Reset'); $this->Model->Behaviors->load('Tools.Reset', ['callback' => 'MyComment::customStaticCallback']); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $this->assertEquals('Second Comment for Second Article', $x['MyComment']['comment']); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $expected = 'Second Comment for Second Article yyy'; $this->assertEquals($expected, $x['MyComment']['comment']); } public function testResetWithCallbackAndFields() { $this->Model->Behaviors->unload('Reset'); $this->Model->Behaviors->load('Tools.Reset', [ 'fields' => ['id'], 'updateFields' => ['comment'], 'callback' => 'MyComment::fieldsCallback']); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $this->assertEquals('Second Comment for Second Article', $x['MyComment']['comment']); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $expected = 'foo'; $this->assertEquals($expected, $x['MyComment']['comment']); } public function testResetWithCallbackAndFieldsAutoAdded() { $this->Model->Behaviors->unload('Reset'); $this->Model->Behaviors->load('Tools.Reset', [ 'fields' => ['id'], 'updateFields' => ['id'], 'callback' => 'MyComment::fieldsCallbackAuto']); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $this->assertEquals('Second Comment for Second Article', $x['MyComment']['comment']); $result = $this->Model->resetRecords(); $this->assertTrue((bool)$result); $x = $this->Model->find('first', ['conditions' => ['id' => 6]]); $expected = 'bar'; $this->assertEquals($expected, $x['MyComment']['comment']); } } class MyComment extends AppModel { public $fixture = 'core.comment'; public $useTable = 'comments'; public $displayField = 'comment'; public function customCallback($data, &$updateFields) { $data[$this->alias][$this->displayField] .= ' xyz'; $fields[] = 'some_other_field'; return $data; } public function customObjectCallback($data, &$updateFields) { $data[$this->alias][$this->displayField] .= ' xxx'; $updateFields[] = 'some_other_field'; return $data; } public static function customStaticCallback($data, &$updateFields) { $data['MyComment']['comment'] .= ' yyy'; $updateFields[] = 'some_other_field'; return $data; } public static function fieldsCallback($data, &$updateFields) { $data['MyComment']['comment'] = 'foo'; return $data; } public static function fieldsCallbackAuto($data, &$updateFields) { $data['MyComment']['comment'] = 'bar'; $updateFields[] = 'comment'; return $data; } }