12 use PHPUnit\Framework\TestCase;
22 private $textXml = <<<EOT
23 <?xml version=
"1.0" encoding=
"utf-8"?>
27 <text variable=
"title"/>
34 private $dataTitle =
'{"title":"Ein herzzerreißendes Werk von umwerfender Genialität","type":"book"}';
35 private $dataPublisherPlace =
'{"publisher-place":"Frankfurt am Main"}';
42 public function setUp()
53 <?xml version=
"1.0" encoding=
"utf-8"?>
54 <style xmlns=
"http://purl.org/net/xbiblio/csl" version=
"1.0">
58 <text variable=
"title" font-style=
"italic"/>
61 <text variable=
"title"/>
78 $citeProc->render(json_decode(
"[{\"title\":\"Ein Buch\", \"type\": \"book\"}]"),
"citation")
83 $citeProc->render(json_decode(
"[{\"title\":\"Ein Buch\", \"type\": \"thesis\"}]"),
"citation")
109 "title": "My Anonymous Heritage",
113 $enrichTitleWithLinkFunction =
function($citeItem, $renderedVariable) {
114 return isset($citeItem->id) ?
'<a href="https://example.org/publication/' . $citeItem->id .
'" title="' . $renderedVariable .
'">'
115 . $renderedVariable .
'</a>' : $renderedVariable;
119 $citeproc =
new CiteProc($apa,
"de-DE",
121 'title' => $enrichTitleWithLinkFunction
124 $actual = $citeproc->render(json_decode($cslJson),
"bibliography");
126 $expected =
'<div class="csl-bib-body">
127 <div class="csl-entry">Doe, J., & Müller, A. (2001). <i><a href="https://example.org/publication/item-1" title="My Anonymous Heritage">My Anonymous Heritage</a></i>.</div>
129 $this->assertEquals($expected, $actual);
149 "container-title": "Heritages and taxes. How to avoid responsibility.",
159 "publisher": "Initiative Neue Soziale Marktwirtschaft (INSM)",
160 "publisher-place": "Berlin, Germany",
161 "title": "My Anonymous Heritage",
163 "URL": "https://example.org/publication/item-1"
166 $enrichUrlWithLinkFunction =
function($citeItem, $renderedVariable) {
167 return preg_match(
"/http[s]?:\/\/.+/", $citeItem->URL) ?
'<a href="' . $citeItem->URL .
'">'
168 . $citeItem->URL .
'</a>' : $citeItem->URL;
172 $citeproc =
new CiteProc($apa,
"en-US", [
173 'URL' => $enrichUrlWithLinkFunction
175 $actual = $citeproc->render(json_decode($cslJson),
"bibliography");
177 $expected =
'<div class="csl-bib-body">
178 <div class="csl-entry">Doe, J., & Müller, A. (2001). My Anonymous Heritage. In <i>Heritages and taxes. How to avoid responsibility.</i> (pp. 123-127). Initiative Neue Soziale Marktwirtschaft (INSM). <a href="https://example.org/publication/item-1">https://example.org/publication/item-1</a></div>
180 $this->assertEquals($expected, $actual);
202 "title": "My Anonymous Heritage",
208 "family": "Anderson",
227 "title": "Two authors writing a book"
232 $citeproc =
new CiteProc($apa,
"en-US",
235 "citation-number" =>
function($citeItem, $renderedVariable) {
236 return isset($citeItem->id) ?
'<a id="' . $citeItem->id.
'" href="#' . $citeItem->id .
'">'
237 . $renderedVariable .
'</a>' : $renderedVariable;
241 "citation-number" =>
function($citeItem, $renderedVariable) {
242 return isset($citeItem->id) ?
'<a href="#' . $citeItem->id .
'">'
243 . $renderedVariable .
'</a>' : $renderedVariable;
249 $actual = $citeproc->render(json_decode($cslJson),
"bibliography");
251 $expected =
'<div class="csl-bib-body">
252 <div class="csl-entry"><div class="csl-left-margin">[<a id="item-1" href="#item-1">1</a>]</div><div class="csl-right-inline">J. Doe III, My Anonymous Heritage, 2001.</div></div>
253 <div class="csl-entry"><div class="csl-left-margin">[<a id="ITEM-2" href="#ITEM-2">2</a>]</div><div class="csl-right-inline">J. Anderson, J. Brown, Two authors writing a book, 1998.</div></div>
255 $this->assertEquals($expected, $actual);
257 $actual = $citeproc->render(json_decode($cslJson),
"citation");
259 $expected =
'[<a href="#item-1">1</a>,<a href="#ITEM-2">2</a>]';
261 $this->assertEquals($expected, $actual);