public function testCreate() { // Create new crash group $model = new CrashGroup(); $model->project_id = 1; $model->appversion_id = 1; $model->title = 'Crash group title'; $model->md5 = '12345678901234567890123456789012'; // Save - should succeed $saved = $model->save(); $this->assertTrue($saved); // Find created model $model = CrashGroup::model()->findByAttributes(array('title' => 'Crash group title')); // Ensure found $this->assertTrue($model != null); }
/** * This method looks for an existing crash group for the given crash report * and if the crash group doesn't exist, it creates a new one. * @return CrashGroup crash group model, or Null on error. */ public function createCrashGroup() { // Get crash group title $crashGroupMD5 = ""; $crashGroupTitle = $this->getCrashGroupTitle($crashGroupMD5); Yii::log('Crash group title = ' . $crashGroupTitle, 'info'); Yii::log('Crash group MD5 = ' . $crashGroupMD5, 'info'); $criteria = new CDbCriteria(); $criteria->compare('project_id', $this->project_id); $criteria->compare('appversion_id', $this->appversion_id); $criteria->compare('md5', $crashGroupMD5); // Look for existing crash group $crashGroup = CrashGroup::model()->find($criteria); if ($crashGroup === Null) { // Not found, create new crash group // First check if such a title already presents $criteria = new CDbCriteria(); $criteria->compare('project_id', $this->project_id); $criteria->compare('appversion_id', $this->appversion_id); $criteria->addSearchCondition('title', $crashGroupTitle); $count = CrashGroup::model()->count($criteria); if ($count != 0) { // Add suffix to the title to avoid similar group names $postfix = ' (' . ($count + 1) . ')'; $crashGroupTitle .= $postfix; } // Create new crash group $crashGroup = new CrashGroup(); $crashGroup->title = $crashGroupTitle; $crashGroup->md5 = $crashGroupMD5; $crashGroup->project_id = $this->project_id; $crashGroup->appversion_id = $this->appversion_id; if (!$crashGroup->save()) { // Error saving crash group record return Null; } } // Return crash group return $crashGroup; }