public function testRun()
 {
     $model = WorkflowTestHelper::createWorkflowModelTestItem('Green', '514');
     $timeTrigger = array('attributeIndexOrDerivedType' => 'string', 'operator' => OperatorRules::TYPE_EQUALS, 'value' => '514', 'durationInterval' => '5');
     $actions = array(array('type' => ActionForWorkflowForm::TYPE_UPDATE_SELF, ActionForWorkflowForm::ACTION_ATTRIBUTES => array('string' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason'))));
     $savedWorkflow = WorkflowTestHelper::createByTimeSavedWorkflow($timeTrigger, array(), $actions);
     WorkflowTestHelper::createExpiredByTimeWorkflowInQueue($model, $savedWorkflow);
     $this->assertEquals(1, ByTimeWorkflowInQueue::getCount());
     $job = new ByTimeWorkflowInQueueJob();
     $this->assertTrue($job->run());
     $this->assertEquals(0, ByTimeWorkflowInQueue::getCount());
     $this->assertEquals('jason', $model->string);
 }
 /**
  * @depends testResolveByWorkflowIdAndModel
  */
 public function testGetModelsToProcess($pageSize)
 {
     $this->assertEquals(1, ByTimeWorkflowInQueue::getCount());
     $models = ByTimeWorkflowInQueue::getModelsToProcess(10);
     $this->assertEquals(1, count($models));
     //Now have one that is not ready for processing. It should still only get 1
     $model = new WorkflowModelTestItem();
     $model->lastName = 'Green2';
     $model->string = 'string2';
     $saved = $model->save();
     $this->assertTrue($saved);
     $savedWorkflows = SavedWorkflow::getByName('some workflow2');
     $byTimeWorkflowInQueue = new ByTimeWorkflowInQueue();
     $byTimeWorkflowInQueue->modelClassName = get_class($model);
     $byTimeWorkflowInQueue->modelItem = $model;
     $byTimeWorkflowInQueue->processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + 86400);
     $byTimeWorkflowInQueue->savedWorkflow = $savedWorkflows[0];
     $saved = $byTimeWorkflowInQueue->save();
     $this->assertTrue($saved);
     $models = ByTimeWorkflowInQueue::getModelsToProcess(10);
     $this->assertEquals(1, count($models));
 }
 /**
  * @depends testResolveAfterSaveByModel
  */
 public function testResolveAfterSaveByModelForByTime()
 {
     //Create workflow
     $workflow = new Workflow();
     $workflow->setDescription('aDescription');
     $workflow->setIsActive(true);
     $workflow->setOrder(5);
     $workflow->setModuleClassName('WorkflowsTestModule');
     $workflow->setName('myFirstWorkflow');
     $workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING);
     $workflow->setType(Workflow::TYPE_BY_TIME);
     $workflow->setTriggersStructure('1');
     $workflow->setIsActive(true);
     //Add time trigger
     $trigger = new TimeTriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', $workflow->getType());
     $trigger->attributeIndexOrDerivedType = 'date';
     $trigger->durationInterval = '500';
     $trigger->durationSign = TimeDurationUtil::DURATION_SIGN_NEGATIVE;
     $trigger->durationType = TimeDurationUtil::DURATION_TYPE_WEEK;
     $trigger->valueType = 'Is Time For';
     $workflow->setTimeTrigger($trigger);
     //Create the saved Workflow
     $savedWorkflow = new SavedWorkflow();
     SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow);
     $saved = $savedWorkflow->save();
     $this->assertTrue($saved);
     $workflow->setId($savedWorkflow->id);
     //set Id back.
     $model = new WorkflowModelTestItem();
     $model->lastName = 'something';
     $model->string = 'aValue';
     $model->date = '2013-03-03';
     $saved = $model->save();
     $this->assertTrue($saved);
     $model->addWorkflowToProcessAfterSave($workflow);
     $this->assertEquals(0, ByTimeWorkflowInQueue::getCount());
     SavedWorkflowsUtil::resolveAfterSaveByModel($model, Yii::app()->user->userModel);
     $this->assertEquals(1, ByTimeWorkflowInQueue::getCount());
 }