Open Journal Systems  3.3.0
CiteProcTest.php
1 <?php
2 /*
3  * citeproc-php
4  *
5  * @link http://github.com/seboettg/citeproc-php for the source repository
6  * @copyright Copyright (c) 2016 Sebastian Böttger.
7  * @license https://opensource.org/licenses/MIT
8  */
9 
10 namespace Seboettg\CiteProc;
11 
12 use PHPUnit\Framework\TestCase;
13 
14 
15 class CiteProcTest extends TestCase
16 {
17 
19 
23  private $dataObj;
24 
28  private $citeProc;
29 
30  public function setUp()
31  {
32  //parent::setU
33  }
34 
35  public function testFullStyleBibliography1()
36  {
37  $this->_testRenderTestSuite("fullstyles_APABibliography");
38  }
39 
40  public function testFullStyleMultipleAuthors()
41  {
42  $this->_testRenderTestSuite("fullstyles_APA_MultipleAuthors");
43  }
44 
45  public function testFullStyleDINBibliography()
46  {
47  $this->_testRenderTestSuite("fullstyles_DINBibliography");
48  }
49 
51  {
52  $this->_testRenderTestSuite("fullstyles_InternationalJournalOfHumanoid");
53  }
54 
56  {
57  $this->_testRenderTestSuite("fullstyles_NorthWestUniversityHarvard");
58  }
59 
60  public function testRenderCitationNumber()
61  {
62  $this->_testRenderTestSuite("text_renderCitationNumber");
63  }
64 
65  public function testRenderCssStyle()
66  {
67  $style = StyleSheet::loadStyleSheet("international-journal-of-humanoid-robotics");
68  $citeProc = new CiteProc($style);
69  $cssStyles = $citeProc->renderCssStyles();
70 
71  $this->assertTrue(strpos($cssStyles, "csl-left-margin") !== false);
72  $this->assertTrue(strpos($cssStyles, "csl-right-inline") !== false);
73  }
74 
75  public function testRenderCssStyleHangingIndent()
76  {
77  $style = StyleSheet::loadStyleSheet("din-1505-2");
78  $citeProc = new CiteProc($style);
79  $cssStyles = $citeProc->renderCssStyles();
80  $this->assertTrue(strpos($cssStyles, "csl-entry") !== false);
81  $this->assertTrue(strpos($cssStyles, "text-indent: -2em") !== false);
82  }
83 
85  {
86  $style = StyleSheet::loadStyleSheet("harvard-north-west-university");
87  $citeProc = new CiteProc($style);
88  $cssStyles = $citeProc->renderCssStyles();
89  $this->assertTrue(strpos($cssStyles, "csl-entry") !== false);
90  $this->assertTrue(strpos($cssStyles, "line-height: 1em") !== false);
91  $this->assertTrue(strpos($cssStyles, "margin-bottom: 2em") !== false);
92  }
93 
94  public function testGetInfo()
95  {
96  $style = StyleSheet::loadStyleSheet("harvard-north-west-university");
97  $citeProc = new CiteProc($style);
98  $citeProc->init();
99  $info = CiteProc::getContext()->getInfo();
100  $this->assertEquals("Hermien Wolff", $info->getAuthors()[0]->name);
101  $this->assertEquals("North-West University - Harvard", $info->getTitle());
102  }
103 
104  public function testFilterCitations()
105  {
106  $style = StyleSheet::loadStyleSheet("harvard-north-west-university");
107  $citeProc = new CiteProc($style);
108 
109  $dataString = '[
110  {
111  "author": [
112  {
113  "family": "Doe",
114  "given": "John"
115  }
116  ],
117  "id": "ITEM-1",
118  "issued": {
119  "date-parts":[[2012]]
120  },
121  "title": "Book 1",
122  "type": "book"
123  },
124  {
125  "author": [
126  {
127  "family": "Doe",
128  "given": "Jane"
129  }
130  ],
131  "issued": {
132  "date-parts":[[2012]]
133  },
134  "id": "ITEM-2",
135  "title": "Book 2",
136  "type": "book"
137  },
138  {
139  "author": [
140  {
141  "family": "Doe",
142  "given": "John"
143  }
144  ],
145  "issued": {
146  "date-parts":[[2011]]
147  },
148  "id": "ITEM-3",
149  "title": "Book 3",
150  "type": "book"
151  }
152  ]';
153 
154  $actual = $citeProc->render(json_decode($dataString), "citation");
155  $expected = '(Doe, 2011; Doe, 2012; Doe, 2012)';
156  $this->assertEquals($expected, $actual);
157 
158  $filter = '[{"id": "ITEM-1"}]';
159  $actualFiltered = $citeProc->render(json_decode($dataString), "citation", json_decode($filter));
160  $expectedFiltered = '(Doe, 2012)';
161  $this->assertEquals($actualFiltered, $expectedFiltered);
162 
163  $citeProc = new CiteProc(StyleSheet::loadStyleSheet("elsevier-vancouver"));
164 
165  $actualFilteredElsevier = $citeProc->render(json_decode($dataString), "citation", json_decode('[{"id": "ITEM-2"}]'));
166  $expectedFilteredElsevier = '[2]';
167  $this->assertEquals($actualFilteredElsevier, $expectedFilteredElsevier);
168  }
169 
170 
171  public function testRenderCitationNumberResultAsArray()
172  {
173  $style = StyleSheet::loadStyleSheet("elsevier-vancouver");
174  $citeProc = new CiteProc($style);
175  $result = $citeProc->render(json_decode("
176  [
177  {
178  \"id\": \"ITEM-1\",
179  \"title\": \"Book 1\",
180  \"type\": \"book\"
181  },
182  {
183  \"id\": \"ITEM-2\",
184  \"title\": \"Book 2\",
185  \"type\": \"book\"
186  },
187  {
188  \"id\": \"ITEM-3\",
189  \"title\": \"Book 3\",
190  \"type\": \"book\"
191  }
192  ]"), "citation", json_decode("
193  [
194  [
195  {
196  \"id\": \"ITEM-1\"
197  },
198  {
199  \"id\": \"ITEM-3\"
200  }
201  ],
202  [
203  {
204  \"id\": \"ITEM-2\"
205  }
206  ]
207  ]"), true);
208 
209  $this->assertTrue(is_array($result));
210  $this->assertEquals(2, count($result));
211  $this->assertEquals("[1,3]", $result[0]);
212  $this->assertEquals("[2]", $result[1]);
213  }
214 
215  public function testOverrideOnlyCurrentLang()
216  {
217  $this->_testRenderTestSuite("locale_OverrideOnlyCurrentLang");
218  }
219 }
Seboettg\CiteProc\TestSuiteTestCaseTrait
trait TestSuiteTestCaseTrait
Definition: TestSuiteTestCaseTrait.php:17
Seboettg\CiteProc\CiteProcTest\testFilterCitations
testFilterCitations()
Definition: CiteProcTest.php:110
Seboettg\CiteProc\CiteProcTest\testRenderCssStyleLineAndEntrySpacing
testRenderCssStyleLineAndEntrySpacing()
Definition: CiteProcTest.php:90
Seboettg\CiteProc\CiteProcTest\testRenderCssStyleHangingIndent
testRenderCssStyleHangingIndent()
Definition: CiteProcTest.php:81
Seboettg\CiteProc\CiteProcTest\testRenderCitationNumber
testRenderCitationNumber()
Definition: CiteProcTest.php:66
Seboettg\CiteProc
Definition: CiteProc.php:10
Seboettg\CiteProc\CiteProcTest\testFullStyleDINBibliography
testFullStyleDINBibliography()
Definition: CiteProcTest.php:51
Seboettg\CiteProc\CiteProcTest\testFullStyleInternationalJournalOfHumanoidRobotics
testFullStyleInternationalJournalOfHumanoidRobotics()
Definition: CiteProcTest.php:56
Seboettg\CiteProc\_testRenderTestSuite
_testRenderTestSuite($filterTests, $ignore=null)
Definition: TestSuiteTestCaseTrait.php:27
Seboettg\CiteProc\StyleSheet\loadStyleSheet
static loadStyleSheet($styleName)
Definition: StyleSheet.php:35
Seboettg\CiteProc\CiteProc
Definition: CiteProc.php:32
Seboettg\CiteProc\CiteProcTest\testFullStyleMultipleAuthors
testFullStyleMultipleAuthors()
Definition: CiteProcTest.php:46
Seboettg\CiteProc\CiteProcTest\testFullStyleNorthWestUniversityHarvard
testFullStyleNorthWestUniversityHarvard()
Definition: CiteProcTest.php:61
Seboettg\CiteProc\CiteProcTest\testGetInfo
testGetInfo()
Definition: CiteProcTest.php:100
Seboettg\CiteProc\CiteProcTest
Definition: CiteProcTest.php:15
Seboettg\CiteProc\CiteProc\getContext
static getContext()
Definition: CiteProc.php:45
Seboettg\CiteProc\CiteProcTest\testFullStyleBibliography1
testFullStyleBibliography1()
Definition: CiteProcTest.php:41
Seboettg\CiteProc\CiteProcTest\testRenderCitationNumberResultAsArray
testRenderCitationNumberResultAsArray()
Definition: CiteProcTest.php:177
Seboettg\CiteProc\CiteProcTest\testOverrideOnlyCurrentLang
testOverrideOnlyCurrentLang()
Definition: CiteProcTest.php:221
Seboettg\CiteProc\CiteProcTest\testRenderCssStyle
testRenderCssStyle()
Definition: CiteProcTest.php:71
Seboettg\CiteProc\CiteProcTest\setUp
setUp()
Definition: CiteProcTest.php:36