2 declare(strict_types = 1);
19 use Prophecy\Argument;
28 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
44 'attributes from db overwrite config' => [
45 '27 tsTarget tsClass tsTitle',
46 't3://record?identifier=tx_news&uid=1 dbTarget dbClass dbTitle',
47 '27 dbTarget dbClass dbTitle',
49 'no attributes from db - config is taken' => [
50 '27 tsTarget tsClass tsTitle',
51 't3://record?identifier=tx_news&uid=1',
52 '27 tsTarget tsClass tsTitle',
54 'mixed: target from db' => [
55 '27 tsTarget tsClass tsTitle',
56 't3://record?identifier=tx_news&uid=1 dbTarget',
57 '27 dbTarget tsClass tsTitle',
59 'mixed: class from db' => [
60 '27 tsTarget tsClass tsTitle',
61 't3://record?identifier=tx_news&uid=1 - dbClass',
62 '27 tsTarget dbClass tsTitle',
64 'mixed: title from db' => [
65 '27 tsTarget tsClass tsTitle',
66 't3://record?identifier=tx_news&uid=1 - - dbTitle',
67 '27 tsTarget tsClass dbTitle',
69 'mixed: target and title from db' => [
70 '27 tsTarget tsClass tsTitle',
71 't3://record?identifier=tx_news&uid=1 dbTarget - dbTitle',
72 '27 dbTarget tsClass dbTitle',
74 'mixed: target and title from db, no class set' => [
75 '27 tsTarget - tsTitle',
76 't3://record?identifier=tx_news&uid=1 dbTarget - dbTitle',
77 '27 dbTarget - dbTitle',
79 'mixed: title from db, no config set' => [
81 't3://record?identifier=tx_news&uid=1 - - dbTitle',
84 'no attributes configured' => [
86 't3://record?identifier=tx_news&uid=1',
109 'parameter' => $parameterFromDb,
111 $extractedLinkDetails = [
112 'identifier' =>
'tx_news',
115 'typoLinkParameter' =>
't3://record?identifier=tx_news&uid=1',
117 $typoScriptConfig = [
125 'parameter' => $parameterFromTypoScript,
126 'additionalParams' =>
'&tx_news_pi1[news]={field:uid}',
127 'additionalParams.' =>
144 'handler' => RecordLinkHandler::class,
148 'table' =>
'tx_news_domain_model_news',
150 'scanAfter' =>
'page',
157 $linkText =
'Test Link';
159 $expectedConfiguration = [
160 'parameter' => $expectedParameter,
161 'additionalParams' =>
'&tx_news_pi1[news]={field:uid}',
162 'additionalParams.' => [
'insertData' =>
'1'],
166 $tsfe = $this->prophesize(TypoScriptFrontendController::class);
167 $templateService = $this->prophesize(TemplateService::class);
168 $pageRepository = $this->prophesize(PageRepository::class);
169 $cObj = $this->prophesize(ContentObjectRenderer::class);
172 $tsfe->tmpl = $templateService->reveal();
173 $tsfe->tmpl->setup = $typoScriptConfig;
174 $tsfe->sys_page = $pageRepository->reveal();
175 GeneralUtility::addInstance(ContentObjectRenderer::class, $cObj->reveal());
177 $pageRepository->checkRecord(
'tx_news_domain_model_news', 1)->willReturn(
183 $cObj->start(Argument::cetera())->shouldBeCalled();
184 $cObj->typoLink(Argument::cetera())->shouldBeCalled();
186 $tsfe->getPagesTSconfig()->willReturn($pageTsConfig);
191 $databaseRecordLinkBuilder->build($extractedLinkDetails, $linkText, $target, $confFromDb);
194 $cObj->typoLink($linkText, $expectedConfiguration)->shouldHaveBeenCalled();