mead 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +27 -0
- data/Gemfile.lock +56 -0
- data/LICENSE +20 -0
- data/README.rdoc +86 -0
- data/Rakefile +67 -0
- data/VERSION +1 -0
- data/bin/automead +53 -0
- data/bin/ead2meads +90 -0
- data/bin/emv +77 -0
- data/bin/mead2barcode +64 -0
- data/bin/meadbfv +27 -0
- data/lib/mead/barcode.rb +49 -0
- data/lib/mead/container.rb +21 -0
- data/lib/mead/ead.rb +215 -0
- data/lib/mead/ead_validator.rb +46 -0
- data/lib/mead/extractor.rb +198 -0
- data/lib/mead/identifier.rb +112 -0
- data/lib/mead/trollop.rb +38 -0
- data/lib/mead/validations.rb +130 -0
- data/lib/mead.rb +71 -0
- data/mead.gemspec +142 -0
- data/test/ead/mc00145.xml +157 -0
- data/test/ead/mc00240.xml +12523 -0
- data/test/ead/ua015_010.xml +31103 -0
- data/test/ead/ua021_428.xml +146 -0
- data/test/ead/ua023_006.xml +469 -0
- data/test/ead/ua023_031.xml +5202 -0
- data/test/ead/ua110_041.xml +4101 -0
- data/test/fixtures/mc00310.xml +186 -0
- data/test/fixtures/ua023_031.xml +5228 -0
- data/test/helper.rb +38 -0
- data/test/test_barcode.rb +25 -0
- data/test/test_ead.rb +193 -0
- data/test/test_ead_validator.rb +18 -0
- data/test/test_extractor.rb +83 -0
- data/test/test_mc00145.rb +19 -0
- data/test/test_mc00240.rb +140 -0
- data/test/test_mead.rb +5 -0
- data/test/test_ua015_010.rb +111 -0
- data/test/test_ua021_428.rb +26 -0
- data/test/test_ua023_006_buildings.rb +111 -0
- data/test/test_ua023_006_faculty.rb +112 -0
- data/test/test_ua110_041.rb +112 -0
- data/test/test_validations.rb +81 -0
- data/watchr.rb +71 -0
- metadata +338 -0
data/test/helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
require 'ruby-debug'
|
4
|
+
begin
|
5
|
+
Bundler.setup(:default, :development)
|
6
|
+
rescue Bundler::BundlerError => e
|
7
|
+
$stderr.puts e.message
|
8
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
9
|
+
exit e.status_code
|
10
|
+
end
|
11
|
+
require 'test/unit'
|
12
|
+
require 'shoulda'
|
13
|
+
require 'fakeweb'
|
14
|
+
#require 'test_benchmark' # ruby 1.8.7 only?
|
15
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
16
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
17
|
+
require 'mead'
|
18
|
+
|
19
|
+
# disallow connections and then register all URIs used
|
20
|
+
FakeWeb.allow_net_connect = false
|
21
|
+
FakeWeb.register_uri(:get, 'http://www.lib.ncsu.edu/findingaids/ua023_031.xml',
|
22
|
+
:response => File.join('test', 'fixtures', 'ua023_031.xml'))
|
23
|
+
FakeWeb.register_uri(:get, 'http://www.lib.ncsu.edu/findingaids/mc00310.xml',
|
24
|
+
:response => File.join('test', 'fixtures', 'mc00310.xml'))
|
25
|
+
|
26
|
+
class Test::Unit::TestCase
|
27
|
+
end
|
28
|
+
|
29
|
+
# test cases should use stricter NCSU specific format validation
|
30
|
+
module Mead
|
31
|
+
class Identifier
|
32
|
+
def self.format_regexp
|
33
|
+
container_codes = Mead::CONTAINER_MAPPING.keys.join('|')
|
34
|
+
/^(ua\d{3}|mc\d{5})(_\d{3})?-\d{3}-(#{container_codes})\d{4}-\d{3}([A-Z])?-\d{3}(_\d{4})?$/
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestBarcode < Test::Unit::TestCase
|
4
|
+
context 'barcode creator' do
|
5
|
+
setup do
|
6
|
+
mead_file = File.open('test/ead/ua023_031.xml')
|
7
|
+
@mead1 = Mead::Identifier.new('ua023_031-001-cb0003-005-001', mead_file).extract
|
8
|
+
@mead2 = Mead::Identifier.new('ua023_031-001-cb0013-019A-001', mead_file).extract
|
9
|
+
@barcode1 = Mead::Barcode.new(@mead1)
|
10
|
+
end
|
11
|
+
should 'hold an instance of a mead' do
|
12
|
+
assert_equal Mead::Identifier, @barcode1.mead.class
|
13
|
+
end
|
14
|
+
should 'create a barcode file' do
|
15
|
+
png_file_path = @barcode1.output_barcode(File.expand_path(File.join(File.dirname(__FILE__), '..')))
|
16
|
+
assert File.exists?(png_file_path)
|
17
|
+
File.delete(png_file_path)
|
18
|
+
end
|
19
|
+
should 'create a text file' do
|
20
|
+
text_file_path = @barcode1.output_label(File.expand_path(File.join(File.dirname(__FILE__), '..')))
|
21
|
+
assert File.exists?(text_file_path)
|
22
|
+
File.delete(text_file_path)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/test/test_ead.rb
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMead < Test::Unit::TestCase
|
4
|
+
context "Given an eadid mc00240" do
|
5
|
+
|
6
|
+
setup do
|
7
|
+
opts = {:eadid => 'mc00240', :file => File.open('test/ead/mc00240.xml')}
|
8
|
+
@ead = Mead::Ead.new(opts)
|
9
|
+
@containers = @ead.containers
|
10
|
+
end
|
11
|
+
|
12
|
+
should "create information for a stub record for the first container" do
|
13
|
+
expected = {:mead => 'mc00240-001-ff0181-000-001',
|
14
|
+
:title => 'Adams, J. H. - Barn, 1929 (1075)',
|
15
|
+
:series => 1,
|
16
|
+
:containers => ['flatfolder 181']
|
17
|
+
}
|
18
|
+
assert_equal expected, @containers[0]
|
19
|
+
end
|
20
|
+
|
21
|
+
should "create information for a stub record for the last container" do
|
22
|
+
expected = {:mead => 'mc00240-003-bx0069-000-001',
|
23
|
+
:title => 'Personnel Ledger, Pt. 2, 1956',
|
24
|
+
:series => 3,
|
25
|
+
:containers=>["Box 69"]
|
26
|
+
}
|
27
|
+
assert_equal expected, @containers.last
|
28
|
+
end
|
29
|
+
|
30
|
+
should "determine this to be an invalid ead not suitable for large scale digitization yet" do
|
31
|
+
assert_equal false, @ead.valid?
|
32
|
+
end
|
33
|
+
should "provide information on the containers with invalid (duplicate) mead identifiers" do
|
34
|
+
assert_equal 47, @ead.invalid.length
|
35
|
+
assert_equal 20, @ead.dups.length
|
36
|
+
expected = {:series=>1, :title=>"Breach, William- Residence",
|
37
|
+
:mead=>"mc00240-001-ff0298-000-001", :containers=>["flatfolder 298"]}
|
38
|
+
assert_equal expected, @ead.invalid.first
|
39
|
+
end
|
40
|
+
|
41
|
+
context "converted to csv" do
|
42
|
+
setup do
|
43
|
+
@csv = @ead.to_csv
|
44
|
+
@csv_lines = @csv.split("\n")
|
45
|
+
end
|
46
|
+
should "be able to create a csv file from the parsed ead" do
|
47
|
+
assert_equal 'mead,title,series,containers', @csv_lines[0]
|
48
|
+
end
|
49
|
+
|
50
|
+
should "be able to create good csv data from the parsed ead for the first container" do
|
51
|
+
expected = 'mc00240-001-ff0181-000-001,"Adams, J. H. - Barn, 1929 (1075)",1,flatfolder 181'
|
52
|
+
assert_equal expected, @csv_lines[1]
|
53
|
+
end
|
54
|
+
|
55
|
+
should "be able to create good csv data from the parsed ead for the last container" do
|
56
|
+
expected = 'mc00240-003-bx0069-000-001,"Personnel Ledger, Pt. 2, 1956",3,Box 69'
|
57
|
+
assert_equal expected, @csv_lines.last
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
context "Given an eadid of ua023_031" do
|
64
|
+
setup do
|
65
|
+
opts = {:eadid => 'ua023_031',:file => File.open('test/ead/ua023_031.xml')}
|
66
|
+
@ead = Mead::Ead.new(opts)
|
67
|
+
@containers = @ead.containers
|
68
|
+
end
|
69
|
+
should 'create information for a stub record for the first container' do
|
70
|
+
expected = {:title=>"Sules V-B on Apple [3] - Grape Study - Set #17",
|
71
|
+
:series=>1,
|
72
|
+
:mead=>"ua023_031-001-cb0006-031-001",
|
73
|
+
:containers => ["cardbox 6", "Envelope 31"]
|
74
|
+
}
|
75
|
+
assert_equal expected, @containers[0]
|
76
|
+
end
|
77
|
+
|
78
|
+
should 'create information for a stub record for the second container' do
|
79
|
+
expected = {
|
80
|
+
:containers=>["cardbox 10", "Envelope 10"],
|
81
|
+
:mead=>"ua023_031-001-cb0010-010-001",
|
82
|
+
:title=>
|
83
|
+
"(no. 13) Eastern Carolina, North Carolina - Diec - cabbage and treated - Hand Colored Slides, Numbered Series",
|
84
|
+
:series=>1}
|
85
|
+
assert_equal expected, @containers[1]
|
86
|
+
end
|
87
|
+
|
88
|
+
should 'create information for a stub record for the last container' do
|
89
|
+
expected = {:mead => 'ua023_031-010-cb0019-006-001',
|
90
|
+
:title => 'Examples of original storage envelopes',
|
91
|
+
:series => 10,
|
92
|
+
:containers=>["cardbox 19", "Envelope 6"]
|
93
|
+
}
|
94
|
+
assert_equal expected, @containers.last
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
context "Given an eadid of mc00310" do
|
100
|
+
setup do
|
101
|
+
|
102
|
+
opts = {:eadid => 'mc00310', :url => 'http://www.lib.ncsu.edu/findingaids/mc00310.xml'}
|
103
|
+
@ead = Mead::Ead.new( opts)
|
104
|
+
@containers = @ead.containers
|
105
|
+
end
|
106
|
+
should 'determine it to be a valid ead for large scale digitization' do
|
107
|
+
assert @ead.valid?
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context "Given a baseurl and no filehandle for an Ead" do
|
112
|
+
setup do
|
113
|
+
opts = {:eadid => 'ua023_031', :baseurl => 'http://www.lib.ncsu.edu/findingaids'}
|
114
|
+
@ead = Mead::Ead.new(opts)
|
115
|
+
end
|
116
|
+
should 'save the baseurl as an instance variable' do
|
117
|
+
assert_equal 'http://www.lib.ncsu.edu/findingaids', @ead.baseurl
|
118
|
+
end
|
119
|
+
should 'create information for a stub record for the last container' do
|
120
|
+
containers = @ead.containers
|
121
|
+
expected = {:title=>"Sules V-B on Apple [3] - Grape Study - Set #17", :series=>1,
|
122
|
+
:mead=>"ua023_031-001-cb0006-031-001",
|
123
|
+
:containers => ["cardbox 6", "Envelope 31"]
|
124
|
+
}
|
125
|
+
assert_equal expected, containers.first
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "Given a url and no file or baseurl for an Ead" do
|
130
|
+
setup do
|
131
|
+
opts = {:eadid => 'ua023_031', :url => 'http://www.lib.ncsu.edu/findingaids/ua023_031.xml'}
|
132
|
+
@ead = Mead::Ead.new(opts)
|
133
|
+
end
|
134
|
+
should 'save the url to an instance variable' do
|
135
|
+
assert_equal 'http://www.lib.ncsu.edu/findingaids/ua023_031.xml', @ead.url
|
136
|
+
end
|
137
|
+
should 'create information for a stub record for the last container' do
|
138
|
+
containers = @ead.containers
|
139
|
+
expected = {:title=>"Sules V-B on Apple [3] - Grape Study - Set #17",
|
140
|
+
:series=>1, :mead=>"ua023_031-001-cb0006-031-001",
|
141
|
+
:containers => ["cardbox 6", "Envelope 31"]}
|
142
|
+
assert_equal expected, containers.first
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context "Given a baseurl and no eadid" do
|
147
|
+
should 'raise an exception' do
|
148
|
+
opts = {:baseurl => 'http://www.lib.ncsu.edu/findingaids'}
|
149
|
+
assert_raise RuntimeError do
|
150
|
+
Mead::Ead.new(opts)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
context 'missing an eadid' do
|
157
|
+
setup do
|
158
|
+
@expected = {:title=>"Sules V-B on Apple [3] - Grape Study - Set #17",
|
159
|
+
:series=>1,
|
160
|
+
:mead=>"ua023_031-001-cb0006-031-001",
|
161
|
+
:containers=>["cardbox 6", "Envelope 31"]
|
162
|
+
}
|
163
|
+
end
|
164
|
+
context 'Given a file' do
|
165
|
+
setup do
|
166
|
+
opts = {:file => File.open('test/ead/ua023_031.xml')}
|
167
|
+
@ead = Mead::Ead.new(opts)
|
168
|
+
end
|
169
|
+
should 'try to find the eadid in the EAD XML' do
|
170
|
+
assert_equal 'ua023_031', @ead.eadid
|
171
|
+
end
|
172
|
+
should 'get information for the first container' do
|
173
|
+
assert_equal @expected, @ead.containers.first
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
context 'Given a full URL' do
|
178
|
+
setup do
|
179
|
+
opts = {:url => 'http://www.lib.ncsu.edu/findingaids/ua023_031.xml'}
|
180
|
+
@ead = Mead::Ead.new(opts)
|
181
|
+
end
|
182
|
+
should 'try to find the eadid in the EAD XML' do
|
183
|
+
assert_equal 'ua023_031', @ead.eadid
|
184
|
+
end
|
185
|
+
should 'get information for the first container' do
|
186
|
+
assert_equal @expected, @ead.containers.first
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
|
192
|
+
end
|
193
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestEadValidator < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context 'Given a directory of EAD XML validate them all' do
|
6
|
+
setup do
|
7
|
+
@eadv = Mead::EadValidator.new('test/ead/')
|
8
|
+
end
|
9
|
+
should 'store the directory path' do
|
10
|
+
assert_equal 'test/ead/', @eadv.directory
|
11
|
+
end
|
12
|
+
should 'return results' do
|
13
|
+
expected = {:valid=>["ua021_428", "ua023_006"],
|
14
|
+
:invalid=>["mc00145","mc00240", "ua015_010", "ua023_031", "ua110_041"]}
|
15
|
+
assert_equal expected, @eadv.validate!
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMeadExtractor < Test::Unit::TestCase
|
4
|
+
context "the mead ua023_031-008-cb0013-001-001" do
|
5
|
+
setup do
|
6
|
+
|
7
|
+
@identifier = 'ua023_031-008-cb0013-001-001'
|
8
|
+
@expected_1 = [
|
9
|
+
{:level=>"file",
|
10
|
+
:unitdate=>nil,
|
11
|
+
:unitid=>nil,
|
12
|
+
:unittitle=>
|
13
|
+
"Horticulture - students in greenhouse - for photograph see - Agriculture school - Horticulture - Hand Colored Slides, agriculture school",
|
14
|
+
:item_location => 'cardbox 13, Envelope 1',
|
15
|
+
:containers => [
|
16
|
+
Mead::Container.new(:type => 'cardbox', :label => "Mixed materials", :text => '13'),
|
17
|
+
Mead::Container.new(:type => 'Envelope', :text => '1')]
|
18
|
+
},
|
19
|
+
{:level=>"subseries", :unitdate=>nil, :unitid=>nil, :unittitle=>"Students"},
|
20
|
+
{:level=>"series", :unitdate=>nil, :series_number=>8, :unitid=>"Series 8", :unittitle=>"People"}]
|
21
|
+
end
|
22
|
+
|
23
|
+
should "produce a good extraction with a filehandle location for the Ead" do
|
24
|
+
fh = File.open('test/ead/ua023_031.xml')
|
25
|
+
mead = Mead::Identifier.new(@identifier, fh)
|
26
|
+
assert_equal @expected_1, Mead::Extractor.new(mead).extract
|
27
|
+
end
|
28
|
+
|
29
|
+
should "producde a good extraction with a remote location Ead containing no eadid" do
|
30
|
+
assert_equal @expected_1, Mead::Extractor.new(Mead::Identifier.new(@identifier, 'http://www.lib.ncsu.edu/findingaids')).extract
|
31
|
+
end
|
32
|
+
should 'produce a good extraction with a remote location Ead with a full URL' do
|
33
|
+
assert_equal @expected_1, Mead::Extractor.new(Mead::Identifier.new(@identifier, 'http://www.lib.ncsu.edu/findingaids/ua023_031.xml')).extract
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
context 'mc00240-001-ff0052-000-001' do
|
38
|
+
setup do
|
39
|
+
@expected_mc00240 = [{:unittitle=>"Friends Church",
|
40
|
+
:item_location=>"flatfolder 52",
|
41
|
+
:unitdate=>"1927",
|
42
|
+
:level=>"file",
|
43
|
+
:unitid=>"903",
|
44
|
+
:containers =>
|
45
|
+
[Mead::Container.new(:type => 'flatfolder', :label => 'Mixed materials', :text => '52')]},
|
46
|
+
{:series_number=>1,
|
47
|
+
:unittitle=>"Drawings",
|
48
|
+
:unitdate=>"1917-1980",
|
49
|
+
:level=>"series",
|
50
|
+
:unitid=>"MC 240 Series 1"}]
|
51
|
+
end
|
52
|
+
should 'handle empty folder properly' do
|
53
|
+
mead = Mead::Identifier.new('mc00240-001-ff0052-000-001', File.open('test/ead/mc00240.xml'))
|
54
|
+
assert_equal @expected_mc00240, Mead::Extractor.new(mead).extract
|
55
|
+
end
|
56
|
+
|
57
|
+
should 'cache the extraction within the Mead::Identifier' do
|
58
|
+
mead = Mead::Identifier.new('mc00240-001-ff0052-000-001', File.open('test/ead/mc00240.xml')).extract
|
59
|
+
assert_equal @expected_mc00240, mead.metadata
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
should "raise an exception if the extractor is given something other than a Mead::Identifier" do
|
66
|
+
assert_raise RuntimeError do
|
67
|
+
Mead::Extractor.new({})
|
68
|
+
end
|
69
|
+
end
|
70
|
+
should "raise an exception if the extractor tries to extract from a Mead::Identifier without an Ead location set" do
|
71
|
+
assert_raise RuntimeError do
|
72
|
+
Mead::Extractor.new(Mead::Identifier.new('mc00240-001-ff0052-000-001')).extract
|
73
|
+
end
|
74
|
+
end
|
75
|
+
should "raise an exception when a duplicate Mead::Identifier is found by matching too many nodes" do
|
76
|
+
assert_raise RuntimeError do
|
77
|
+
Mead::Extractor.new(Mead::Identifier.new('mc00240-003-bx0069-000-001', File.open('test/ead/mc00240.xml'))).extract
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
end
|
83
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMc00145 < Test::Unit::TestCase
|
4
|
+
context "the ead mc00145" do
|
5
|
+
setup do
|
6
|
+
opts = {:eadid => 'mc00145', :file => File.open('test/ead/mc00145.xml')}
|
7
|
+
@ead = Mead::Ead.new(opts)
|
8
|
+
@containers = @ead.containers
|
9
|
+
end
|
10
|
+
|
11
|
+
should "create short meads for component parts with more than 2 containers" do
|
12
|
+
assert !@containers.empty?
|
13
|
+
end
|
14
|
+
|
15
|
+
should "create meads for EAD with no series" do
|
16
|
+
assert_equal 'mc00145-001-te0001-000-001', @containers.last[:mead]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMeadMC00240 < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "a legacy mead from mc00240" do
|
6
|
+
setup do
|
7
|
+
@mead_id = 'mc00240-001-ff0147-001-001_0001' #empty folder was given 001 rather than 000
|
8
|
+
@fh = File.open('test/ead/mc00240.xml')
|
9
|
+
@mead = Mead::Identifier.new(@mead_id, @fh)
|
10
|
+
end
|
11
|
+
should "retrieve the correct metadata" do
|
12
|
+
@mead.extract
|
13
|
+
expected = [{:unittitle=>"Moravian Chapel at Southside", :level=>"file",
|
14
|
+
:item_location=>"flatfolder 147", :unitdate=>"1928", :unitid=>"1034",
|
15
|
+
:containers =>
|
16
|
+
[Mead::Container.new(:type => 'flatfolder',
|
17
|
+
:label => "Mixed materials",
|
18
|
+
:text => '147')]
|
19
|
+
},
|
20
|
+
{:unittitle=>"Drawings", :series_number=>1,
|
21
|
+
:level=>"series", :unitdate=>"1917-1980", :unitid=>"MC 240 Series 1"}]
|
22
|
+
assert_equal expected, @mead.metadata
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
context "a mead from mc00240" do
|
28
|
+
setup do
|
29
|
+
@mead_id = 'mc00240-001-ff0042-000-001'
|
30
|
+
@fh = File.open('test/ead/mc00240.xml')
|
31
|
+
@mead = Mead::Identifier.new(@mead_id, @fh)
|
32
|
+
end
|
33
|
+
|
34
|
+
context "parsing a mead from mc00240" do
|
35
|
+
|
36
|
+
should "produce expected output of eadid" do
|
37
|
+
assert_equal @mead.eadid, 'mc00240'
|
38
|
+
end
|
39
|
+
|
40
|
+
should "produce the expected series" do
|
41
|
+
assert_equal @mead.series, '1'
|
42
|
+
end
|
43
|
+
|
44
|
+
should "produce the expected container" do
|
45
|
+
expected = {:type=> 'flatfolder', :number => '42'}
|
46
|
+
assert_equal expected, @mead.container
|
47
|
+
end
|
48
|
+
|
49
|
+
should "produce the expected folder" do
|
50
|
+
assert_equal @mead.folder, nil
|
51
|
+
end
|
52
|
+
|
53
|
+
should "produce the expected sequence" do
|
54
|
+
assert_equal @mead.sequence, '1'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "extracting metadata from a mead" do
|
59
|
+
setup do
|
60
|
+
@extractor = Mead::Extractor.new(@mead)
|
61
|
+
#@file = File.open('test/ead/mc00240.xml')
|
62
|
+
end
|
63
|
+
|
64
|
+
should "be able to create an extractor" do
|
65
|
+
assert_equal @extractor.class, Mead::Extractor
|
66
|
+
end
|
67
|
+
|
68
|
+
should "convert a string to a mead object" do
|
69
|
+
assert_equal @extractor.mead.class, Mead::Identifier
|
70
|
+
end
|
71
|
+
|
72
|
+
context "should give back the metadata" do
|
73
|
+
setup do
|
74
|
+
@result = @extractor.extract
|
75
|
+
end
|
76
|
+
|
77
|
+
should "Cache the metadata in the Mead::Identifier" do
|
78
|
+
mead = Mead::Identifier.new(@mead_id, @fh).extract
|
79
|
+
assert_equal @result, mead.metadata
|
80
|
+
end
|
81
|
+
|
82
|
+
should "extract the item's unittitle" do
|
83
|
+
assert_equal 'Amos Hosiery Mill - Addition', @extractor.stack[0][:unittitle]
|
84
|
+
end
|
85
|
+
|
86
|
+
should "extract the item's unitdate" do
|
87
|
+
assert_equal '1953', @extractor.stack[0][:unitdate]
|
88
|
+
end
|
89
|
+
|
90
|
+
should "extract the item's level" do
|
91
|
+
assert_equal 'file', @extractor.stack[0][:level]
|
92
|
+
end
|
93
|
+
|
94
|
+
should "extract the item's unitid" do
|
95
|
+
assert_equal '1421', @extractor.stack[0][:unitid]
|
96
|
+
end
|
97
|
+
|
98
|
+
should "extract the item's containers" do
|
99
|
+
assert_equal @extractor.stack[0][:containers].first.class, Mead::Container
|
100
|
+
end
|
101
|
+
|
102
|
+
should "extract the parent unittitle" do
|
103
|
+
assert_equal "Drawings", @extractor.stack[1][:unittitle]
|
104
|
+
end
|
105
|
+
|
106
|
+
should "extract the parent unitdate" do
|
107
|
+
assert_equal "1917-1980", @extractor.stack[1][:unitdate]
|
108
|
+
end
|
109
|
+
|
110
|
+
should "extract the parent level" do
|
111
|
+
assert_equal "series", @extractor.stack[1][:level]
|
112
|
+
end
|
113
|
+
|
114
|
+
should "extract the parent unitid" do
|
115
|
+
assert_equal 'MC 240 Series 1', @extractor.stack[1][:unitid]
|
116
|
+
end
|
117
|
+
|
118
|
+
should "extract a series' series number" do
|
119
|
+
assert_equal 1, @extractor.stack[1][:series_number]
|
120
|
+
end
|
121
|
+
|
122
|
+
# should "only extract up to the series level" do
|
123
|
+
# assert_equal [
|
124
|
+
# {:unittitle=>"Amos Hosiery Mill - Addition", :unitdate=>"1953",
|
125
|
+
# :level => 'file', :unitid => '1421', :item_location => 'flatfolder 42'},
|
126
|
+
# {:unittitle=>"Drawings", :unitdate=>"1917-1980", :level => 'series',
|
127
|
+
# :unitid => 'MC 240 Series 1', :series_number => 1
|
128
|
+
# }
|
129
|
+
# ], @extractor.stack
|
130
|
+
# end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
data/test/test_mead.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMeadUA015_010 < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "a mead from ua015_010" do
|
6
|
+
setup do
|
7
|
+
@mead = 'ua015_010-004-bx0039-005-002'
|
8
|
+
end
|
9
|
+
|
10
|
+
context "parsing a mead from ua015_010" do
|
11
|
+
setup do
|
12
|
+
@result = Mead::Identifier.new(@mead, File.open('test/ead/ua015_010.xml')) #this is where processing
|
13
|
+
end
|
14
|
+
|
15
|
+
should "produce expected output of eadid" do
|
16
|
+
assert_equal @result.eadid, 'ua015_010'
|
17
|
+
end
|
18
|
+
|
19
|
+
should "produce the expected series" do
|
20
|
+
assert_equal @result.series, '4'
|
21
|
+
end
|
22
|
+
|
23
|
+
should "produce the expected container" do
|
24
|
+
expected = {:type=> 'box', :number => '39'}
|
25
|
+
assert_equal expected, @result.container
|
26
|
+
end
|
27
|
+
|
28
|
+
should "produce the expected folder" do
|
29
|
+
assert_equal @result.folder, {:type=> 'folder', :number => '5'}
|
30
|
+
end
|
31
|
+
|
32
|
+
should "produce the expected sequence" do
|
33
|
+
assert_equal @result.sequence, '2'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "extracting metadata from a mead" do
|
38
|
+
setup do
|
39
|
+
@result = Mead::Identifier.new(@mead, File.open('test/ead/ua015_010.xml'))
|
40
|
+
@extractor = Mead::Extractor.new(@result)
|
41
|
+
end
|
42
|
+
|
43
|
+
should "be able to create an extractor" do
|
44
|
+
assert_equal @extractor.class, Mead::Extractor
|
45
|
+
end
|
46
|
+
|
47
|
+
should "convert a string to a mead object" do
|
48
|
+
assert_equal @extractor.mead.class, Mead::Identifier
|
49
|
+
end
|
50
|
+
|
51
|
+
context "should give back the metadata" do
|
52
|
+
setup do
|
53
|
+
@result = @extractor.extract
|
54
|
+
end
|
55
|
+
|
56
|
+
should "extract the item's unittitle" do
|
57
|
+
assert_equal 'Programs', @extractor.stack[0][:unittitle]
|
58
|
+
end
|
59
|
+
|
60
|
+
should "extract the item's unitdate" do
|
61
|
+
assert_equal '1949-1950', @extractor.stack[0][:unitdate]
|
62
|
+
end
|
63
|
+
|
64
|
+
should "extract the item level" do
|
65
|
+
assert_equal 'file', @extractor.stack[0][:level]
|
66
|
+
end
|
67
|
+
|
68
|
+
should "extract the item unitid" do
|
69
|
+
assert_nil @extractor.stack[0][:unitid]
|
70
|
+
end
|
71
|
+
|
72
|
+
should "extract the parent unittitle" do
|
73
|
+
assert_equal "Men's Basketball", @extractor.stack[1][:unittitle]
|
74
|
+
end
|
75
|
+
|
76
|
+
should "extract the parent unitdate" do
|
77
|
+
assert_equal "1911-2006", @extractor.stack[1][:unitdate]
|
78
|
+
end
|
79
|
+
|
80
|
+
should "extract the parent level" do
|
81
|
+
assert_equal 'series', @extractor.stack[1][:level]
|
82
|
+
end
|
83
|
+
|
84
|
+
should "extract the parent unitid" do
|
85
|
+
assert_equal 'Series 4', @extractor.stack[1][:unitid]
|
86
|
+
end
|
87
|
+
|
88
|
+
should "extract a series' series number" do
|
89
|
+
assert_equal 4, @extractor.stack[1][:series_number]
|
90
|
+
end
|
91
|
+
|
92
|
+
# should "only extract up to the series level" do
|
93
|
+
# assert_equal [
|
94
|
+
# {:unittitle=>"Programs", :unitdate=>"1949-1950",
|
95
|
+
# :level => 'file', :unitid => nil, :item_location => 'Box 39, Folder 5'},
|
96
|
+
# {:unittitle=>"Men's Basketball", :unitdate=>"1911-2006",
|
97
|
+
# :level => 'series', :unitid => 'Series 4',
|
98
|
+
# :series_number => 4
|
99
|
+
# }
|
100
|
+
# ], @extractor.stack
|
101
|
+
# end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMeadUA021_428 < Test::Unit::TestCase
|
4
|
+
context "extracting metadata from a mead" do
|
5
|
+
setup do
|
6
|
+
@mead = 'ua021_428-001-cb0007-000-001'
|
7
|
+
@result = Mead::Identifier.new(@mead, File.open('test/ead/ua021_428.xml'))
|
8
|
+
@extractor = Mead::Extractor.new(@result)
|
9
|
+
@extractor.extract
|
10
|
+
end
|
11
|
+
|
12
|
+
should "have metadata" do
|
13
|
+
assert !@extractor.stack.empty?
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'show ua021_428-001-cb0007-000-001 to be a valid mead' do
|
17
|
+
mead = Mead::Identifier.new(@mead, File.open('test/ead/ua021_428.xml')).extract
|
18
|
+
assert mead.valid_format?
|
19
|
+
assert mead.valid?
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|