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);
 }
Ejemplo n.º 2
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());
 }