mabmapper 1.0.0.pre15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.travis.yml +4 -0
- data/Gemfile +7 -0
- data/LICENSE +22 -0
- data/README.md +49 -0
- data/Rakefile +29 -0
- data/bin/mabmapper +3 -0
- data/lib/mabmapper/aleph_mab_xml_engine.rb +1050 -0
- data/lib/mabmapper/cli.rb +216 -0
- data/lib/mabmapper/elasticsearch_writer.rb +52 -0
- data/lib/mabmapper/engine.rb +112 -0
- data/lib/mabmapper/mab_xml/document.rb +53 -0
- data/lib/mabmapper/mab_xml/field.rb +43 -0
- data/lib/mabmapper/mab_xml/query.rb +25 -0
- data/lib/mabmapper/mab_xml/query_helper.rb +101 -0
- data/lib/mabmapper/mab_xml/result_set.rb +34 -0
- data/lib/mabmapper/mab_xml/subfield.rb +12 -0
- data/lib/mabmapper/mab_xml.rb +6 -0
- data/lib/mabmapper/tar_writer.rb +29 -0
- data/lib/mabmapper/version.rb +3 -0
- data/lib/mabmapper.rb +11 -0
- data/mabmapper.gemspec +33 -0
- data/test/mab_files/test_creation_date/test1.xml +17 -0
- data/test/mab_files/test_creation_date/test2.xml +17 -0
- data/test/mab_files/test_creationdate/425_a_1.xml +17 -0
- data/test/mab_files/test_creationdate/425_a_2.xml +19 -0
- data/test/mab_files/test_creationdate/425_bc_1.xml +19 -0
- data/test/mab_files/test_creationdate/425_bc_2.xml +22 -0
- data/test/mab_files/test_creationdate/425_bc_3.xml +22 -0
- data/test/mab_files/test_creationdate/425_bc_4.xml +19 -0
- data/test/mab_files/test_creationdate/425_p_1.xml +19 -0
- data/test/mab_files/test_creationdate/425_p_2.xml +17 -0
- data/test/mab_files/test_creationdate/595_1.xml +20 -0
- data/test/mab_files/test_creator_contributor_facet/PAD01.001006945.PRIMO.xml +574 -0
- data/test/mab_files/test_description/405.xml +22 -0
- data/test/mab_files/test_description/501-519.xml +30 -0
- data/test/mab_files/test_description/522.xml +22 -0
- data/test/mab_files/test_description/523.xml +22 -0
- data/test/mab_files/test_description/536-537.xml +30 -0
- data/test/mab_files/test_doc/PAD01.001510737.PRIMO.xml +317 -0
- data/test/mab_files/test_edition/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_edition/PAD01.000969531.PRIMO.xml +129 -0
- data/test/mab_files/test_edition/PAD01.000969710.PRIMO.xml +144 -0
- data/test/mab_files/test_edition/PAD01.000978033.PRIMO.xml +163 -0
- data/test/mab_files/test_edition/PAD01.000990520.PRIMO.xml +163 -0
- data/test/mab_files/test_erscheinungsform/PAD01.000870753.PRIMO.xml +256 -0
- data/test/mab_files/test_erscheinungsform/PAD01.000870755.PRIMO.xml +467 -0
- data/test/mab_files/test_ht_number/PAD01.001015067.PRIMO.xml +137 -0
- data/test/mab_files/test_inhaltstyp/PAD01.000870753.PRIMO.xml +256 -0
- data/test/mab_files/test_inhaltstyp/PAD01.000870755.PRIMO.xml +467 -0
- data/test/mab_files/test_is_secondary_form/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_is_secondary_form/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_is_secondary_form/PAD01.001015067.PRIMO.xml +137 -0
- data/test/mab_files/test_is_secondary_form/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_is_suborder/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_is_suborder/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_is_suborder/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_issn/PAD01.000637121.PRIMO.xml +805 -0
- data/test/mab_files/test_materialtyp/PAD01.000870753.PRIMO.xml +256 -0
- data/test/mab_files/test_materialtyp/PAD01.000870755.PRIMO.xml +467 -0
- data/test/mab_files/test_notation_sort/PAD01.000970649.PRIMO.xml +306 -0
- data/test/mab_files/test_notation_sort/PAD01.001006944.PRIMO.xml +279 -0
- data/test/mab_files/test_publisher/PAD01.000312406.PRIMO.xml +1043 -0
- data/test/mab_files/test_redactional_remark/PAD01.001510737.PRIMO.xml +317 -0
- data/test/mab_files/test_relation/PAD01.000438377.PRIMO.xml +232 -0
- data/test/mab_files/test_relation/PAD01.000637121.PRIMO.xml +810 -0
- data/test/mab_files/test_relation/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_relation/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_relation/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_secondary_form_creationdate/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_secondary_form_creationdate/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_secondary_form_creationdate/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_secondary_form_isbn/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_secondary_form_isbn/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_secondary_form_isbn/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_secondary_form_physical_description/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_secondary_form_physical_description/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_secondary_form_preliminary_phrase/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_secondary_form_preliminary_phrase/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_secondary_form_publisher/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_secondary_form_publisher/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_secondary_form_superorder/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_secondary_form_superorder/PAD01.000977734.PRIMO.xml +225 -0
- data/test/mab_files/test_secondary_form_superorder/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_short_title_display/PAD01.000057960.PRIMO.xml +1069 -0
- data/test/mab_files/test_short_title_display/PAD01.000058000.PRIMO.xml +995 -0
- data/test/mab_files/test_short_title_display/PAD01.000215104.PRIMO.xml +191 -0
- data/test/mab_files/test_short_title_display/PAD01.000310864.PRIMO.xml +999 -0
- data/test/mab_files/test_short_title_display/PAD01.000392641.PRIMO.xml +4334 -0
- data/test/mab_files/test_short_title_display/PAD01.000392645.PRIMO.xml +4094 -0
- data/test/mab_files/test_short_title_display/PAD01.000438377.PRIMO.xml +232 -0
- data/test/mab_files/test_short_title_display/PAD01.000479391.PRIMO.xml +142 -0
- data/test/mab_files/test_short_title_display/PAD01.000637121.PRIMO.xml +805 -0
- data/test/mab_files/test_short_title_display/PAD01.000676616.PRIMO.xml +128 -0
- data/test/mab_files/test_short_title_display/PAD01.000782994.PRIMO.xml +169 -0
- data/test/mab_files/test_short_title_display/PAD01.001006945.PRIMO.xml +574 -0
- data/test/mab_files/test_short_title_display/PAD01.001015067.PRIMO.xml +137 -0
- data/test/mab_files/test_short_title_display/PAD01.001015070.PRIMO.xml +212 -0
- data/test/mab_files/test_short_title_display/PAD01.001108212.PRIMO.xml +259 -0
- data/test/mab_files/test_short_title_display/PAD01.001249043.PRIMO.xml +172 -0
- data/test/mab_files/test_short_title_display/PAD01.001499877.PRIMO.xml +227 -0
- data/test/mab_files/test_short_title_display/PAD01.001499879.PRIMO.xml +255 -0
- data/test/mab_files/test_short_title_display/PAD01.001499880.PRIMO.xml +279 -0
- data/test/mab_files/test_short_title_display/PAD01.001510878.PRIMO.xml +184 -0
- data/test/mab_files/test_short_title_display/PAD01.001562173.PRIMO.xml +116 -0
- data/test/mab_files/test_short_title_display/PAD01.001568334.PRIMO.xml +1840 -0
- data/test/mab_files/test_short_title_display/PAD01.001572048.PRIMO.xml +68 -0
- data/test/mab_files/test_short_title_display/PAD01.001572049.PRIMO.xml +133 -0
- data/test/mab_files/test_signature/PAD01.000161445.PRIMO.xml +149 -0
- data/test/mab_files/test_signature/PAD01.000321365.PRIMO.xml +343 -0
- data/test/mab_files/test_signature/PAD01.000636652.PRIMO.xml +217 -0
- data/test/mab_files/test_signature/PAD01.000857994.PRIMO.xml +187 -0
- data/test/mab_files/test_signature/PAD01.000859176.PRIMO.xml +559 -0
- data/test/mab_files/test_signature/PAD01.000969442.PRIMO.xml +210 -0
- data/test/mab_files/test_signature/PAD01.001006945.PRIMO.xml +574 -0
- data/test/mab_files/test_signature_search/PAD01.000161445.PRIMO.xml +149 -0
- data/test/mab_files/test_signature_search/PAD01.000321365.PRIMO.xml +343 -0
- data/test/mab_files/test_signature_search/PAD01.000636652.PRIMO.xml +217 -0
- data/test/mab_files/test_signature_search/PAD01.000857994.PRIMO.xml +187 -0
- data/test/mab_files/test_signature_search/PAD01.000859176.PRIMO.xml +559 -0
- data/test/mab_files/test_signature_search/PAD01.000969442.PRIMO.xml +210 -0
- data/test/mab_files/test_signature_search/PAD01.001006945.PRIMO.xml +574 -0
- data/test/mab_files/test_status/PAD01.000321365.PRIMO.xml +343 -0
- data/test/mab_files/test_status/PAD01.000392641.PRIMO.xml +4337 -0
- data/test/mab_files/test_status/detmold_1.xml +17 -0
- data/test/mab_files/test_status/detmold_2.xml +17 -0
- data/test/mab_files/test_status/detmold_3.xml +12 -0
- data/test/mab_files/test_subject/PAD01.000972511.PRIMO.xml +406 -0
- data/test/mab_files/test_suborders/PAD01.000057960.PRIMO.xml +1069 -0
- data/test/mab_files/test_suborders/PAD01.000058000.PRIMO.xml +995 -0
- data/test/mab_files/test_suborders/PAD01.000215104.PRIMO.xml +191 -0
- data/test/mab_files/test_suborders/PAD01.000310864.PRIMO.xml +999 -0
- data/test/mab_files/test_suborders/PAD01.000392641.PRIMO.xml +4334 -0
- data/test/mab_files/test_suborders/PAD01.000392645.PRIMO.xml +4094 -0
- data/test/mab_files/test_suborders/PAD01.000438377.PRIMO.xml +232 -0
- data/test/mab_files/test_suborders/PAD01.000479391.PRIMO.xml +142 -0
- data/test/mab_files/test_suborders/PAD01.000637121.PRIMO.xml +805 -0
- data/test/mab_files/test_suborders/PAD01.000676616.PRIMO.xml +128 -0
- data/test/mab_files/test_suborders/PAD01.001006945.PRIMO.xml +574 -0
- data/test/mab_files/test_suborders/PAD01.001015067.PRIMO.xml +137 -0
- data/test/mab_files/test_suborders/PAD01.001015068.PRIMO.xml +216 -0
- data/test/mab_files/test_suborders/PAD01.001015070.PRIMO.xml +212 -0
- data/test/mab_files/test_suborders/PAD01.001108212.PRIMO.xml +259 -0
- data/test/mab_files/test_suborders/PAD01.001499877.PRIMO.xml +227 -0
- data/test/mab_files/test_suborders/PAD01.001499879.PRIMO.xml +255 -0
- data/test/mab_files/test_suborders/PAD01.001499880.PRIMO.xml +279 -0
- data/test/mab_files/test_suborders/PAD01.001562173.PRIMO.xml +116 -0
- data/test/mab_files/test_suborders/PAD01.001572048.PRIMO.xml +68 -0
- data/test/mab_files/test_suborders/PAD01.001572049.PRIMO.xml +133 -0
- data/test/mab_files/test_superorder/PAD01.000806191.PRIMO.xml +216 -0
- data/test/mab_files/test_superorder/PAD01.000844686.PRIMO.xml +584 -0
- data/test/mab_files/test_superorder/PAD01.001015067.PRIMO.xml +137 -0
- data/test/mab_files/test_superorder/PAD01.001452439.PRIMO.xml +377 -0
- data/test/mab_files/test_superorder_display/PAD01.000000872.PRIMO.xml +227 -0
- data/test/mab_files/test_superorder_display/PAD01.000160412.PRIMO.xml +518 -0
- data/test/mab_files/test_superorder_display/PAD01.000162669.PRIMO.xml +198 -0
- data/test/mab_files/test_superorder_display/PAD01.000178500.PRIMO.xml +158 -0
- data/test/mab_files/test_superorder_display/PAD01.000297043.PRIMO.xml +154 -0
- data/test/mab_files/test_superorder_display/PAD01.000562878.PRIMO.xml +1214 -0
- data/test/mab_files/test_superorder_display/PAD01.000958473.PRIMO.xml +379 -0
- data/test/mab_files/test_superorder_display/PAD01.001006945.PRIMO.xml +574 -0
- data/test/mab_files/test_superorders/PAD01.000057960.PRIMO.xml +1069 -0
- data/test/mab_files/test_superorders/PAD01.000215104.PRIMO.xml +191 -0
- data/test/mab_files/test_superorders/PAD01.000310864.PRIMO.xml +999 -0
- data/test/mab_files/test_superorders/PAD01.000392641.PRIMO.xml +4334 -0
- data/test/mab_files/test_superorders/PAD01.000438377.PRIMO.xml +232 -0
- data/test/mab_files/test_superorders/PAD01.000479391.PRIMO.xml +142 -0
- data/test/mab_files/test_superorders/PAD01.000637121.PRIMO.xml +805 -0
- data/test/mab_files/test_superorders/PAD01.001015067.PRIMO.xml +137 -0
- data/test/mab_files/test_superorders/PAD01.001499877.PRIMO.xml +227 -0
- data/test/mab_files/test_superorders/PAD01.001572048.PRIMO.xml +68 -0
- data/test/mab_files/test_title_display/PAD01.000954111.PRIMO.xml +162 -0
- data/test/mab_files/test_title_display/PAD01.000992332.PRIMO.xml +189 -0
- data/test/mab_files/test_title_display/PAD01.001015068.PRIMO.xml +216 -0
- data/test/mab_files/test_title_display/PAD01.001499879.PRIMO.xml +255 -0
- data/test/mab_files/test_title_search/test_1.xml +20 -0
- data/test/mab_files/test_title_sort/PAD01.000954111.PRIMO.xml +162 -0
- data/test/mab_files/test_title_sort/PAD01.000992332.PRIMO.xml +189 -0
- data/test/mab_files/test_volume_count_sort/PAD01.001015068.PRIMO.xml +216 -0
- data/test/mab_files/test_volume_count_sort/PAD01.001499879.PRIMO.xml +255 -0
- data/test/mabmapper/test_creation_date.rb +5 -0
- data/test/mabmapper/test_creationdate.rb +23 -0
- data/test/mabmapper/test_creator_contributor_facet.rb +4 -0
- data/test/mabmapper/test_description.rb +9 -0
- data/test/mabmapper/test_doc.rb +6 -0
- data/test/mabmapper/test_edition.rb +8 -0
- data/test/mabmapper/test_erscheinungsform.rb +5 -0
- data/test/mabmapper/test_ht_number.rb +4 -0
- data/test/mabmapper/test_inhaltstyp.rb +5 -0
- data/test/mabmapper/test_is_secondary_form.rb +7 -0
- data/test/mabmapper/test_is_suborder.rb +7 -0
- data/test/mabmapper/test_issn.rb +4 -0
- data/test/mabmapper/test_materialtyp.rb +5 -0
- data/test/mabmapper/test_notation_sort.rb +5 -0
- data/test/mabmapper/test_publisher.rb +5 -0
- data/test/mabmapper/test_redactional_remark.rb +4 -0
- data/test/mabmapper/test_relation.rb +16 -0
- data/test/mabmapper/test_secondary_form_creationdate.rb +6 -0
- data/test/mabmapper/test_secondary_form_isbn.rb +6 -0
- data/test/mabmapper/test_secondary_form_physical_description.rb +5 -0
- data/test/mabmapper/test_secondary_form_preliminary_phrase.rb +5 -0
- data/test/mabmapper/test_secondary_form_publisher.rb +5 -0
- data/test/mabmapper/test_secondary_form_superorder.rb +9 -0
- data/test/mabmapper/test_short_title_display.rb +27 -0
- data/test/mabmapper/test_signature.rb +12 -0
- data/test/mabmapper/test_signature_search.rb +12 -0
- data/test/mabmapper/test_status.rb +13 -0
- data/test/mabmapper/test_subject.rb +5 -0
- data/test/mabmapper/test_suborders.rb +192 -0
- data/test/mabmapper/test_superorder.rb +7 -0
- data/test/mabmapper/test_superorder_display.rb +22 -0
- data/test/mabmapper/test_superorders.rb +38 -0
- data/test/mabmapper/test_title_display.rb +12 -0
- data/test/mabmapper/test_title_search.rb +4 -0
- data/test/mabmapper/test_title_sort.rb +6 -0
- data/test/mabmapper/test_volume_count_sort.rb +5 -0
- data/test/test_helper.rb +53 -0
- data/test/test_mabmapper.rb +19 -0
- data/utils/mab_by_docid.sh +19 -0
- metadata +574 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSecondaryFormSuperorder
|
3
|
+
define_field_test '000806191', secondary_form_superorder: {"ht_number" => "HT006670284","label" => "Edition Wissenschaft : Reihe Chemie ; 240","volume_count" => "240"}
|
4
|
+
define_field_test '000977734', secondary_form_superorder: [
|
5
|
+
{"ht_number"=>nil, "label"=>"Zeitschriften der HAAB Weimar. Projekt Sicherungsverfilmung der HAAB Weimar", "volume_count"=>nil},
|
6
|
+
{"ht_number"=>nil, "label"=>"Faustsammlung der HAAB Weimar", "volume_count"=>nil}
|
7
|
+
]
|
8
|
+
define_field_test '001452439', secondary_form_superorder: {"ht_number" => nil, "label" => "Digitale Sammlungen der Universitätsbibliothek Paderborn", "volume_count" => nil}
|
9
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestShortTitleDisplay
|
3
|
+
define_field_test '000057960', short_title_display: 'Sämtliche Werke : historisch-kritische Ausgabe'
|
4
|
+
define_field_test '000058000', short_title_display: 'Tannhäuser'
|
5
|
+
define_field_test '000215104', short_title_display: 'Hiersemanns bibliographische Handbücher'
|
6
|
+
define_field_test '000310864', short_title_display: 'Paderborner Universitätsreden'
|
7
|
+
define_field_test '000392641', short_title_display: 'Hegel-Jahrbuch'
|
8
|
+
define_field_test '000392645', short_title_display: 'Hegel-Jahrbuch'
|
9
|
+
define_field_test '000438377', short_title_display: 'Urkundenregesten zur Tätigkeit des deutschen Königs- und Hofgerichts bis 1451'
|
10
|
+
define_field_test '000479391', short_title_display: 'Quellen und Forschungen zur höchsten Gerichtsbarkeit im alten Reich'
|
11
|
+
define_field_test '000637121', short_title_display: 'Zeitschrift für Familienforschung : ZfF'
|
12
|
+
define_field_test '000676616', short_title_display: 'Recht und Staat'
|
13
|
+
define_field_test '000782994', short_title_display: 'Rot'
|
14
|
+
define_field_test '001006945', short_title_display: 'Die Zeit Wenzels 1397 - 1400'
|
15
|
+
define_field_test '001015067', short_title_display: 'Forum Geschichte kompakt'
|
16
|
+
define_field_test '001015070', short_title_display: 'Vom Ende des Ersten Weltkriegs bis zur Gegenwart [Schülerbd.]'
|
17
|
+
define_field_test '001108212', short_title_display: 'Johann Nestroy - Dokumente'
|
18
|
+
define_field_test '001249043', short_title_display: 'Fractions, decimals, ratios, and percents' # replace [Hauptbd.] with name of superorder
|
19
|
+
define_field_test '001499877', short_title_display: 'Fakten und Fiktionen : Werklexikon der deutschsprachigen Schlüsselliteratur ; 1900 - 2010'
|
20
|
+
define_field_test '001499879', short_title_display: 'Andres bis Loest'
|
21
|
+
define_field_test '001499880', short_title_display: 'Heinrich Mann bis Zwerenz'
|
22
|
+
define_field_test '001510878', short_title_display: 'Tanzhaus' # short title would be '[Buch]', so take the superorder title
|
23
|
+
define_field_test '001562173', short_title_display: 'Schwerpunktthema: Türkische Familien in Deutschland - Generationenbeziehungen und Generationenperspektiven'
|
24
|
+
define_field_test '001568334', short_title_display: 'Software Engineering 2013' # short title would be 'Buch', so take the superorder title
|
25
|
+
define_field_test '001572048', short_title_display: 'Paderborner Rathaus-Vorlesungen'
|
26
|
+
define_field_test '001572049', short_title_display: 'Alte und Neue Welt : zur wechselvollen Geschichte transatlanitischer Kulturkontakte'
|
27
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSignature
|
3
|
+
define_field_test '000321365', signature: 'P10/34k12'
|
4
|
+
define_field_test '000636652', signature: 'P10/34m3'
|
5
|
+
define_field_test '000857994', signature: 'P10/34t26'
|
6
|
+
define_field_test '000859176', signature: 'KDVD1105'
|
7
|
+
define_field_test '000969442', signature: 'TWR12765'
|
8
|
+
|
9
|
+
# Signatur mit anhängiger Bandzählung
|
10
|
+
define_field_test '000161445', signature: 'KXW4113-80/81'
|
11
|
+
define_field_test '001006945', signature: 'LKL2468-14'
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSignatureSearch
|
3
|
+
define_field_test '000321365', signature_search: ["34K12", "P10/34K12"]
|
4
|
+
define_field_test '000636652', signature_search: ["P10/34M3", "34M3"]
|
5
|
+
define_field_test '000857994', signature_search: ["34T26", "P10/34T26"]
|
6
|
+
define_field_test '000859176', signature_search: "KDVD1105"
|
7
|
+
define_field_test '000969442', signature_search: ["TWR12765+4", "TWR12765", "TWR12765+1", "TWR12765+2", "TWR12765+3"]
|
8
|
+
|
9
|
+
# Signatur mit anhängiger Bandzählung
|
10
|
+
define_field_test '000161445', signature_search: ["KXW4113-80/81", "KXW4113-80", "KXW4113"]
|
11
|
+
define_field_test '001006945', signature_search: ["LKL2468-14", "LKL2468"]
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestStatus
|
3
|
+
# gelöscht -> LDR Position 6 == 'd'
|
4
|
+
define_field_test '000321365', status: 'D'
|
5
|
+
|
6
|
+
# ausgesondert über Feld 078
|
7
|
+
define_field_test '000392641', status: 'D'
|
8
|
+
|
9
|
+
# Standort Detmold unterdrücken
|
10
|
+
define_field_test 'detmold_1', status: 'D'
|
11
|
+
define_field_test 'detmold_2', status: 'A'
|
12
|
+
define_field_test 'detmold_3', status: 'A'
|
13
|
+
end
|
@@ -0,0 +1,192 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSuborders
|
3
|
+
# case 1 (a <- b AND a <- c)
|
4
|
+
def test_001015068_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT015707971'); end
|
5
|
+
def test_001015068_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end
|
6
|
+
def test_001015068_has_superorder_display
|
7
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
8
|
+
ht_number: "HT015707971",
|
9
|
+
label: "Forum Geschichte kompakt",
|
10
|
+
volume_count: "Bd. 2, Teilbd. 1, Von der Frühen Neuzeit bis zum Ersten Weltkrieg [Schülerbd.]",
|
11
|
+
label_additions: nil
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_001015070_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT015707971'); end
|
16
|
+
def test_001015070_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end
|
17
|
+
def test_001015070_has_superorder_display
|
18
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
19
|
+
ht_number: "HT015707971",
|
20
|
+
label: "Forum Geschichte kompakt",
|
21
|
+
volume_count: "Bd. 2, Teilbd. 2, Vom Ende des Ersten Weltkriegs bis zur Gegenwart [Schülerbd.]",
|
22
|
+
label_additions: nil
|
23
|
+
})
|
24
|
+
end
|
25
|
+
|
26
|
+
# case 2 (a <- b <- c)
|
27
|
+
def test_001499879_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT017055615'); end;
|
28
|
+
def test_001499879_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
29
|
+
def test_001499879_has_superorder_display
|
30
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
31
|
+
ht_number: "HT017055615",
|
32
|
+
label: "Fakten und Fiktionen",
|
33
|
+
volume_count: "1",
|
34
|
+
label_additions: nil
|
35
|
+
})
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_001499880_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT017055615'); end;
|
39
|
+
def test_001499880_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
40
|
+
def test_001499880_has_superorder_display
|
41
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
42
|
+
ht_number: "HT017055615",
|
43
|
+
label: "Fakten und Fiktionen",
|
44
|
+
volume_count: "2",
|
45
|
+
label_additions: nil
|
46
|
+
})
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_001499877_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT001260573'); end;
|
50
|
+
def test_001499877_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
51
|
+
def test_001499877_has_superorder_display
|
52
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
53
|
+
ht_number: "HT001260573",
|
54
|
+
label: "Hiersemanns bibliographische Handbücher",
|
55
|
+
volume_count: "21",
|
56
|
+
label_additions: nil
|
57
|
+
})
|
58
|
+
end
|
59
|
+
|
60
|
+
# case 3 (b <- a AND c <- a)
|
61
|
+
def test_001006945_has_superorders; assert_has_superorders(doc_id_from_method_name(__method__), ['HT002919097', 'HT003165994']); end;
|
62
|
+
def test_001006945_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
63
|
+
def test_001006945_has_superorder_display
|
64
|
+
assert_has_superorder_display_values(doc_id_from_method_name(__method__), [{
|
65
|
+
"ht_number" => "HT002919097",
|
66
|
+
"label" => "Urkundenregesten zur Tätigkeit des deutschen Königs- und Hofgerichts bis 1451",
|
67
|
+
"volume_count" => "14",
|
68
|
+
"label_additions" => nil
|
69
|
+
}, {
|
70
|
+
"ht_number" => "HT003165994",
|
71
|
+
"label" => "Quellen und Forschungen zur höchsten Gerichtsbarkeit im alten Reich",
|
72
|
+
"volume_count" => "14",
|
73
|
+
"label_additions" => ["Sonderreihe"]
|
74
|
+
}])
|
75
|
+
end
|
76
|
+
|
77
|
+
# case 4 (a <- b)
|
78
|
+
def test_001562173_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT005081594'); end;
|
79
|
+
def test_001562173_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
80
|
+
def test_001562173_has_superorder_display
|
81
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
82
|
+
"ht_number" => "HT005081594",
|
83
|
+
"label" => "Zeitschrift für Familienforschung",
|
84
|
+
"volume_count" => "25,1",
|
85
|
+
"label_additions" => nil
|
86
|
+
})
|
87
|
+
end
|
88
|
+
|
89
|
+
# case 5 (b <- a AND c <- a)
|
90
|
+
def test_001572049_has_superorders; assert_has_superorders(doc_id_from_method_name(__method__), ['HT002162049', 'HT017670666']); end;
|
91
|
+
def test_001572049_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
92
|
+
def test_001572049_has_superorder_display
|
93
|
+
assert_has_superorder_display_values(doc_id_from_method_name(__method__), [{
|
94
|
+
"ht_number" => "HT002162049",
|
95
|
+
"label" => "Paderborner Universitätsreden",
|
96
|
+
"volume_count" => "127",
|
97
|
+
"label_additions" => nil
|
98
|
+
}, {
|
99
|
+
"ht_number" => "HT017670666",
|
100
|
+
"label" => "Paderborner Rathaus-Vorlesungen",
|
101
|
+
"volume_count" => "1",
|
102
|
+
"label_additions" => nil
|
103
|
+
}])
|
104
|
+
end
|
105
|
+
|
106
|
+
# case 6 (a <- b AND a <- c)
|
107
|
+
def test_000676616_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT002672902'); end;
|
108
|
+
def test_000676616_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
109
|
+
def test_000676616_has_superorder_display
|
110
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
111
|
+
"ht_number" => "HT002672902",
|
112
|
+
"label" => "Hegel-Jahrbuch",
|
113
|
+
"volume_count" => "1993/94",
|
114
|
+
"label_additions" => nil
|
115
|
+
})
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_000392645_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT002672902'); end;
|
119
|
+
def test_000392645_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
120
|
+
def test_000392645_has_superorder_display
|
121
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
122
|
+
"ht_number" => "HT002672902",
|
123
|
+
"label" => "Hegel-Jahrbuch",
|
124
|
+
"volume_count" => "1966",
|
125
|
+
"label_additions" => nil
|
126
|
+
})
|
127
|
+
end
|
128
|
+
|
129
|
+
# case 7 (a <- b AND a <- c)
|
130
|
+
def test_000058000_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT000289652'); end;
|
131
|
+
def test_000058000_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
132
|
+
def test_000058000_has_superorder_display
|
133
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
134
|
+
"ht_number" => "HT000289652",
|
135
|
+
"label" => "Sämtliche Werke",
|
136
|
+
"volume_count" => "Stücke 36",
|
137
|
+
"label_additions" => nil
|
138
|
+
})
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_001108212_has_superorder; assert_has_superorder(doc_id_from_method_name(__method__), 'HT000289652'); end;
|
142
|
+
def test_001108212_is_suborder; assert_is_suborder(doc_id_from_method_name(__method__)); end;
|
143
|
+
def test_001108212_has_superorder_display
|
144
|
+
assert_has_superorder_display_value(doc_id_from_method_name(__method__), {
|
145
|
+
"ht_number" => "HT000289652",
|
146
|
+
"label" => "Sämtliche Werke / Johann Nestroy",
|
147
|
+
"volume_count" => "",
|
148
|
+
"label_additions" => nil
|
149
|
+
})
|
150
|
+
end
|
151
|
+
|
152
|
+
private
|
153
|
+
|
154
|
+
def assert_has_superorder(doc_id, superorder_id)
|
155
|
+
assert_has_superorders(doc_id, [superorder_id])
|
156
|
+
end
|
157
|
+
|
158
|
+
def assert_has_superorder_display_value(doc_id, superorder_display_values)
|
159
|
+
assert_has_superorder_display_values(doc_id, [superorder_display_values])
|
160
|
+
end
|
161
|
+
|
162
|
+
def assert_has_superorder_display_values(doc_id, superorder_display_values)
|
163
|
+
doc = Nokogiri::XML(@engine.process('', load_mab('test_suborders', doc_id)).to_xml)
|
164
|
+
superorder_display_nodes = doc.css('superorder_display')
|
165
|
+
|
166
|
+
superorder_display_values.each_with_index do |superorder_display_value, index|
|
167
|
+
assert_equal(superorder_display_value.stringify_keys, JSON.parse(superorder_display_nodes[index].text))
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def assert_has_superorders(doc_id, superorder_ids)
|
172
|
+
doc = Nokogiri::XML(@engine.process('', load_mab('test_suborders', doc_id)).to_xml)
|
173
|
+
superorders = doc.css('superorder')
|
174
|
+
|
175
|
+
assert_equal(true, superorders.present?)
|
176
|
+
assert_equal(superorder_ids.length, superorders.length)
|
177
|
+
|
178
|
+
superorder_ids.each do |superorder_id|
|
179
|
+
assert_includes(superorders.map(&:text), superorder_id)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
def assert_is_suborder(doc_id)
|
184
|
+
doc = Nokogiri::XML(@engine.process('', load_mab('test_suborders', doc_id)).to_xml)
|
185
|
+
assert_equal(true, (value = doc.css('is_suborder').text).present?)
|
186
|
+
assert_equal('true', value)
|
187
|
+
end
|
188
|
+
|
189
|
+
def doc_id_from_method_name(method_name)
|
190
|
+
method_name[/\d+/]
|
191
|
+
end
|
192
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSuperorder
|
3
|
+
# check for superorders of secondary forms (mab 623 and 629)
|
4
|
+
define_field_test '000806191', superorder: 'HT006670284'
|
5
|
+
define_field_test '000844686', superorder: 'HT007082773'
|
6
|
+
define_field_test '001452439', superorder: nil
|
7
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSuperorderDisplay
|
3
|
+
|
4
|
+
# superorder label with leading '...' but without ';' or ':' between dots and label
|
5
|
+
define_field_test '000000872', superorder_display: [{"ht_number"=>"HT001310809", "label"=>"Wissenschaftliche Tagung der Arbeitsgemeinschaft für Klinische Diätetik", "volume_count"=>"2", "label_additions"=>nil}, {"ht_number"=>"HT002182783", "label"=>"Aktuelle Ernährungsmedizin", "volume_count"=>"[3], Suppl", "label_additions"=>nil}]
|
6
|
+
|
7
|
+
# for the label everything behind ':' should be removed
|
8
|
+
define_field_test '000162669', superorder_display: {"ht_number"=>"HT001231518", "label"=>"Handbuch der Dogmengeschichte", "volume_count"=>"Bd. 1, Das Dasein im Glauben ; Fasz. 4", "label_additions"=>nil}
|
9
|
+
define_field_test '000178500', superorder_display: {"ht_number"=>"HT001231518", "label"=>"Handbuch der Dogmengeschichte", "volume_count"=>"Bd. 3, Christologie, Soteriologie, Ekklesiologie, Mariologie, Gnadenlehre ; Fasz.4", "label_additions"=>nil}
|
10
|
+
define_field_test '000297043', superorder_display: {"ht_number"=>"HT001231518", "label"=>"Handbuch der Dogmengeschichte", "volume_count"=>"Bd. 4, Sakramente, Eschatologie ; Fasz. 1", "label_additions"=>nil}
|
11
|
+
|
12
|
+
# << ... >> should be removed
|
13
|
+
define_field_test '000958473', superorder_display: [{"ht_number"=>"HT001231617", "label"=>"Hessische Forschungen", "volume_count"=>"47", "label_additions"=>nil}, {"ht_number"=>"HT003779625", "label"=>"Die Geschichte unserer Heimat", "volume_count"=>"45", "label_additions"=>nil}]
|
14
|
+
|
15
|
+
# label additions
|
16
|
+
define_field_test '000160412', superorder_display: {"ht_number"=>"HT001237362", "label"=>"Historische Zeitschrift", "volume_count"=>"[N.F.],1", "label_additions"=>["Beiheft"]}
|
17
|
+
define_field_test '001006945', superorder_display: [{"ht_number"=>"HT002919097", "label"=>"Urkundenregesten zur Tätigkeit des deutschen Königs- und Hofgerichts bis 1451", "volume_count"=>"14", "label_additions"=>nil}, {"ht_number"=>"HT003165994", "label"=>"Quellen und Forschungen zur höchsten Gerichtsbarkeit im alten Reich", "volume_count"=>"14", "label_additions"=>["Sonderreihe"]}]
|
18
|
+
|
19
|
+
# sometimes there are multiple 451 fields with one startingen with '...', if this is the case, try the other one
|
20
|
+
define_field_test '000562878', superorder_display: [{"ht_number"=>"HT003809808", "label"=>"Management & marketing dictionary", "volume_count"=>"1", "label_additions"=>nil}, {"ht_number"=>"HT002100889", "label"=>"dtv", "volume_count"=>"5815 : Beck-Wirtschaftsberater", "label_additions"=>nil}]
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestSuperorders
|
3
|
+
# case 1
|
4
|
+
def test_001015067_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
5
|
+
|
6
|
+
# case 2
|
7
|
+
def test_001499877_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
8
|
+
def test_000215104_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
9
|
+
|
10
|
+
# case 3
|
11
|
+
def test_000438377_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
12
|
+
def test_000479391_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
13
|
+
|
14
|
+
# case 4
|
15
|
+
def test_000637121_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
16
|
+
|
17
|
+
# case 5
|
18
|
+
def test_000310864_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
19
|
+
def test_001572048_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
20
|
+
|
21
|
+
# case 6
|
22
|
+
def test_000392641_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
23
|
+
|
24
|
+
# case 7
|
25
|
+
def test_000057960_is_superorder; assert_is_superorder(doc_id_from_method_name(__method__)); end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def assert_is_superorder(doc_id)
|
30
|
+
doc = Nokogiri::XML(@engine.process('', load_mab('test_superorders', doc_id)).to_xml)
|
31
|
+
assert_equal(true, (value = doc.css('is_superorder').text).present?)
|
32
|
+
assert_equal('true', value)
|
33
|
+
end
|
34
|
+
|
35
|
+
def doc_id_from_method_name(method_name)
|
36
|
+
method_name[/\d+/]
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module TestTitleDisplay
|
3
|
+
# should insert 'Bd.'
|
4
|
+
define_field_test '001499879', title_display: 'Fakten und Fiktionen : Werklexikon der deutschsprachigen Schlüsselliteratur ; 1900 - 2010. Bd. 1. Andres bis Loest'
|
5
|
+
|
6
|
+
# should not insert 'Bd.'
|
7
|
+
define_field_test '001015068', title_display: 'Forum Geschichte kompakt. Bd. 2, Teilbd. 1, Von der Frühen Neuzeit bis zum Ersten Weltkrieg [Schülerbd.]'
|
8
|
+
|
9
|
+
# '<<' and '>>' should be removed
|
10
|
+
define_field_test '000954111', title_display: 'Kitakantō-igaku = The Kitakanto medical journal'
|
11
|
+
define_field_test '000992332', title_display: 'Der Hexenbürgermeister von Lemgo : ein Lesedrama in Versen'
|
12
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# doesn't feel right to mess with $LOAD_PATH, but cannot require mabmapper without it
|
2
|
+
$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
|
3
|
+
|
4
|
+
# silence that minitest related error about minitest/autorun (since minitest version >= 5)
|
5
|
+
gem 'minitest'
|
6
|
+
|
7
|
+
require 'mabmapper'
|
8
|
+
require 'minitest/autorun'
|
9
|
+
require 'nokogiri'
|
10
|
+
require 'pry'
|
11
|
+
|
12
|
+
# Extending Ruby's Module class simplifys tests massively
|
13
|
+
class Module
|
14
|
+
def define_field_test(doc_id, assertion_options)
|
15
|
+
field_name = self.to_s.gsub(/\ATest/, '').underscore.to_sym
|
16
|
+
expected_value = assertion_options.values.first
|
17
|
+
|
18
|
+
define_method "test_#{field_name}_for_#{doc_id}" do
|
19
|
+
assert_doc_field_value_equal(doc_id, field_name, expected_value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def load_engine!
|
25
|
+
begin
|
26
|
+
engine_file = "mabmapper/aleph_mab_xml_engine" # TODO: Make me configurable
|
27
|
+
require engine_file
|
28
|
+
"#{engine_file}".classify.constantize.new
|
29
|
+
rescue LoadError
|
30
|
+
exit 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def assert_doc_field_value_equal(doc_id, field_name, expected_value)
|
35
|
+
doc = Nokogiri::XML(@engine.process('', load_mab("test_#{field_name}", doc_id)).to_xml)
|
36
|
+
field_values = doc.css(field_name.to_s).map(&:text).map { |field_value| (field_value.first == '{' && field_value.last == '}') ? JSON.parse(field_value) : field_value }
|
37
|
+
|
38
|
+
if field_values.length == 0
|
39
|
+
assert_equal expected_value, nil
|
40
|
+
elsif field_values.length == 1
|
41
|
+
assert_equal expected_value, field_values.first.presence
|
42
|
+
else
|
43
|
+
assert_equal expected_value, field_values
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def load_mab(directory_name, record_id)
|
48
|
+
mab_file_name = ["../mab_files/#{directory_name}/PAD01.#{record_id}.PRIMO.xml", "../mab_files/#{directory_name}/#{record_id}.xml"]
|
49
|
+
.map { |path| File.expand_path path, __FILE__ }
|
50
|
+
.find { |path| FileTest.exist? path }
|
51
|
+
|
52
|
+
File.read(mab_file_name)
|
53
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path '../test_helper.rb', __FILE__
|
2
|
+
|
3
|
+
class TestMabmapper < MiniTest::Unit::TestCase #Minitest::Test
|
4
|
+
def setup
|
5
|
+
@engine = load_engine!
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
tests_to_run = ENV['TESTS'].split unless ENV['TESTS'].nil?
|
10
|
+
|
11
|
+
# require and include all mabmapper test modules
|
12
|
+
Dir.glob(File.expand_path '../mabmapper/test_*.rb', __FILE__).each do |filename|
|
13
|
+
if tests_to_run.nil? || tests_to_run.any? { |name_of_test| "test_#{name_of_test}" == File.basename(filename, '.rb') }
|
14
|
+
require filename
|
15
|
+
TestMabmapper.instance_eval do
|
16
|
+
include File.basename(filename, '.rb').camelize.constantize
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# Extracts a single mab/mabmapper xml file from a numbered archive
|
4
|
+
#
|
5
|
+
# Usage:
|
6
|
+
# ./mab_by_docid.sh 000636652 (call this from within the directory where the archives are located)
|
7
|
+
#
|
8
|
+
# Dependencies: bash, sed, xmllint (from libxml)
|
9
|
+
docid_with_zeros=$1
|
10
|
+
docid_without_zeros="$(echo $docid_with_zeros| sed 's/0*//')"
|
11
|
+
archive_number="$(((docid_without_zeros/50000)+1))"
|
12
|
+
archive_file_name=$(find . -name "aleph.PRIMO.*.$archive_number.tar.gz")
|
13
|
+
mab_file_name="PAD01.$docid_with_zeros.PRIMO.xml"
|
14
|
+
|
15
|
+
# grab the file from the tar.gz
|
16
|
+
tar -xvzf $archive_file_name $mab_file_name
|
17
|
+
|
18
|
+
# format output using xmllint
|
19
|
+
xmllint --format $mab_file_name --output $mab_file_name
|