public function testWorkflowMessageInQueueProperlySavesWithoutTrashingRelatedModelItem() { $model = WorkflowTestHelper::createWorkflowModelTestItem('Jason', 'Green'); $savedWorkflow = WorkflowTestHelper::createByTimeSavedWorkflow(); $workflowMessageInQueue = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($model, $savedWorkflow); $correctItemId = $workflowMessageInQueue->getClassId('Item'); $this->assertEquals((int) $correctItemId, (int) $workflowMessageInQueue->getClassId('Item')); $this->assertNotEquals((int) $model->getClassId('Item'), (int) $workflowMessageInQueue->getClassId('Item')); $modelId = $model->id; $queueId = $workflowMessageInQueue->id; RedBeanModelsCache::forgetAll(true); //simulates page change, required to confirm Item does not get trashed $workflowMessageInQueue = WorkflowMessageInQueue::getById($queueId); $deleted = $workflowMessageInQueue->delete(); $this->assertTrue($deleted); $model = WorkflowModelTestItem::getById($modelId); $this->assertTrue($model->getClassId('Item') > 0); }
public function testEvaluateTimeTriggerBeforeSave() { $model = new WorkflowModelTestItem(); $triggerForm = new TriggerForWorkflowForm('WorkflowTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $triggerForm->valueType = MixedDateTypesSearchFormAttributeMappingRules::TYPE_IS_TIME_FOR; $rules = new DateTimeTriggerRules($triggerForm); //New model $this->assertTrue($rules->evaluateTimeTriggerBeforeSave($model, 'createdDateTime', true)); $this->assertTrue($rules->evaluateTimeTriggerBeforeSave($model, 'modifiedDateTime', true)); $this->assertFalse($rules->evaluateTimeTriggerBeforeSave($model, 'dateTime', true)); $model->lastName = 'test'; $model->string = 'test'; $this->assertTrue($model->save()); $modelId = $model->id; $model->forget(); $model = WorkflowModelTestItem::getById($modelId); //Existing model $this->assertFalse($rules->evaluateTimeTriggerBeforeSave($model, 'createdDateTime', true)); $this->assertTrue($rules->evaluateTimeTriggerBeforeSave($model, 'modifiedDateTime', true)); $this->assertFalse($rules->evaluateTimeTriggerBeforeSave($model, 'dateTime', true)); //Modify dateTime $model->dateTime = '2000-02-02 05:05:05'; $this->assertTrue($rules->evaluateTimeTriggerBeforeSave($model, 'dateTime', true)); }
/** * ModifiedDateTime is special because of how it is automatically modified * @depends testTriggerBeforeSaveChanges */ public function testTriggerBeforeSaveCreatedAndModifiedDateTimeChanges() { $workflow = self::makeOnSaveWorkflowAndTriggerForDateOrDateTime('modifiedDateTime', 'Changes', null); $model = new WorkflowModelTestItem(); $model->lastName = 'someLastName'; $model->string = 'someString'; //New model $this->assertTrue(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)); $model->save(); //Existing model $model->string = 'someString2'; $this->assertTrue(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)); //Fresh existing model $modelId = $model->id; $model->forget(); $model = WorkflowModelTestItem::getById($modelId); $model->string = 'someString3'; $this->assertTrue(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)); $workflow = self::makeOnSaveWorkflowAndTriggerForDateOrDateTime('createdDateTime', 'Changes', null); $model = new WorkflowModelTestItem(); $model->lastName = 'someLastName'; $model->string = 'someString'; //Test createdDateTime //New model $this->assertTrue(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)); $model->save(); //Existing model $model->string = 'someString2'; $this->assertFalse(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)); //Fresh existing model $modelId = $model->id; $model->forget(); $model = WorkflowModelTestItem::getById($modelId); $model->string = 'someString3'; $this->assertFalse(WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)); //Test createdDateTime }
public function testMakeRecipientsForDynamicTriggeredModelUserManagerOfOwner() { $form = new DynamicTriggeredModelUserWorkflowEmailMessageRecipientForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $form->dynamicUserType = DynamicTriggeredModelUserWorkflowEmailMessageRecipientForm::DYNAMIC_USER_TYPE_MANAGER_OF_OWNER; $model = new WorkflowModelTestItem(); $model->setScenario('importModel'); $model->lastName = 'lastName'; $model->string = 'string'; $model->createdByUser = User::getById(self::$bobbyUserId); $model->modifiedByUser = User::getById(self::$sarahUserId); $this->assertTrue($model->save()); $modelId = $model->id; $model->forget(); $model = WorkflowModelTestItem::getById($modelId); $recipients = $form->makeRecipients($model, Yii::app()->user->userModel); $this->assertEquals(1, count($recipients)); $this->assertEquals('superBoss superBossson', $recipients[0]->toName); $this->assertEquals('*****@*****.**', $recipients[0]->toAddress); $this->assertEquals(self::$superBossUserId, $recipients[0]->personsOrAccounts[0]->id); }
/** * @depends testCreateRelatedDerivedsHasOneNonOwned * Similar to a meeting updating its related contacts */ public function testUpdateRelatedInferred() { $action = new ActionForWorkflowForm('WorkflowModelTestItem5', Workflow::TYPE_ON_SAVE); $action->type = ActionForWorkflowForm::TYPE_UPDATE_RELATED; $action->relation = 'WorkflowModelTestItem__workflowItems__Inferred'; $attributes = array('string' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'a new derived name')); $action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes)); $inferredModel = new WorkflowModelTestItem(); $inferredModel->lastName = 'lastName'; $inferredModel->string = 'string'; $saved = $inferredModel->save(); $this->assertTrue($saved); $inferredModelId = $inferredModel->id; $model = new WorkflowModelTestItem5(); $model->workflowItems->add($inferredModel); $saved = $model->save(); $this->assertTrue($saved); $helper = new WorkflowActionProcessingHelper(88, 'some name', $action, $model, Yii::app()->user->userModel); $helper->processNonUpdateSelfAction(); $this->assertEquals(1, $model->workflowItems->count()); $inferredModel->forget(); $inferredModel = WorkflowModelTestItem::getById($inferredModelId); $this->assertEquals('a new derived name', $inferredModel->string); $this->assertTrue($model->delete()); }