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, count(ByTimeWorkflowInQueue::getAll()));
     $job = new ByTimeWorkflowInQueueJob();
     $this->assertTrue($job->run());
     $this->assertEquals(0, count(ByTimeWorkflowInQueue::getAll()));
     $this->assertEquals('jason', $model->string);
 }
 /**
  * @depends testRun
  */
 public function testRunAgainstWorkflowThatWasDeleted()
 {
     $model = WorkflowTestHelper::createWorkflowModelTestItem('Green', '514');
     $timeTrigger = array('attributeIndexOrDerivedType' => 'string', 'operator' => OperatorRules::TYPE_EQUALS, 'value' => '514', 'durationSeconds' => '333');
     $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::createExpiredWorkflowMessageInQueue($model, $savedWorkflow);
     //Now delete the old workflow
     $deleted = $savedWorkflow->delete();
     $this->assertTrue($deleted);
     $this->assertEquals(1, count(WorkflowMessageInQueue::getAll()));
     $job = new WorkflowMessageInQueueJob();
     $this->assertTrue($job->run());
     $this->assertEquals(0, count(WorkflowMessageInQueue::getAll()));
 }
 public function testPagedRun()
 {
     $model = WorkflowTestHelper::createWorkflowModelTestItem('Blue', '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);
     for ($index = 0; $index < 10; $index++) {
         WorkflowTestHelper::createExpiredByTimeWorkflowInQueue($model, $savedWorkflow);
     }
     InQueueBatchSizeConfigUtil::setBatchSize(5);
     Yii::app()->jobQueue->deleteAll();
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     $this->assertEquals(10, count(ByTimeWorkflowInQueue::getAll()));
     $job = new ByTimeWorkflowInQueueJob();
     $this->assertTrue($job->run());
     $this->assertEquals(5, count(ByTimeWorkflowInQueue::getAll()));
     $jobs = Yii::app()->jobQueue->getAll();
     $this->assertCount(1, $jobs);
     $this->assertEquals('ByTimeWorkflowInQueue', $jobs[key($jobs)][0]['jobType']);
     Yii::app()->jobQueue->deleteAll();
     $this->assertTrue($job->run());
     $this->assertEquals(0, count(ByTimeWorkflowInQueue::getAll()));
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
 }
 /**
  * @depends testProcessAfterSave
  */
 public function testProcessOnByTimeWorkflowInQueueJob()
 {
     $model = WorkflowTestHelper::createWorkflowModelTestItem('Green', '514');
     $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_ON_SAVE);
     $workflow->setTriggersStructure('1');
     $workflow->setIsActive(true);
     //Add action
     $action = new ActionForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $action->type = ActionForWorkflowForm::TYPE_UPDATE_SELF;
     $action->relation = 'hasOne';
     $attributes = array('string' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'jason'));
     $action->setAttributes(array(ActionForWorkflowForm::ACTION_ATTRIBUTES => $attributes));
     $workflow->addAction($action);
     WorkflowActionsUtil::processOnByTimeWorkflowInQueueJob($workflow, $model, Yii::app()->user->userModel);
     $this->assertEquals('jason', $model->string);
 }
 public function testMakeEmailMessageForWorkflowFormByQueueModelAndWorkflow()
 {
     $model = ContactTestHelper::createContactByNameForOwner('Jason', Yii::app()->user->userModel);
     $savedWorkflow = new SavedWorkflow();
     $savedWorkflow->name = 'some workflow';
     $savedWorkflow->description = 'description';
     $savedWorkflow->moduleClassName = 'WorkflowsTestModule';
     $savedWorkflow->triggerOn = Workflow::TRIGGER_ON_NEW;
     $savedWorkflow->type = 'some type';
     $savedWorkflow->order = 1;
     $savedWorkflow->serializedData = serialize(array('something'));
     $savedWorkflow->isActive = true;
     $saved = $savedWorkflow->save();
     $this->assertTrue($saved);
     $emailMessage = null;
     $emailMessage['emailTemplateId'] = 5;
     $emailMessage['sendFromType'] = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT;
     $emailMessage['sendAfterDurationType'] = TimeDurationUtil::DURATION_TYPE_DAY;
     $emailMessage['sendAfterDurationInterval'] = '44';
     $emailMessage[EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS] = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_DYNAMIC_TRIGGERED_MODEL, 'audienceType' => EmailMessageRecipient::TYPE_TO));
     $workflowMessageInQueue = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($model, $savedWorkflow, serialize(array($emailMessage)));
     $workflow = new Workflow();
     $workflow->setModuleClassName('WorkflowsTestModule');
     $workflow->setType(Workflow::TYPE_ON_SAVE);
     $emailMessageForWorkflowForm = WorkflowEmailMessagesUtil::makeEmailMessageForWorkflowFormByQueueModelAndWorkflow($workflowMessageInQueue, $workflow);
     $this->assertEquals(5, $emailMessageForWorkflowForm->emailTemplateId);
     $this->assertEquals(EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT, $emailMessageForWorkflowForm->sendFromType);
     $this->assertEquals(TimeDurationUtil::DURATION_TYPE_DAY, $emailMessageForWorkflowForm->sendAfterDurationType);
     $this->assertEquals(44, $emailMessageForWorkflowForm->sendAfterDurationInterval);
     $this->assertEquals(1, count($emailMessageForWorkflowForm->getEmailMessageRecipients()));
 }
 public function testMassDeletePagesProperlyAndRemovesAllSelectedForWorkflowMessageInQueue()
 {
     //MassDelete for selected Record Count
     $workflowMessageInQueue01 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue02 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue03 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue04 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue05 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue06 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue07 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue08 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue09 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     $workflowMessageInQueue10 = WorkflowTestHelper::createExpiredWorkflowMessageInQueue($this->model, $this->savedWorkflow);
     //save Model MassDelete for entire search result
     $this->setGetArray(array('selectAll' => '1', 'WorkflowMessageInQueue_page' => 1));
     $this->setPostArray(array('selectedRecordCount' => 10));
     //Run Mass Delete using progress save for page1.
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massDeleteProgressPageSize');
     $this->assertEquals(5, $pageSize);
     $this->runControllerWithExitExceptionAndGetContent('workflows/defaultMessageQueue/massDelete');
     //check for previous mass delete progress
     $models = WorkflowMessageInQueue::getAll();
     $this->assertEquals(5, count($models));
     $this->setGetArray(array('selectAll' => '1', 'WorkflowMessageInQueue_page' => 2));
     $this->setPostArray(array('selectedRecordCount' => 10));
     //Run Mass Delete using progress save for page2.
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massDeleteProgressPageSize');
     $this->assertEquals(5, $pageSize);
     $this->runControllerWithNoExceptionsAndGetContent('workflows/defaultMessageQueue/massDeleteProgress');
     //calculating count
     $models = WorkflowMessageInQueue::getAll();
     $this->assertEquals(0, count($models));
 }