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)); }