/** * @depends testCreateRelatedHasManysHasManyNonOwned * Similar to an account updating all related tasks. */ public function testUpdateRelatedDerived() { $action = new ActionForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $action->type = ActionForWorkflowForm::TYPE_UPDATE_RELATED; $action->relation = 'model5ViaItem'; $attributes = array('name' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'a new derived name')); $action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes)); $model = new WorkflowModelTestItem(); $model->lastName = 'lastName'; $model->string = 'string'; $saved = $model->save(); $this->assertTrue($saved); $derivedModel = new WorkflowModelTestItem5(); $derivedModel->name = 'some old name'; $derivedModel->workflowItems->add($model); $saved = $derivedModel->save(); $this->assertTrue($saved); $helper = new WorkflowActionProcessingHelper(88, 'some name', $action, $model, Yii::app()->user->userModel); $helper->processNonUpdateSelfAction(); $derivedModelId = $derivedModel->id; $derivedModel->forget(); $derivedModel = WorkflowModelTestItem5::getById($derivedModelId); $this->assertEquals('a new derived name', $derivedModel->name); //Test where there are no derived models $model = new WorkflowModelTestItem(); $model->lastName = 'lastName'; $model->string = 'string'; $this->assertEquals(1, WorkflowModelTestItem5::getCount()); $helper = new WorkflowActionProcessingHelper(88, 'some name', $action, $model, Yii::app()->user->userModel); $helper->processNonUpdateSelfAction(); $derivedModels = WorkflowModelTestItem5::getAll(); $this->assertEquals(1, count($derivedModels)); $deleted = $derivedModels[0]->delete(); $this->assertTrue($deleted); }