ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilRisParserTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21use PHPUnit\Framework\TestCase;
25
26class ilRisParserTest extends TestCase
27{
28 private ?Container $dic_backup = null;
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;
48 }
49
50 public function testParseRisAsArray(): void
51 {
52 $ilBiblEntryFactory = $this->createMock(ilBiblEntryFactoryInterface::class);
53 $ilBiblFieldFactory = $this->createMock(ilBiblFieldFactoryInterface::class);
54 $ilBiblAttributeFactory = $this->createMock(ilBiblAttributeFactoryInterface::class);
55 $reader = new ilBiblRisFileReader(
56 $ilBiblEntryFactory,
57 $ilBiblFieldFactory,
58 $ilBiblAttributeFactory
59 );
60 $reader->setFileContent($this->getRisContent());
61 $content = $reader->parseContent();
62
63 $this->assertIsArray($content);
64 $this->assertCount(2, $content);
65
66 // First item
67 $first_item = $content[0];
68
69 $this->assertEquals('BOOK', $first_item['TY']);
70 $this->assertEquals('Schrode, Paula, Simon, Udo Gerald', $first_item['A2']);
71 $this->assertEquals('Die Sunna leben', $first_item['T1']);
72 $this->assertEquals('zur Dynamik islamischer Religionspraxis in Deutschland', $first_item['T2']);
73 $this->assertEquals('Würzburg', $first_item['CY']);
74 $this->assertEquals('2012', $first_item['Y1']);
75 $this->assertEquals('Egon', $first_item['PB']);
76 $this->assertEquals('Deutschland, Islam, Religionsausübung, Kongress', $first_item['KW']);
77 $this->assertEquals('250 S.', $first_item['EP']);
78 $this->assertEquals('978-3-89913-722-4', $first_item['SN']);
79
80 // Second item
81 $second_item = $content[1];
82
83 $this->assertEquals('JOURNAL', $second_item['TY']);
84 $this->assertEquals('Gienow-Hecht, Jessica C. E.', $second_item['A2']);
85 $this->assertEquals('Searching for a cultural diplomacy', $second_item['T1']);
86 $this->assertEquals('New York [u.a.]', $second_item['CY']);
87 $this->assertEquals('2010', $second_item['Y1']);
88 $this->assertEquals('Berghahn', $second_item['PB']);
89 $this->assertEquals('Sowjetunion, Mitteleuropa, Naher Osten, Japan, Kulturbeziehungen, Diplomatie, Geschichte 1900-2000, Aufsatzsammlung', $second_item['KW']);
90 $this->assertEquals('XII, 265 S.', $second_item['EP']);
91 $this->assertEquals('978-1-84545-746-4', $second_item['SN']);
92 }
93
94 public function testParseRisAsItems(): void
95 {
96 $ilBiblEntryFactory = $this->createMock(ilBiblEntryFactoryInterface::class);
97 $ilBiblFieldFactory = $this->createMock(ilBiblFieldFactoryInterface::class);
98 $ilBiblAttributeFactory = $this->createMock(ilBiblAttributeFactoryInterface::class);
99 $ilObjBibliographic = $this->createMock(ilObjBibliographic::class);
100
101 $reader = new ilBiblRisFileReader(
102 $ilBiblEntryFactory,
103 $ilBiblFieldFactory,
104 $ilBiblAttributeFactory
105 );
106 $reader->setFileContent($this->getRisContent());
107
108 $ilBiblEntryFactory->expects($this->atLeast(2))
109 ->method('getEmptyInstance')
110 ->willReturnOnConsecutiveCalls($one = new ilBiblEntry(), $two = new ilBiblEntry());
111
112
113 $content = $reader->parseContentToEntries($ilObjBibliographic);
114
115 $this->assertIsArray($content);
116 $this->assertCount(2, $content);
117 $this->assertContainsOnlyInstancesOf(ilBiblEntry::class, $content);
118
119 // First item
121 $first_item = $content[0];
122 $this->assertEquals('BOOK', $first_item->getType());
123 $this->assertSame($one, $first_item);
124 // Second Item
126 $second_item = $content[1];
127 $this->assertEquals('JOURNAL', $second_item->getType());
128 $this->assertSame($two, $second_item);
129 }
130
131 protected function getRisContent(): string
132 {
133 return 'TY - BOOK
134A2 - Schrode, Paula
135A2 - Simon, Udo Gerald
136T1 - Die Sunna leben
137T2 - zur Dynamik islamischer Religionspraxis in Deutschland
138CY - Würzburg
139Y1 - 2012
140PB - Egon
141KW - Deutschland
142KW - Islam
143KW - Religionsausübung
144KW - Kongress
145EP - 250 S.
146SN - 978-3-89913-722-4
147U1 - Wilhelmstraße
148ER -
149TY - JOURNAL
150A2 - Gienow-Hecht, Jessica C. E.
151T1 - Searching for a cultural diplomacy
152CY - New York [u.a.]
153Y1 - 2010
154PB - Berghahn
155KW - Sowjetunion
156KW - Mitteleuropa
157KW - Naher Osten
158KW - Japan
159KW - Kulturbeziehungen
160KW - Diplomatie
161KW - Geschichte 1900-2000
162KW - Aufsatzsammlung
163EP - XII, 265 S.
164SN - 978-1-84545-746-4
165U1 - Wilhelmstraße
166ER - ';
167 }
168}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
Builds data types.
Definition: Factory.php:36
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Container $dic_backup
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
global $DIC
Definition: shib_login.php:26