/** * Run test for process method (content not empty) */ public function testProcessContentNotEmpty() { $chainMock = $this->getChainMock(); $assetMock = $this->getAssetMock(); $chainMock->expects(self::once())->method('getContent')->willReturn('test-content'); $chainMock->expects(self::once())->method('getAsset')->willReturn($assetMock); $this->filenameResolverMock->expects(self::never())->method('resolve'); $this->lockerProcessMock->expects(self::never())->method('lockProcess'); $this->lockerProcessMock->expects(self::never())->method('unlockProcess'); $alternativeSource = new AlternativeSource($this->filenameResolverMock, $this->objectManagerMock, $this->lockerProcessMock, $this->sorterMock, $this->assetBuilderMock, 'lock', []); $alternativeSource->process($chainMock); }
/** * Preparation of content for the destination file * * @param string $path * @param string $content * @param string $module * @param FallbackContext $context * @return string * @throws \UnexpectedValueException */ private function processContent($path, $content, $module, FallbackContext $context) { if ($this->alternativesSorted === null) { $this->alternativesSorted = $this->sorter->sort($this->alternatives); } $path = $this->filenameResolver->resolve($path); foreach ($this->alternativesSorted as $name => $alternative) { $asset = $this->assetBuilder->setArea($context->getAreaCode())->setTheme($context->getThemePath())->setLocale($context->getLocale())->setModule($module)->setPath(preg_replace('#\\.' . preg_quote(pathinfo($path, PATHINFO_EXTENSION)) . '$#', '.' . $name, $path))->build(); $processor = $this->objectManager->get($alternative[self::PROCESSOR_CLASS]); if (!$processor instanceof ContentProcessorInterface) { throw new \UnexpectedValueException('"' . $alternative[self::PROCESSOR_CLASS] . '" has to implement the ContentProcessorInterface.'); } $content = $processor->processContent($asset); if (trim($content) !== '') { return $content; } } return $content; }