/**
  * @test
  */
 function it_can_be_a_data_collected_type()
 {
     $dataCollected = MessageType::dataCollected();
     $this->assertTrue($dataCollected->isDataCollectedMessage());
     $this->assertEquals(MessageType::TYPE_DATA_COLLECTED, $dataCollected->toString());
 }
 /**
  * @param Task $connectedTask
  * @return Message
  * @throws Workflow\Exception\MessageIsNotManageable
  */
 public function emulateAnswerMessage(Task $connectedTask)
 {
     if (!$this->canHandleMessage($connectedTask->emulateWorkflowMessage())) {
         throw MessageIsNotManageable::byMessageHandler($this, $connectedTask->emulateWorkflowMessage());
     }
     if ($connectedTask->type()->isCollectData()) {
         $messageType = MessageType::dataCollected();
     } else {
         $messageType = MessageType::dataProcessed();
     }
     return Message::emulateProcessingWorkflowMessage($messageType, $connectedTask->processingType(), $connectedTask->metadata());
 }
 function provideStartScenarios()
 {
     return [[Workflow\Message::emulateProcessingWorkflowMessage(Workflow\MessageType::collectData(), ArticleCollection::prototype(), ProcessingMetadata::noData()), $this->getArticleExporterMessageHandler(), ProcessingMetadata::noData(), Task\TaskType::TYPE_COLLECT_DATA, Workflow\ProcessType::TYPE_LINEAR_MESSAGING], [Workflow\Message::emulateProcessingWorkflowMessage(Workflow\MessageType::dataProcessed(), ArticleCollection::prototype(), ProcessingMetadata::noData()), $this->getArticleImporterMessageHandler(), ProcessingMetadata::noData(), Task\TaskType::TYPE_PROCESS_DATA, Workflow\ProcessType::TYPE_LINEAR_MESSAGING], [Workflow\Message::emulateProcessingWorkflowMessage(Workflow\MessageType::collectData(), ArticleCollection::prototype(), ProcessingMetadata::noData()), $this->getArticleExporterMessageHandler(true), ProcessingMetadata::noData(), Task\TaskType::TYPE_COLLECT_DATA, Workflow\ProcessType::TYPE_PARALLEL_FOREACH], [Workflow\Message::emulateProcessingWorkflowMessage(Workflow\MessageType::dataProcessed(), ArticleCollection::prototype(), ProcessingMetadata::noData()), $this->getArticleImporterMessageHandler(true), ProcessingMetadata::noData(), Task\TaskType::TYPE_PROCESS_DATA, Workflow\ProcessType::TYPE_PARALLEL_FOREACH], [Workflow\Message::emulateProcessingWorkflowMessage(Workflow\MessageType::collectData(), ArticleCollection::prototype(), ProcessingMetadata::fromArray([MessageMetadata::LIMIT => 100])), $this->getArticleExporterMessageHandler(), ProcessingMetadata::noData(), Task\TaskType::TYPE_COLLECT_DATA, Workflow\ProcessType::TYPE_PARALLEL_CHUNK], [Workflow\Message::emulateProcessingWorkflowMessage(Workflow\MessageType::dataCollected(), ArticleCollection::prototype(), ProcessingMetadata::fromArray([MessageMetadata::LIMIT => 100])), $this->getArticleImporterMessageHandler(), ProcessingMetadata::noData(), Task\TaskType::TYPE_PROCESS_DATA, Workflow\ProcessType::TYPE_PARALLEL_CHUNK]];
 }
 function provideMessages()
 {
     return [[Message::emulateProcessingWorkflowMessage(MessageType::collectData(), ArticleCollection::prototype(), ProcessingMetadata::noData())], [Message::emulateProcessingWorkflowMessage(MessageType::dataCollected(), ArticleCollection::prototype(), ProcessingMetadata::noData())], [Message::emulateProcessingWorkflowMessage(MessageType::processData(), ArticleCollection::prototype(), ProcessingMetadata::noData())], [Message::emulateProcessingWorkflowMessage(MessageType::dataProcessed(), ArticleCollection::prototype(), ProcessingMetadata::noData())]];
 }