diff --git a/Classes/DataProcessing/ContainerProcessor.php b/Classes/DataProcessing/ContainerProcessor.php index 4c58f986..8fc0fc26 100644 --- a/Classes/DataProcessing/ContainerProcessor.php +++ b/Classes/DataProcessing/ContainerProcessor.php @@ -51,7 +51,7 @@ public function process( } $contentId = null; if ($processorConfiguration['contentId.'] ?? false) { - $contentId = (int)$cObj->stdWrap($processorConfiguration['contentId'], $processorConfiguration['contentId.']); + $contentId = (int)$cObj->stdWrap($processorConfiguration['contentId'] ?? '', $processorConfiguration['contentId.']); } elseif ($processorConfiguration['contentId'] ?? false) { $contentId = (int)$processorConfiguration['contentId']; } diff --git a/Tests/Unit/DataProcessing/ContainerProcessorTest.php b/Tests/Unit/DataProcessing/ContainerProcessorTest.php new file mode 100644 index 00000000..abcae657 --- /dev/null +++ b/Tests/Unit/DataProcessing/ContainerProcessorTest.php @@ -0,0 +1,99 @@ + 1]; + $contentObjectRenderer = $this->getMockBuilder(ContentObjectRenderer::class)->disableOriginalConstructor()->getMock(); + $contentObjectRenderer->expects($this->never())->method('stdWrap'); + $context = $this->getMockBuilder(Context::class)->getMock(); + $contentDataProcessor = $this->getMockBuilder(ContentDataProcessor::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory = $this->getMockBuilder(FrontendContainerFactory::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory->expects($this->once())->method('buildContainer')->with( + $contentObjectRenderer, $context, 1 + )->willReturn(new Container([], [])); + $containerProcessor = new ContainerProcessor($contentDataProcessor, $context, $frontendContainerFactory); + $containerProcessor->process($contentObjectRenderer, [], $processorConfiguration, []); + } + + /** + * @test + */ + public function configuredContentIdStdWrapIsUsed(): void + { + $processorConfiguration = ['contentId' => 1, 'contentId.' => 'foo']; + $contentObjectRenderer = $this->getMockBuilder(ContentObjectRenderer::class)->disableOriginalConstructor()->getMock(); + $contentObjectRenderer->expects($this->once())->method('stdWrap')->with(1, 'foo')->willReturn(2); + $context = $this->getMockBuilder(Context::class)->getMock(); + $contentDataProcessor = $this->getMockBuilder(ContentDataProcessor::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory = $this->getMockBuilder(FrontendContainerFactory::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory->expects($this->once())->method('buildContainer')->with( + $contentObjectRenderer, $context, 2 + )->willReturn(new Container([], [])); + $containerProcessor = new ContainerProcessor($contentDataProcessor, $context, $frontendContainerFactory); + $containerProcessor->process($contentObjectRenderer, [], $processorConfiguration, []); + } + + /** + * @test + */ + public function canBeCalledWithoutContentId(): void + { + $processorConfiguration = ['contentId.' => 'foo']; + $contentObjectRenderer = $this->getMockBuilder(ContentObjectRenderer::class)->disableOriginalConstructor()->getMock(); + $contentObjectRenderer->expects($this->once())->method('stdWrap')->with('', 'foo')->willReturn(2); + $context = $this->getMockBuilder(Context::class)->getMock(); + $contentDataProcessor = $this->getMockBuilder(ContentDataProcessor::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory = $this->getMockBuilder(FrontendContainerFactory::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory->expects($this->once())->method('buildContainer')->with( + $contentObjectRenderer, $context, 2 + )->willReturn(new Container([], [])); + $containerProcessor = new ContainerProcessor($contentDataProcessor, $context, $frontendContainerFactory); + $containerProcessor->process($contentObjectRenderer, [], $processorConfiguration, []); + } + + /** + * @test + */ + public function nullIsUsedForFactoryIfNoContentIdIsGiven(): void + { + $processorConfiguration = []; + $contentObjectRenderer = $this->getMockBuilder(ContentObjectRenderer::class)->disableOriginalConstructor()->getMock(); + $contentObjectRenderer->expects($this->never())->method('stdWrap'); + $context = $this->getMockBuilder(Context::class)->getMock(); + $contentDataProcessor = $this->getMockBuilder(ContentDataProcessor::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory = $this->getMockBuilder(FrontendContainerFactory::class)->disableOriginalConstructor()->getMock(); + $frontendContainerFactory->expects($this->once())->method('buildContainer')->with( + $contentObjectRenderer, $context, null + )->willReturn(new Container([], [])); + $containerProcessor = new ContainerProcessor($contentDataProcessor, $context, $frontendContainerFactory); + $containerProcessor->process($contentObjectRenderer, [], $processorConfiguration, []); + } + +}