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);
 }
 public function testSetAndGet()
 {
     $model = new WorkflowModelTestItem();
     $model->lastName = 'Green';
     $model->string = 'string';
     $saved = $model->save();
     $this->assertTrue($saved);
     $savedWorkflow = new SavedWorkflow();
     $savedWorkflow->name = 'some workflow';
     $savedWorkflow->description = 'description';
     $savedWorkflow->moduleClassName = 'moduleClassName';
     $savedWorkflow->triggerOn = Workflow::TRIGGER_ON_NEW;
     $savedWorkflow->type = 'some type';
     $savedWorkflow->serializedData = serialize(array('something'));
     $saved = $savedWorkflow->save();
     $this->assertTrue($saved);
     $workflowMessageInQueue = new WorkflowMessageInQueue();
     $workflowMessageInQueue->modelClassName = get_class($model);
     $workflowMessageInQueue->modelItem = $model;
     $workflowMessageInQueue->processDateTime = '2007-02-02 00:00:00';
     $workflowMessageInQueue->savedWorkflow = $savedWorkflow;
     $workflowMessageInQueue->triggeredByUser = Yii::app()->user->userModel;
     $workflowMessageInQueue->serializedData = serialize(array('something'));
     $this->assertCount(0, Yii::app()->jobQueue->getAll());
     $saved = $workflowMessageInQueue->save();
     $this->assertTrue($saved);
     $jobs = Yii::app()->jobQueue->getAll();
     $this->assertCount(1, $jobs);
     $id = $workflowMessageInQueue->id;
     $workflowMessageInQueue->forget();
     //Retrieve and compare
     $workflowMessageInQueue = WorkflowMessageInQueue::getById($id);
     $this->assertEquals('WorkflowModelTestItem', $workflowMessageInQueue->modelClassName);
     $this->assertTrue($workflowMessageInQueue->modelItem->isSame($model));
     $this->assertEquals('2007-02-02 00:00:00', $workflowMessageInQueue->processDateTime);
     $this->assertTrue($workflowMessageInQueue->savedWorkflow->isSame($savedWorkflow));
     $this->assertTrue($workflowMessageInQueue->triggeredByUser->isSame(Yii::app()->user->userModel));
     $this->assertEquals(serialize(array('something')), $workflowMessageInQueue->serializedData);
 }