ILIAS  trunk Revision v11.0_alpha-1702-gfd3ecb7f852
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilBibtechParserTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
25 
27 {
29 
30  protected function setUp(): void
31  {
32  global $DIC;
33  $this->dic_backup = is_object($DIC) ? clone $DIC : $DIC;
34 
35  $DIC = new Container();
36  $DIC['resource_storage'] = $this->createMock(Services::class);
37  $DIC['ilDB'] = $this->createMock(ilDBInterface::class);
38  $DIC['refinery'] = new Factory(
39  new ILIAS\Data\Factory(),
40  $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock()
41  );
42  }
43 
44  protected function tearDown(): void
45  {
46  global $DIC;
47  $DIC = $this->dic_backup;
48  }
49 
50  public function testParseBibtechAsArray(): void
51  {
52  $ilBiblEntryFactory = $this->createMock(ilBiblEntryFactoryInterface::class);
53  $ilBiblFieldFactory = $this->createMock(ilBiblFieldFactoryInterface::class);
54  $ilBiblAttributeFactory = $this->createMock(ilBiblAttributeFactoryInterface::class);
55  $reader = new ilBiblTexFileReader(
56  $ilBiblEntryFactory,
57  $ilBiblFieldFactory,
58  $ilBiblAttributeFactory
59  );
60  $reader->setFileContent($this->getBibtechContent());
61  $content = $reader->parseContent();
62  $this->assertIsArray($content);
63  $this->assertEquals(2, count($content));
64 
65  // First item
66  $first_item = $content[0];
67  $this->assertEquals('book', $first_item['entryType']);
68  $this->assertEquals('Süß, Henrik http://www.testlink.ch', $first_item['author']);
69  $this->assertEquals('Last Minute Histologie: [Fit fürs Examen in 2 Tagen!]', $first_item['title']);
70  $this->assertEquals('München', $first_item['address']);
71  $this->assertEquals('2012', $first_item['year']);
72  $this->assertEquals('Elsevier, Urban & Fischer', $first_item['publisher']);
73  $this->assertEquals('Histologie. Lehrbuch', $first_item['keywords']);
74  $this->assertEquals('XIII, 103 S.', $first_item['pages']);
75  $this->assertEquals('1. Aufl.', $first_item['edition']);
76  $this->assertEquals('3-437-43015-7', $first_item['isbn']);
77 
78  // Second item
79  $second_item = $content[1];
80  $this->assertEquals('journal', $second_item['entryType']);
81  $this->assertEquals('Voll, Markus http://de.wikipedia.org/wiki/a-z', $second_item['author']);
82  $this->assertEquals(
83  'Atlas of neuroanatomy for communication science and disorders: based on the work of Michael Schuenke, Erik Schulte, Udo Schumacher',
84  $second_item['title']
85  );
86  $this->assertEquals('New York', $second_item['address']);
87  $this->assertEquals('2012', $second_item['year']);
88  $this->assertEquals('Thieme', $second_item['publisher']);
89  $this->assertEquals(
90  'Sprachstörung. Zentralnervensystem. Neuroanatomie. Neuropathologie. Atlas',
91  $second_item['keywords']
92  );
93  $this->assertEquals('IX, 176 S.', $second_item['pages']);
94  $this->assertEquals('978-1-60406-649-4', $second_item['isbn']);
95  }
96 
97  public function testParseBibtechAsItems(): void
98  {
99  $ilBiblEntryFactory = $this->createMock(ilBiblEntryFactoryInterface::class);
100  $ilBiblFieldFactory = $this->createMock(ilBiblFieldFactoryInterface::class);
101  $ilBiblAttributeFactory = $this->createMock(ilBiblAttributeFactoryInterface::class);
102  $ilObjBibliographic = $this->createMock(ilObjBibliographic::class);
103 
104  $reader = new ilBiblTexFileReader(
105  $ilBiblEntryFactory,
106  $ilBiblFieldFactory,
107  $ilBiblAttributeFactory
108  );
109  $reader->setFileContent($this->getBibtechContent());
110 
111  $ilBiblEntryFactory->expects($this->atLeast(2))
112  ->method('getEmptyInstance')
113  ->willReturnOnConsecutiveCalls(new ilBiblEntry(), new ilBiblEntry());
114 
115 
116  $content = $reader->parseContentToEntries($ilObjBibliographic);
117 
118  $this->assertIsArray($content);
119  $this->assertEquals(2, count($content));
120  $this->assertContainsOnlyInstancesOf(ilBiblEntry::class, $content);
121 
122  // First item
124  $first_item = $content[0];
125  $this->assertEquals('book', $first_item->getType());
126  // Second Item
128  $second_item = $content[1];
129  $this->assertEquals('journal', $second_item->getType());
130  }
131 
132  protected function getBibtechContent(): string
133  {
134  return '@book {
135 author = {Süß, Henrik http://www.testlink.ch},
136 title = {Last Minute Histologie: [Fit fürs Examen in 2 Tagen!]},
137 address = {München},
138 year = {2012},
139 publisher = {Elsevier, Urban & Fischer},
140 keywords = {Histologie. Lehrbuch},
141 pages = {XIII, 103 S.},
142 edition = {1. Aufl.},
143 ISBN = {978-3-437-43015-2},
144 ISBN = {3-437-43015-7},
145 }
146 @journal {
147 author = {Voll, Markus http://de.wikipedia.org/wiki/a-z},
148 editor = {Voll, Markus},
149 title = {Atlas of neuroanatomy for communication science and disorders: based on the work of Michael Schuenke, Erik Schulte, Udo Schumacher},
150 address = {New York},
151 year = {2012},
152 publisher = {Thieme},
153 keywords = {Sprachstörung. Zentralnervensystem. Neuroanatomie. Neuropathologie. Atlas},
154 pages = {IX, 176 S.},
155 ISBN = {978-1-60406-649-4},
156 }';
157  }
158 }
Interface Observer Contains several chained tasks and infos about them.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:35
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: shib_login.php:22
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...