/**
  * @see parent::resolveJobsForQueue()
  */
 public static function resolveJobsForQueue()
 {
     parent::resolveJobsForQueue();
     $pageSize = static::JOB_QUEUE_PAGE_SIZE;
     $offset = 0;
     $timeStamp = time();
     do {
         $queueModels = static::getModelsTResolveToJobQueue($pageSize, $offset, static::getType(), $timeStamp);
         $offset = $offset + $pageSize;
         if (is_array($queueModels) && count($queueModels) > 0) {
             foreach ($queueModels as $queueModel) {
                 InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($queueModel, static::getType());
             }
         }
     } while (is_array($queueModels) && count($queueModels) > 0);
 }
 protected function afterSave()
 {
     InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($this, 'ByTimeWorkflowInQueue');
     parent::afterSave();
 }
 public function testResolveToAddJobToQueueAfterSaveOfModelWithNewModel()
 {
     //First test with a null processDaetTime
     $byTimeWorkflowInQueue = new ByTimeWorkflowInQueueForTest();
     $byTimeWorkflowInQueue->modelClassName = get_class(self::$testModel);
     $byTimeWorkflowInQueue->modelItem = self::$testModel;
     $byTimeWorkflowInQueue->processDateTime = '0000-00-00 00:00:00';
     $byTimeWorkflowInQueue->savedWorkflow = self::$savedWorkflow;
     $byTimeWorkflowInQueue->setIsNewModel(true);
     //simulates beforeSave behavior
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($byTimeWorkflowInQueue, 'abc');
     $jobs = Yii::app()->jobQueue->getAll();
     $this->assertCount(1, $jobs);
     $this->assertEquals('abc', $jobs[5][0]['jobType']);
     //now test with processDateTime set
     Yii::app()->jobQueue->deleteAll();
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     $byTimeWorkflowInQueue = new ByTimeWorkflowInQueueForTest();
     $byTimeWorkflowInQueue->modelClassName = get_class(self::$testModel);
     $byTimeWorkflowInQueue->modelItem = self::$testModel;
     $byTimeWorkflowInQueue->processDateTime = '2037-02-02 00:00:00';
     $byTimeWorkflowInQueue->savedWorkflow = self::$savedWorkflow;
     $byTimeWorkflowInQueue->setIsNewModel(true);
     //simulates beforeSave behavior
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($byTimeWorkflowInQueue, 'abc');
     $jobs = Yii::app()->jobQueue->getAll();
     $this->assertCount(1, $jobs);
     $this->assertTrue(key($jobs) > 315360000);
     //Greater than 10 years in future confirms it is not soon...
     $firstKey = key($jobs);
     //now change processDateTime, and make sure the job is different.
     $saved = $byTimeWorkflowInQueue->save();
     $this->assertTrue($saved);
     $byTimeWorkflowInQueue->processDateTime = '2037-03-02 00:00:00';
     Yii::app()->jobQueue->deleteAll();
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     InQueueUtil::resolveToAddJobToQueueAfterSaveOfModel($byTimeWorkflowInQueue, 'abc');
     $jobs = Yii::app()->jobQueue->getAll();
     $this->assertCount(1, $jobs);
     $this->assertTrue(key($jobs) > 315360000);
     //Greater than 10 years in future confirms it is not soon...
     $this->assertNotEquals($firstKey, key($jobs));
 }