/** * @test */ public function it_uses_defaults_and_previous_message_to_create_a_new_message() { $previousMessage = new FileWasUploaded(); $payloadGenerator = $this->prophesize(PayloadGenerator::class); $payloadGenerator->__invoke($previousMessage, Argument::type(\ArrayObject::class), Argument::type(\ArrayObject::class))->will(function ($args) { /** @var $previousMessage FileWasUploaded */ $previousMessage = $args[0]; $payload = $args[1]; $metadata = $args[2]; $payload['filename'] = $previousMessage->payload()['filename']; $metadata['previous_message'] = get_class($previousMessage); }); $messageTemplate = new MessageTemplate(ProcessFile::class, new FQCNMessageFactory(), ['location' => 'outbox'], ['command' => 'metadata'], $payloadGenerator->reveal()); $processFile = $messageTemplate->createMessageFromPreviousMessage($previousMessage); $this->assertInstanceOf(ProcessFile::class, $processFile); $this->assertEquals(['filename' => 'some-file.csv', 'location' => 'outbox'], $processFile->payload()); $this->assertEquals(['command' => 'metadata', 'previous_message' => FileWasUploaded::class], $processFile->metadata()); }
/** * @param StoryName $storyName * @param ChapterNumber $chapterNumber * @param Message $previousMessage * @return Message */ public function startChapter(StoryName $storyName, ChapterNumber $chapterNumber, Message $previousMessage) { $command = $this->chapterCommandTemplate->createMessageFromPreviousMessage($previousMessage); $command = $command->withAddedMetadata(Metadata::STORY_CHAPTER, $chapterNumber->toString()); return $command->withAddedMetadata(Metadata::STORY_NAME, $storyName->toString()); }