diff --git a/Tests/Fixtures/Format/alto.xml b/Tests/Fixtures/Format/alto.xml
new file mode 100644
index 0000000000..770fc554fc
--- /dev/null
+++ b/Tests/Fixtures/Format/alto.xml
@@ -0,0 +1,66 @@
+
+
+
+ pixel
+
+
+ 2020-05-14
+
+ ABBYY
+ ABBYY FineReader Engine
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Fixtures/Format/altoNoString.xml b/Tests/Fixtures/Format/altoNoString.xml
new file mode 100644
index 0000000000..f3761291b8
--- /dev/null
+++ b/Tests/Fixtures/Format/altoNoString.xml
@@ -0,0 +1,59 @@
+
+
+
+ pixel
+
+
+ 2020-05-14
+
+ ABBYY
+ ABBYY FineReader Engine
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Fixtures/Format/altoNoTextBlock.xml b/Tests/Fixtures/Format/altoNoTextBlock.xml
new file mode 100644
index 0000000000..c03ea75d66
--- /dev/null
+++ b/Tests/Fixtures/Format/altoNoTextBlock.xml
@@ -0,0 +1,38 @@
+
+
+
+ pixel
+
+
+ 2020-05-14
+
+ ABBYY
+ ABBYY FineReader Engine
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Fixtures/Format/altoNoTextLine.xml b/Tests/Fixtures/Format/altoNoTextLine.xml
new file mode 100644
index 0000000000..36fc3022f1
--- /dev/null
+++ b/Tests/Fixtures/Format/altoNoTextLine.xml
@@ -0,0 +1,48 @@
+
+
+
+ pixel
+
+
+ 2020-05-14
+
+ ABBYY
+ ABBYY FineReader Engine
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Fixtures/Format/audioVideo.xml b/Tests/Fixtures/Format/audioVideo.xml
new file mode 100644
index 0000000000..a949c07149
--- /dev/null
+++ b/Tests/Fixtures/Format/audioVideo.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+ Color
+
+ Phoenix Finish
+ Apple ProRes 4444
+
+ 24
+ Yes
+
+
+ 1.375:1
+
+ 00:01:30.07
+
+ 24
+
+
+
+
+
+
+
+
+
+
+
+ 01:10:35.08
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Fixtures/Format/modsAuthorNoAutRoleTerm.xml b/Tests/Fixtures/Format/modsAuthorNoAutRoleTerm.xml
new file mode 100644
index 0000000000..645502e814
--- /dev/null
+++ b/Tests/Fixtures/Format/modsAuthorNoAutRoleTerm.xml
@@ -0,0 +1,126 @@
+
+
+
+ Odol-Mundwasser, 3 Werbespots
+
+
+
+ SAVE: Beispiel-Kollektion
+
+
+
+ 2180770-X
+
+ Stiftung Deutsches Hygiene-Museum
+
+ oth
+
+
+
+ AnonymousGiven1 AnonymousFamily1
+
+
+ AnonymousGiven2
+ AnonymousFamily2
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 2019
+
+
+ ger
+
+
+ positiv, farbig, 24 fps, Bildseitenverhältnis 1,375:1, 2048 px horizontal, Codec: Apple ProRes (HQ)
+ 4444, Container: Quicktime .mov
+
+ access
+ video/quicktime
+ 1 Online-Ressource (1 min, 30 s)
+ reformatted digital
+
+ [Inhaltsbeschreibung]
+
+
+ Odol-Mundwasser, 3 Werbespots
+
+
+ 2180770-X
+
+ Stiftung Deutsches Hygiene-Museum
+
+ oth
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 1965
+ 1975
+
+
+ ger
+
+
+ Nativ-Scan mit Overscan, Videocodec FFV1 Version 3, Container: Matroska
+ preservation
+ video/quicktime
+ 1 Online-Ressource (1 min, 16 s)
+ digitized other analog
+ Acetat mit Lichtton, Umkehr-Positiv, farbig ; 16 mm
+
+ Bearbeitete digitale Ausgabe eines Exemplars aus dem Bestand der Stiftung
+ Deutsches Hygiene-Museum Dresden
+
+ Die Digitalisierung des Films erfolgte im Rahmen des Programms „Sicherung des
+ audiovisuellen Erbes in Sachsen“ des Filmverband Sachsen (2019) und der Sächsischen Landesbibliothek –
+ Staats- und Universitätsbibliothek Dresden in Kooperation mit: Stiftung Deutsches Hygiene-Museum Dresden,
+ gefördert durch: Sächsisches Staatsministerium für Wissenschaft und Kunst
+
+ 1703800354
+
+ DE-14
+
+ Odol 2915 (Rolle 2)
+
+
+ 1703800435
+ http://digital.slub-dresden.de/id1703800435
+ urn:nbn:de:bsz:14-db-id17038004351
+
+ DE-14
+
+ https://digital.slub-dresden.de/id1703800435
+
+
+ Public Domain Mark 1.0
+
+ Open Access
+
+
+
+
+ oai:de:slub-dresden:db:id-1703800435
+
+
+
+
diff --git a/Tests/Fixtures/Format/modsAuthorWithAutRoleTerm.xml b/Tests/Fixtures/Format/modsAuthorWithAutRoleTerm.xml
new file mode 100644
index 0000000000..2f6d26f8c2
--- /dev/null
+++ b/Tests/Fixtures/Format/modsAuthorWithAutRoleTerm.xml
@@ -0,0 +1,151 @@
+
+
+
+
+ Jack
+ May
+ I
+ District Commissioner
+ Préfet de région
+
+ aut
+
+
+
+
+ John Paul
+ II
+ Pope
+ 1920-2005
+
+ aut
+
+
+
+
+ Mattox
+ Douglas E.
+ 1947-
+
+ aut
+
+
+
+
+ Woolf, Virginia
+ 1882-1941
+
+ aut
+
+
+
+
+ Alterman, Eric
+ Eric Alterman
+
+ aut
+
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 2019
+
+
+
+ ger
+
+
+ positiv, farbig, 24 fps, Bildseitenverhältnis 1,375:1, 2048 px horizontal, Codec: Apple ProRes (HQ)
+ 4444, Container: Quicktime .mov
+
+ access
+ video/quicktime
+ 1 Online-Ressource (1 min, 30 s)
+ reformatted digital
+
+ [Inhaltsbeschreibung]
+
+
+ Odol-Mundwasser, 3 Werbespots
+
+
+ 2180770-X
+
+ Stiftung Deutsches Hygiene-Museum
+
+ oth
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 1965
+ 1975
+
+
+ ger
+
+
+ Nativ-Scan mit Overscan, Videocodec FFV1 Version 3, Container: Matroska
+ preservation
+ video/quicktime
+ 1 Online-Ressource (1 min, 16 s)
+ digitized other analog
+ Acetat mit Lichtton, Umkehr-Positiv, farbig ; 16 mm
+
+ Bearbeitete digitale Ausgabe eines Exemplars aus dem Bestand der Stiftung
+ Deutsches Hygiene-Museum Dresden
+
+ Die Digitalisierung des Films erfolgte im Rahmen des Programms „Sicherung des
+ audiovisuellen Erbes in Sachsen“ des Filmverband Sachsen (2019) und der Sächsischen Landesbibliothek –
+ Staats- und Universitätsbibliothek Dresden in Kooperation mit: Stiftung Deutsches Hygiene-Museum Dresden,
+ gefördert durch: Sächsisches Staatsministerium für Wissenschaft und Kunst
+
+ 1703800354
+
+ DE-14
+
+ Odol 2915 (Rolle 2)
+
+
+ 1703800435
+ http://digital.slub-dresden.de/id1703800435
+ urn:nbn:de:bsz:14-db-id17038004351
+
+ DE-14
+
+ https://digital.slub-dresden.de/id1703800435
+
+
+ Public Domain Mark 1.0
+
+ Open Access
+
+
+
+
+ oai:de:slub-dresden:db:id-1703800435
+
+
+
+
diff --git a/Tests/Fixtures/Format/modsOriginInfo.xml b/Tests/Fixtures/Format/modsOriginInfo.xml
new file mode 100644
index 0000000000..987d3fd95b
--- /dev/null
+++ b/Tests/Fixtures/Format/modsOriginInfo.xml
@@ -0,0 +1,134 @@
+
+
+
+
+ Alterman, Eric
+ Eric Alterman
+
+ aut
+
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 2019
+
+
+
+
+ Hamburg
+
+ 2018
+
+
+
+
+ Berlin
+
+ 2021
+
+
+
+
+ München
+
+ 2020
+
+
+
+ ger
+
+
+ positiv, farbig, 24 fps, Bildseitenverhältnis 1,375:1, 2048 px horizontal, Codec: Apple ProRes (HQ)
+ 4444, Container: Quicktime .mov
+
+ access
+ video/quicktime
+ 1 Online-Ressource (1 min, 30 s)
+ reformatted digital
+
+ [Inhaltsbeschreibung]
+
+
+ Odol-Mundwasser, 3 Werbespots
+
+
+ 2180770-X
+
+ Stiftung Deutsches Hygiene-Museum
+
+ oth
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 1965
+ 1975
+
+
+ ger
+
+
+ Nativ-Scan mit Overscan, Videocodec FFV1 Version 3, Container: Matroska
+ preservation
+ video/quicktime
+ 1 Online-Ressource (1 min, 16 s)
+ digitized other analog
+ Acetat mit Lichtton, Umkehr-Positiv, farbig ; 16 mm
+
+ Bearbeitete digitale Ausgabe eines Exemplars aus dem Bestand der Stiftung
+ Deutsches Hygiene-Museum Dresden
+
+ Die Digitalisierung des Films erfolgte im Rahmen des Programms „Sicherung des
+ audiovisuellen Erbes in Sachsen“ des Filmverband Sachsen (2019) und der Sächsischen Landesbibliothek –
+ Staats- und Universitätsbibliothek Dresden in Kooperation mit: Stiftung Deutsches Hygiene-Museum Dresden,
+ gefördert durch: Sächsisches Staatsministerium für Wissenschaft und Kunst
+
+ 1703800354
+
+ DE-14
+
+ Odol 2915 (Rolle 2)
+
+
+ 1703800435
+ http://digital.slub-dresden.de/id1703800435
+ urn:nbn:de:bsz:14-db-id17038004351
+
+ DE-14
+
+ https://digital.slub-dresden.de/id1703800435
+
+
+ Public Domain Mark 1.0
+
+ Open Access
+
+
+
+
+ oai:de:slub-dresden:db:id-1703800435
+
+
+
+
diff --git a/Tests/Fixtures/Format/modsOriginInfoWithEditionElectonicEd.xml b/Tests/Fixtures/Format/modsOriginInfoWithEditionElectonicEd.xml
new file mode 100644
index 0000000000..d1f9ffe4f6
--- /dev/null
+++ b/Tests/Fixtures/Format/modsOriginInfoWithEditionElectonicEd.xml
@@ -0,0 +1,138 @@
+
+
+
+
+ Alterman, Eric
+ Eric Alterman
+
+ aut
+
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 2019
+ [Electronic ed.]
+
+
+
+
+ Hamburg
+
+ 2018
+ [Electronic ed.]
+
+
+
+
+ Berlin
+
+ 2021
+ [Electronic ed.]
+
+
+
+
+ München
+
+ 2020
+ [Electronic ed.]
+
+
+
+ ger
+
+
+ positiv, farbig, 24 fps, Bildseitenverhältnis 1,375:1, 2048 px horizontal, Codec: Apple ProRes (HQ)
+ 4444, Container: Quicktime .mov
+
+ access
+ video/quicktime
+ 1 Online-Ressource (1 min, 30 s)
+ reformatted digital
+
+ [Inhaltsbeschreibung]
+
+
+ Odol-Mundwasser, 3 Werbespots
+
+
+ 2180770-X
+
+ Stiftung Deutsches Hygiene-Museum
+
+ oth
+
+
+ Film
+ Werbefilm
+
+
+ Dresden
+
+ SLUB
+ Filmverband Sachsen
+ Stiftung Deutsches Hygiene-Museum
+ 1965
+ 1975
+
+
+ ger
+
+
+ Nativ-Scan mit Overscan, Videocodec FFV1 Version 3, Container: Matroska
+ preservation
+ video/quicktime
+ 1 Online-Ressource (1 min, 16 s)
+ digitized other analog
+ Acetat mit Lichtton, Umkehr-Positiv, farbig ; 16 mm
+
+ Bearbeitete digitale Ausgabe eines Exemplars aus dem Bestand der Stiftung
+ Deutsches Hygiene-Museum Dresden
+
+ Die Digitalisierung des Films erfolgte im Rahmen des Programms „Sicherung des
+ audiovisuellen Erbes in Sachsen“ des Filmverband Sachsen (2019) und der Sächsischen Landesbibliothek –
+ Staats- und Universitätsbibliothek Dresden in Kooperation mit: Stiftung Deutsches Hygiene-Museum Dresden,
+ gefördert durch: Sächsisches Staatsministerium für Wissenschaft und Kunst
+
+ 1703800354
+
+ DE-14
+
+ Odol 2915 (Rolle 2)
+
+
+ 1703800435
+ http://digital.slub-dresden.de/id1703800435
+ urn:nbn:de:bsz:14-db-id17038004351
+
+ DE-14
+
+ https://digital.slub-dresden.de/id1703800435
+
+
+ Public Domain Mark 1.0
+
+ Open Access
+
+
+
+
+ oai:de:slub-dresden:db:id-1703800435
+
+
+
+
diff --git a/Tests/Unit/Format/AltoTest.php b/Tests/Unit/Format/AltoTest.php
new file mode 100644
index 0000000000..2eaf12e727
--- /dev/null
+++ b/Tests/Unit/Format/AltoTest.php
@@ -0,0 +1,106 @@
+getRawText($xml);
+
+ $this->assertEquals('Bürgertum und Bürgerlichkeit in Dresden DRESDNER HEFTE', $rawText);
+ }
+
+ /**
+ * @test
+ * @group extract data
+ */
+ public function getTextAsMiniOcr(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/alto.xml');
+ $alto = new Alto();
+
+ $rawText = $alto->getTextAsMiniOcr($xml);
+
+ $miniOCR = <<
+
+
+ Bürgertum
+ und
+
+
+ Bürgerlichkeit
+ in
+ Dresden
+
+
+
+
+ DRESDNER
+
+
+ HEFTE
+
+
+
+ XML;
+
+ $this->assertXmlStringEqualsXmlString($miniOCR, $rawText);
+ }
+
+ /**
+ * @test
+ * @group extract data
+ */
+ public function getTextAsMiniOcrNoTextBlock(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/altoNoTextBlock.xml');
+ $alto = new Alto();
+
+ $rawText = $alto->getTextAsMiniOcr($xml);
+
+ $this->assertEquals('', $rawText);
+ }
+
+ /**
+ * @test
+ * @group extract data
+ */
+ public function getTextAsMiniOcrNoTextline(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/altoNoTextLine.xml');
+ $alto = new Alto();
+
+ $rawText = $alto->getTextAsMiniOcr($xml);
+
+ $this->assertXmlStringEqualsXmlString('', $rawText);
+ }
+
+ /**
+ * @test
+ * @group extract data
+ */
+ public function getTextAsMiniOcrNoString(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/altoNoString.xml');
+ $alto = new Alto();
+
+ $rawText = $alto->getTextAsMiniOcr($xml);
+
+ $this->assertXmlStringEqualsXmlString(
+ '',
+ $rawText
+ );
+ }
+}
diff --git a/Tests/Unit/Format/AudioVideoMDTest.php b/Tests/Unit/Format/AudioVideoMDTest.php
new file mode 100644
index 0000000000..bc4d5b021b
--- /dev/null
+++ b/Tests/Unit/Format/AudioVideoMDTest.php
@@ -0,0 +1,109 @@
+metadata = [
+ 'duration' => [],
+ 'video_duration' => [],
+ 'audio_duration' => []
+ ];
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function canExtractVideoDuration(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/audioVideo.xml');
+ $audioVideoMD = new AudioVideoMD();
+
+ $videoXml = $xml->xpath('//videomd:VIDEOMD')[0];
+
+ $audioVideoMD->extractMetadata($videoXml,$this->metadata);
+
+ $this->assertEquals(
+ ["00:01:30.07"],
+ $this->metadata['duration']
+ );
+
+ $this->assertEquals(
+ ["00:01:30.07"],
+ $this->metadata['video_duration']
+ );
+
+ $this->assertEquals(
+ [],
+ $this->metadata['audio_duration']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function canExtractAudioDuration(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/audioVideo.xml');
+ $audioVideoMD = new AudioVideoMD();
+
+ $audioXml = $xml->xpath('//audiomd:AUDIOMD')[0];
+
+ $audioVideoMD->extractMetadata($audioXml,$this->metadata);
+
+ $this->assertEquals(
+ ["01:10:35.08"],
+ $this->metadata['duration']
+ );
+
+ $this->assertEquals(
+ [],
+ $this->metadata['video_duration']
+ );
+
+ $this->assertEquals(
+ ["01:10:35.08"],
+ $this->metadata['audio_duration']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function noDuration(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/audioVideo.xml');
+ $audioVideoMD = new AudioVideoMD();
+
+ $videoXml = $xml->xpath('//audiomd:AUDIOMD')[1];
+
+ $audioVideoMD->extractMetadata($videoXml,$this->metadata);
+
+ $this->assertEquals(
+ [],
+ $this->metadata['duration']
+ );
+
+ $this->assertEquals(
+ [],
+ $this->metadata['audio_duration']
+ );
+
+ $this->assertEquals(
+ [],
+ $this->metadata['video_duration']
+ );
+ }
+}
diff --git a/Tests/Unit/Format/ModsTest.php b/Tests/Unit/Format/ModsTest.php
new file mode 100644
index 0000000000..af9d016cb8
--- /dev/null
+++ b/Tests/Unit/Format/ModsTest.php
@@ -0,0 +1,204 @@
+metadata = [
+ 'title' => [],
+ 'title_sorting' => [],
+ 'author' => [],
+ 'place' => [],
+ 'place_sorting' => [0 => []],
+ 'year' => [],
+ 'prod_id' => [],
+ 'record_id' => [],
+ 'opac_id' => [],
+ 'union_id' => [],
+ 'urn' => [],
+ 'purl' => [],
+ 'type' => [],
+ 'volume' => [],
+ 'volume_sorting' => [],
+ 'license' => [],
+ 'terms' => [],
+ 'restrictions' => [],
+ 'out_of_print' => [],
+ 'rights_info' => [],
+ 'collection' => [],
+ 'owner' => [],
+ 'mets_label' => [],
+ 'mets_orderlabel' => [],
+ 'document_format' => ['METS'],
+ 'year_sorting' => [0 => []],
+ ];
+
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extractAuthorsIfNoAutRoleTermAssigned(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/modsAuthorNoAutRoleTerm.xml');
+ $mods = new Mods();
+
+ $mods->extractMetadata($xml,$this->metadata);
+
+ $this->assertEquals(
+ [
+ "AnonymousGiven1 AnonymousFamily1",
+ "AnonymousFamily2, AnonymousGiven2"
+ ],
+ $this->metadata['author']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extractAuthorsWithAutRoleTermAssigned(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/modsAuthorWithAutRoleTerm.xml');
+ $mods = new Mods();
+
+ $mods->extractMetadata($xml,$this->metadata);
+ $this->assertEquals(
+ [
+ 'May, Jack, I',
+ 'John Paul, Pope, 1920-2005',
+ 'Mattox, Douglas E., 1947-',
+ '1882-1941, Woolf, Virginia',
+ 'Eric Alterman'
+ ],
+ $this->metadata['author']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extractPlaces(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/modsOriginInfo.xml');
+ $mods = new Mods();
+
+ $mods->extractMetadata($xml,$this->metadata);
+
+ $this->assertEquals(
+ [
+ "Dresden",
+ "Hamburg",
+ "Berlin",
+ "München",
+ ],
+ $this->metadata['place']
+ );
+
+ $this->assertEquals(
+ [
+ "Dresden",
+ ],
+ $this->metadata['place_sorting']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extractYears(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/modsOriginInfo.xml');
+ $mods = new Mods();
+
+ $mods->extractMetadata($xml,$this->metadata);
+
+ $this->assertEquals(
+ [
+ "2019",
+ "2018",
+ "2021",
+ "2020",
+ ],
+ $this->metadata['year']
+ );
+
+ $this->assertEquals(
+ [
+ "2019",
+ ],
+ $this->metadata['year_sorting']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extractPlacesWithElectronicEdInside(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/modsOriginInfoWithEditionElectonicEd.xml');
+ $mods = new Mods();
+
+ $mods->extractMetadata($xml,$this->metadata);
+
+ $this->assertEquals(
+ [
+ "Dresden",
+ "Hamburg",
+ "Berlin",
+ "München",
+ ],
+ $this->metadata['place']
+ );
+
+ $this->assertEquals(
+ [
+ "Dresden",
+ ],
+ $this->metadata['place_sorting']
+ );
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extractYearsWithElectronicEdInside(): void
+ {
+ $xml = simplexml_load_file( __DIR__ . '/../../Fixtures/Format/modsOriginInfoWithEditionElectonicEd.xml');
+ $mods = new Mods();
+
+ $mods->extractMetadata($xml,$this->metadata);
+
+ $this->assertEquals(
+ [
+ "2019",
+ "2018",
+ "2021",
+ "2020",
+ ],
+ $this->metadata['year']
+ );
+
+ $this->assertEquals(
+ [
+ "2019",
+ ],
+ $this->metadata['year_sorting']
+ );
+ }
+}
diff --git a/Tests/Unit/Format/TeiHeaderTest.php b/Tests/Unit/Format/TeiHeaderTest.php
new file mode 100644
index 0000000000..c6a1a3e2c3
--- /dev/null
+++ b/Tests/Unit/Format/TeiHeaderTest.php
@@ -0,0 +1,30 @@
+metadata = [];
+ }
+
+ /**
+ * @test
+ * @group extractMetadata
+ */
+ public function extract(): void
+ {
+ $teiHeader = new TeiHeader();
+ //$teiHeader->extractMetadata();
+ //TODO: TeiHeader class not fully implemented.
+ $this->assertTrue(false);
+ }
+}