stanford-mods 1.0.1 → 1.0.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.rdoc +1 -0
- data/lib/stanford-mods/searchworks.rb +83 -2
- data/lib/stanford-mods/version.rb +1 -1
- data/spec/searchworks_format_spec.rb +581 -201
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2811e50451509b7e00a879532aa64d9095705dd5
|
4
|
+
data.tar.gz: 59b2860b06e6b3c1911bf2bc7eb182eb42717acb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f44b0b10b632573073ec57ea1eb2743dd339f2e6e2e1299a79d36f299d27600c1b3647d8b3b0ebe730ef0527341f23ba94ed0e574c3c5de29aa4d56167cfeb00
|
7
|
+
data.tar.gz: e57c8c2dff5cf4011ee9d8f5bac257a2afcf779237a5eb95af5f3f1c69d155e1d243fbd7561282372710f3621213bea6f816fff905c610b020cc02792a0a8bbe
|
data/.travis.yml
CHANGED
data/README.rdoc
CHANGED
@@ -59,6 +59,7 @@ Example Using SearchWorks Mixins:
|
|
59
59
|
6. Create new Pull Request
|
60
60
|
|
61
61
|
== Releases
|
62
|
+
* <b>1.0.2</b> add format_main and sw_genre tests to searchworks.rb
|
62
63
|
* <b>1.0.1</b> sw_title_display keeps appropriate trailing punct more or less per spec in solrmarc-sw sw_index.properties
|
63
64
|
* <b>1.0.0</b> sw_full_title now includes partName and partNumber; sw_title_display created to be like sw_full_title but without trailing punctuation; sw format for typeOfResource sound recording; genre value is librettos, plural; sw format algorithm accommodates first letter upcase; genre value report does NOT map to a format, genre value 'project report' with ToR text is 'Book'
|
64
65
|
* <b>0.0.27</b> add genres 'Issue brief', 'Book chapter' and 'Working paper' to map to searchworks format 'Book'
|
@@ -527,8 +527,8 @@ module Stanford
|
|
527
527
|
|
528
528
|
# select one or more format values from the controlled vocabulary here:
|
529
529
|
# http://searchworks-solr-lb.stanford.edu:8983/solr/select?facet.field=format&rows=0&facet.sort=index
|
530
|
-
#
|
531
|
-
# @
|
530
|
+
# @return <Array[String]> value in the SearchWorks controlled vocabulary
|
531
|
+
# @deprecated - kept for backwards compatibility but not part of SW UI redesign work Summer 2014
|
532
532
|
def format
|
533
533
|
val = []
|
534
534
|
types = self.term_values(:typeOfResource)
|
@@ -579,6 +579,87 @@ module Stanford
|
|
579
579
|
val.uniq
|
580
580
|
end
|
581
581
|
|
582
|
+
# select one or more format values from the controlled vocabulary per JVine Summer 2014
|
583
|
+
# http://searchworks-solr-lb.stanford.edu:8983/solr/select?facet.field=format_main_ssim&rows=0&facet.sort=index
|
584
|
+
# @return <Array[String]> value in the SearchWorks controlled vocabulary
|
585
|
+
def format_main
|
586
|
+
val = []
|
587
|
+
types = self.term_values(:typeOfResource)
|
588
|
+
if types
|
589
|
+
genres = self.term_values(:genre)
|
590
|
+
issuance = self.term_values([:origin_info,:issuance])
|
591
|
+
types.each do |type|
|
592
|
+
case type
|
593
|
+
when 'cartographic'
|
594
|
+
val << 'Map'
|
595
|
+
when 'mixed material'
|
596
|
+
val << 'Archive/Manuscript'
|
597
|
+
when 'moving image'
|
598
|
+
val << 'Video'
|
599
|
+
when 'notated music'
|
600
|
+
val << 'Music score'
|
601
|
+
when 'software, multimedia'
|
602
|
+
if genres and (genres.include?('dataset') || genres.include?('Dataset'))
|
603
|
+
val << 'Dataset'
|
604
|
+
else
|
605
|
+
val << 'Software/Multimedia'
|
606
|
+
end
|
607
|
+
when 'sound recording-musical'
|
608
|
+
val << 'Music recording'
|
609
|
+
when 'sound recording-nonmusical', 'sound recording'
|
610
|
+
val << 'Sound recording'
|
611
|
+
when 'still image'
|
612
|
+
val << 'Image'
|
613
|
+
when 'text'
|
614
|
+
article_genres = ['article', 'Article',
|
615
|
+
'book chapter', 'Book chapter', 'Book Chapter',
|
616
|
+
'issue brief', 'Issue brief', 'Issue Brief',
|
617
|
+
'project report', 'Project report', 'Project Report',
|
618
|
+
'student project report', 'Student project report', 'Student Project report', 'Student Project Report',
|
619
|
+
'technical report', 'Technical report', 'Technical Report',
|
620
|
+
'working paper', 'Working paper', 'Working Paper'
|
621
|
+
]
|
622
|
+
val << 'Article' if genres and !(genres & article_genres).empty?
|
623
|
+
val << 'Book' if issuance and issuance.include? 'monographic'
|
624
|
+
book_genres = ['conference publication', 'Conference publication', 'Conference Publication',
|
625
|
+
'instruction', 'Instruction',
|
626
|
+
'librettos', 'Librettos',
|
627
|
+
'thesis', 'Thesis'
|
628
|
+
]
|
629
|
+
val << 'Book' if genres and !(genres & book_genres).empty?
|
630
|
+
val << 'Journal/Periodical' if issuance and issuance.include? 'continuing'
|
631
|
+
when 'three dimensional object'
|
632
|
+
val << 'Object'
|
633
|
+
end
|
634
|
+
end
|
635
|
+
end
|
636
|
+
val.uniq
|
637
|
+
end
|
638
|
+
|
639
|
+
# return values for the genre facet in SearchWorks
|
640
|
+
# @return <Array[String]>
|
641
|
+
def sw_genre
|
642
|
+
val = []
|
643
|
+
genres = self.term_values(:genre)
|
644
|
+
if genres
|
645
|
+
val << genres.map(&:capitalize)
|
646
|
+
val.flatten! if !val.empty?
|
647
|
+
if genres.include?('thesis') || genres.include?('Thesis')
|
648
|
+
val << 'Thesis/Dissertation'
|
649
|
+
val.delete 'Thesis'
|
650
|
+
end
|
651
|
+
conf_pub = ['conference publication', 'Conference publication', 'Conference Publication']
|
652
|
+
if !(genres & conf_pub).empty?
|
653
|
+
types = self.term_values(:typeOfResource)
|
654
|
+
if types && types.include?('text')
|
655
|
+
val << 'Conference proceedings'
|
656
|
+
val.delete 'Conference publication'
|
657
|
+
end
|
658
|
+
end
|
659
|
+
end
|
660
|
+
val.uniq
|
661
|
+
end
|
662
|
+
|
582
663
|
# @return [String] value with the numeric catkey in it, or nil if none exists
|
583
664
|
def catkey
|
584
665
|
catkey=self.term_values([:record_info,:recordIdentifier])
|
@@ -1,251 +1,631 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
describe "Format
|
4
|
+
describe "Format fields (searchworks.rb)" do
|
5
5
|
|
6
6
|
before(:all) do
|
7
7
|
@smods_rec = Stanford::Mods::Record.new
|
8
8
|
@ns_decl = "xmlns='#{Mods::MODS_NS}'"
|
9
9
|
end
|
10
10
|
|
11
|
-
context "
|
12
|
-
context "
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
expect(@smods_rec.format).to eq ['Book']
|
17
|
-
end
|
18
|
-
context "genre" do
|
19
|
-
it "'book chapter'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
20
|
-
m = "<mods #{@ns_decl}><genre>book chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
21
|
-
@smods_rec.from_str(m)
|
22
|
-
expect(@smods_rec.format).to eq ['Book']
|
23
|
-
m = "<mods #{@ns_decl}><genre>Book chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
24
|
-
@smods_rec.from_str(m)
|
25
|
-
expect(@smods_rec.format).to eq ['Book']
|
26
|
-
m = "<mods #{@ns_decl}><genre>Book Chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
11
|
+
context "format" do
|
12
|
+
context "Book:" do
|
13
|
+
context "typeOfResource text," do
|
14
|
+
it 'originInfo/issuance monographic' do
|
15
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><originInfo><issuance>monographic</issuance></originInfo></mods>"
|
27
16
|
@smods_rec.from_str(m)
|
28
17
|
expect(@smods_rec.format).to eq ['Book']
|
29
18
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
19
|
+
context "genre" do
|
20
|
+
it "'book chapter'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
21
|
+
m = "<mods #{@ns_decl}><genre>book chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
22
|
+
@smods_rec.from_str(m)
|
23
|
+
expect(@smods_rec.format).to eq ['Book']
|
24
|
+
m = "<mods #{@ns_decl}><genre>Book chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
25
|
+
@smods_rec.from_str(m)
|
26
|
+
expect(@smods_rec.format).to eq ['Book']
|
27
|
+
m = "<mods #{@ns_decl}><genre>Book Chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
28
|
+
@smods_rec.from_str(m)
|
29
|
+
expect(@smods_rec.format).to eq ['Book']
|
30
|
+
end
|
31
|
+
it "'issue brief'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
32
|
+
m = "<mods #{@ns_decl}><genre>issue brief</genre><typeOfResource>text</typeOfResource></mods>"
|
33
|
+
@smods_rec.from_str(m)
|
34
|
+
expect(@smods_rec.format).to eq ['Book']
|
35
|
+
m = "<mods #{@ns_decl}><genre>Issue brief</genre><typeOfResource>text</typeOfResource></mods>"
|
36
|
+
@smods_rec.from_str(m)
|
37
|
+
expect(@smods_rec.format).to eq ['Book']
|
38
|
+
m = "<mods #{@ns_decl}><genre>Issue Brief</genre><typeOfResource>text</typeOfResource></mods>"
|
39
|
+
@smods_rec.from_str(m)
|
40
|
+
expect(@smods_rec.format).to eq ['Book']
|
41
|
+
end
|
42
|
+
it "'librettos'", :jira => 'INDEX-98' do
|
43
|
+
m = "<mods #{@ns_decl}><genre>librettos</genre><typeOfResource>text</typeOfResource></mods>"
|
44
|
+
@smods_rec.from_str(m)
|
45
|
+
expect(@smods_rec.format).to eq ['Book']
|
46
|
+
m = "<mods #{@ns_decl}><genre>Librettos</genre><typeOfResource>text</typeOfResource></mods>"
|
47
|
+
@smods_rec.from_str(m)
|
48
|
+
expect(@smods_rec.format).to eq ['Book']
|
49
|
+
end
|
50
|
+
it "'libretto' isn't valid", :jira => 'INDEX-98' do
|
51
|
+
m = "<mods #{@ns_decl}><genre>libretto</genre><typeOfResource>text</typeOfResource></mods>"
|
52
|
+
@smods_rec.from_str(m)
|
53
|
+
expect(@smods_rec.format).to eq []
|
54
|
+
end
|
55
|
+
it "'project report'", :jira => 'GRYP-170', :github => 'gdor-indexer/#7' do
|
56
|
+
m = "<mods #{@ns_decl}><genre>project report</genre><typeOfResource>text</typeOfResource></mods>"
|
57
|
+
@smods_rec.from_str(m)
|
58
|
+
expect(@smods_rec.format).to eq ['Book']
|
59
|
+
m = "<mods #{@ns_decl}><genre>Project report</genre><typeOfResource>text</typeOfResource></mods>"
|
60
|
+
@smods_rec.from_str(m)
|
61
|
+
expect(@smods_rec.format).to eq ['Book']
|
62
|
+
m = "<mods #{@ns_decl}><genre>Project Report</genre><typeOfResource>text</typeOfResource></mods>"
|
63
|
+
@smods_rec.from_str(m)
|
64
|
+
expect(@smods_rec.format).to eq ['Book']
|
65
|
+
end
|
66
|
+
it "'report' isn't valid", :jira => 'GRYP-170', :github => 'gdor-indexer/#7' do
|
67
|
+
m = "<mods #{@ns_decl}><genre>report</genre><typeOfResource>text</typeOfResource></mods>"
|
68
|
+
@smods_rec.from_str(m)
|
69
|
+
expect(@smods_rec.format).to eq []
|
70
|
+
end
|
71
|
+
it "'technical report'", :jira => 'GRYPHONDOR-207' do
|
72
|
+
m = "<mods #{@ns_decl}><genre>technical report</genre><typeOfResource>text</typeOfResource></mods>"
|
73
|
+
@smods_rec.from_str(m)
|
74
|
+
expect(@smods_rec.format).to eq ['Book']
|
75
|
+
m = "<mods #{@ns_decl}><genre>Technical report</genre><typeOfResource>text</typeOfResource></mods>"
|
76
|
+
@smods_rec.from_str(m)
|
77
|
+
expect(@smods_rec.format).to eq ['Book']
|
78
|
+
m = "<mods #{@ns_decl}><genre>Technical Report</genre><typeOfResource>text</typeOfResource></mods>"
|
79
|
+
@smods_rec.from_str(m)
|
80
|
+
expect(@smods_rec.format).to eq ['Book']
|
81
|
+
end
|
82
|
+
it "'working paper'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
83
|
+
m = "<mods #{@ns_decl}><genre>working paper</genre><typeOfResource>text</typeOfResource></mods>"
|
84
|
+
@smods_rec.from_str(m)
|
85
|
+
expect(@smods_rec.format).to eq ['Book']
|
86
|
+
m = "<mods #{@ns_decl}><genre>Working paper</genre><typeOfResource>text</typeOfResource></mods>"
|
87
|
+
@smods_rec.from_str(m)
|
88
|
+
expect(@smods_rec.format).to eq ['Book']
|
89
|
+
m = "<mods #{@ns_decl}><genre>Working Paper</genre><typeOfResource>text</typeOfResource></mods>"
|
90
|
+
@smods_rec.from_str(m)
|
91
|
+
expect(@smods_rec.format).to eq ['Book']
|
92
|
+
end
|
91
93
|
end
|
92
94
|
end
|
93
|
-
end
|
94
|
-
end # 'Book'
|
95
|
+
end # 'Book'
|
95
96
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
context "Computer File: typeOfResource 'software, multimedia'" do
|
98
|
+
it "no genre (e.g. Dataset)" do
|
99
|
+
m = "<mods #{@ns_decl}><typeOfResource>software, multimedia</typeOfResource></mods>"
|
100
|
+
@smods_rec.from_str(m)
|
101
|
+
expect(@smods_rec.format).to eq ['Computer File']
|
102
|
+
end
|
103
|
+
it "genre 'game'", :jira => 'GRYPHONDOR-207' do
|
104
|
+
m = "<mods #{@ns_decl}><genre>game</genre><typeOfResource>software, multimedia</typeOfResource></mods>"
|
105
|
+
@smods_rec.from_str(m)
|
106
|
+
expect(@smods_rec.format).to eq ['Computer File']
|
107
|
+
m = "<mods #{@ns_decl}><genre>Game</genre><typeOfResource>software, multimedia</typeOfResource></mods>"
|
108
|
+
@smods_rec.from_str(m)
|
109
|
+
expect(@smods_rec.format).to eq ['Computer File']
|
110
|
+
end
|
101
111
|
end
|
102
|
-
|
103
|
-
|
112
|
+
|
113
|
+
it "Conference Proceedings: typeOfResource 'text', genre 'conference publication'", :jira => 'GRYPHONDOR-207' do
|
114
|
+
m = "<mods #{@ns_decl}><genre>conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
115
|
+
@smods_rec.from_str(m)
|
116
|
+
expect(@smods_rec.format).to eq ['Conference Proceedings']
|
117
|
+
m = "<mods #{@ns_decl}><genre>Conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
104
118
|
@smods_rec.from_str(m)
|
105
|
-
expect(@smods_rec.format).to eq ['
|
106
|
-
m = "<mods #{@ns_decl}><genre>
|
119
|
+
expect(@smods_rec.format).to eq ['Conference Proceedings']
|
120
|
+
m = "<mods #{@ns_decl}><genre>Conference Publication</genre><typeOfResource>text</typeOfResource></mods>"
|
107
121
|
@smods_rec.from_str(m)
|
108
|
-
expect(@smods_rec.format).to eq ['
|
122
|
+
expect(@smods_rec.format).to eq ['Conference Proceedings']
|
109
123
|
end
|
110
|
-
end
|
111
|
-
|
112
|
-
it "Conference Proceedings: typeOfResource 'text', genre 'conference publication'", :jira => 'GRYPHONDOR-207' do
|
113
|
-
m = "<mods #{@ns_decl}><genre>conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
114
|
-
@smods_rec.from_str(m)
|
115
|
-
expect(@smods_rec.format).to eq ['Conference Proceedings']
|
116
|
-
m = "<mods #{@ns_decl}><genre>Conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
117
|
-
@smods_rec.from_str(m)
|
118
|
-
expect(@smods_rec.format).to eq ['Conference Proceedings']
|
119
|
-
m = "<mods #{@ns_decl}><genre>Conference Publication</genre><typeOfResource>text</typeOfResource></mods>"
|
120
|
-
@smods_rec.from_str(m)
|
121
|
-
expect(@smods_rec.format).to eq ['Conference Proceedings']
|
122
|
-
end
|
123
124
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
125
|
+
context "Journal/Periodical: typeOfResource 'text'," do
|
126
|
+
it "genre 'article" do
|
127
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>article</genre></mods>"
|
128
|
+
@smods_rec.from_str(m)
|
129
|
+
expect(@smods_rec.format).to eq ['Journal/Periodical']
|
130
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>Article</genre></mods>"
|
131
|
+
@smods_rec.from_str(m)
|
132
|
+
expect(@smods_rec.format).to eq ['Journal/Periodical']
|
133
|
+
end
|
134
|
+
it "originInfo/issuance 'continuing'" do
|
135
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><originInfo><issuance>continuing</issuance></originInfo></mods>"
|
136
|
+
@smods_rec.from_str(m)
|
137
|
+
expect(@smods_rec.format).to eq ['Journal/Periodical']
|
138
|
+
end
|
139
|
+
end
|
132
140
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
141
|
+
it "Image: typeOfResource 'still image'" do
|
142
|
+
m = "<mods #{@ns_decl}><typeOfResource>still image</typeOfResource></mods>"
|
143
|
+
@smods_rec.from_str(m)
|
144
|
+
expect(@smods_rec.format).to eq ['Image']
|
145
|
+
end
|
146
|
+
|
147
|
+
it "Manuscript/Archive: typeOfResource 'mixed material'" do
|
148
|
+
m = "<mods #{@ns_decl}><typeOfResource>mixed material</typeOfResource></mods>"
|
149
|
+
@smods_rec.from_str(m)
|
150
|
+
expect(@smods_rec.format).to eq ['Manuscript/Archive']
|
151
|
+
end
|
152
|
+
|
153
|
+
it "Map/Globe: typeOfResource 'cartographic'" do
|
154
|
+
m = "<mods #{@ns_decl}><typeOfResource>cartographic</typeOfResource></mods>"
|
155
|
+
@smods_rec.from_str(m)
|
156
|
+
expect(@smods_rec.format).to eq ['Map/Globe']
|
157
|
+
end
|
138
158
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
159
|
+
it "Music - Recording: typeOfResource 'sound recording-musical'", :jira => 'GRYPHONDOR-207' do
|
160
|
+
m = "<mods #{@ns_decl}><typeOfResource>sound recording-musical</typeOfResource></mods>"
|
161
|
+
@smods_rec.from_str(m)
|
162
|
+
expect(@smods_rec.format).to eq ['Music - Recording']
|
163
|
+
end
|
144
164
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
165
|
+
it "Music - Score: typeOfResource 'notated music'" do
|
166
|
+
m = "<mods #{@ns_decl}><typeOfResource>notated music</typeOfResource></mods>"
|
167
|
+
@smods_rec.from_str(m)
|
168
|
+
expect(@smods_rec.format).to eq ['Music - Score']
|
169
|
+
end
|
150
170
|
|
151
|
-
|
152
|
-
|
153
|
-
@smods_rec.from_str(m)
|
154
|
-
expect(@smods_rec.format).to eq ['Other']
|
155
|
-
m = "<mods #{@ns_decl}><genre>Student project report</genre><typeOfResource>text</typeOfResource></mods>"
|
156
|
-
@smods_rec.from_str(m)
|
157
|
-
expect(@smods_rec.format).to eq ['Other']
|
158
|
-
m = "<mods #{@ns_decl}><genre>Student Project report</genre><typeOfResource>text</typeOfResource></mods>"
|
159
|
-
@smods_rec.from_str(m)
|
160
|
-
expect(@smods_rec.format).to eq ['Other']
|
161
|
-
m = "<mods #{@ns_decl}><genre>Student Project Report</genre><typeOfResource>text</typeOfResource></mods>"
|
162
|
-
@smods_rec.from_str(m)
|
163
|
-
expect(@smods_rec.format).to eq ['Other']
|
164
|
-
end
|
165
|
-
|
166
|
-
context "Sound Recording:" do
|
167
|
-
it "typeOfResource 'sound recording-nonmusical', genre 'sound", :jira => 'GRYPHONDOR-207' do
|
168
|
-
m = "<mods #{@ns_decl}><genre>sound</genre><typeOfResource>sound recording-nonmusical</typeOfResource></mods>"
|
171
|
+
it "Other: typeOfResource 'text', genre 'student project report'", :email => 'from Vitus, August 16, 2013' do
|
172
|
+
m = "<mods #{@ns_decl}><genre>student project report</genre><typeOfResource>text</typeOfResource></mods>"
|
169
173
|
@smods_rec.from_str(m)
|
170
|
-
expect(@smods_rec.format).to eq ['
|
171
|
-
m = "<mods #{@ns_decl}><genre>
|
174
|
+
expect(@smods_rec.format).to eq ['Other']
|
175
|
+
m = "<mods #{@ns_decl}><genre>Student project report</genre><typeOfResource>text</typeOfResource></mods>"
|
172
176
|
@smods_rec.from_str(m)
|
173
|
-
expect(@smods_rec.format).to eq ['
|
177
|
+
expect(@smods_rec.format).to eq ['Other']
|
178
|
+
m = "<mods #{@ns_decl}><genre>Student Project report</genre><typeOfResource>text</typeOfResource></mods>"
|
179
|
+
@smods_rec.from_str(m)
|
180
|
+
expect(@smods_rec.format).to eq ['Other']
|
181
|
+
m = "<mods #{@ns_decl}><genre>Student Project Report</genre><typeOfResource>text</typeOfResource></mods>"
|
182
|
+
@smods_rec.from_str(m)
|
183
|
+
expect(@smods_rec.format).to eq ['Other']
|
184
|
+
end
|
185
|
+
|
186
|
+
context "Sound Recording:" do
|
187
|
+
it "typeOfResource 'sound recording-nonmusical', genre 'sound", :jira => 'GRYPHONDOR-207' do
|
188
|
+
m = "<mods #{@ns_decl}><genre>sound</genre><typeOfResource>sound recording-nonmusical</typeOfResource></mods>"
|
189
|
+
@smods_rec.from_str(m)
|
190
|
+
expect(@smods_rec.format).to eq ['Sound Recording']
|
191
|
+
m = "<mods #{@ns_decl}><genre>Sound</genre><typeOfResource>sound recording-nonmusical</typeOfResource></mods>"
|
192
|
+
@smods_rec.from_str(m)
|
193
|
+
expect(@smods_rec.format).to eq ['Sound Recording']
|
194
|
+
end
|
195
|
+
it "typeOfResource 'sound recording', genre 'sound", :jira => 'INDEX-94' do
|
196
|
+
m = "<mods #{@ns_decl}><genre>sound</genre><typeOfResource>sound recording</typeOfResource></mods>"
|
197
|
+
@smods_rec.from_str(m)
|
198
|
+
expect(@smods_rec.format).to eq ['Sound Recording']
|
199
|
+
m = "<mods #{@ns_decl}><genre>Sound</genre><typeOfResource>sound recording</typeOfResource></mods>"
|
200
|
+
@smods_rec.from_str(m)
|
201
|
+
expect(@smods_rec.format).to eq ['Sound Recording']
|
202
|
+
end
|
174
203
|
end
|
175
|
-
|
176
|
-
|
204
|
+
|
205
|
+
it "Thesis: typeOfResource 'text', genre 'thesis'" do
|
206
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>thesis</genre></mods>"
|
177
207
|
@smods_rec.from_str(m)
|
178
|
-
expect(@smods_rec.format).to eq ['
|
179
|
-
m = "<mods #{@ns_decl}><
|
208
|
+
expect(@smods_rec.format).to eq ['Thesis']
|
209
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>Thesis</genre></mods>"
|
180
210
|
@smods_rec.from_str(m)
|
181
|
-
expect(@smods_rec.format).to eq ['
|
211
|
+
expect(@smods_rec.format).to eq ['Thesis']
|
182
212
|
end
|
183
|
-
end
|
184
213
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
214
|
+
context "Video: typeOfResource 'moving image'" do
|
215
|
+
it "no genre" do
|
216
|
+
m = "<mods #{@ns_decl}><typeOfResource>moving image</typeOfResource></mods>"
|
217
|
+
@smods_rec.from_str(m)
|
218
|
+
expect(@smods_rec.format).to eq ['Video']
|
219
|
+
end
|
220
|
+
it "genre 'motion picture'", :jira => 'GRYPHONDOR-207' do
|
221
|
+
m = "<mods #{@ns_decl}><genre>motion picture</genre><typeOfResource>moving image</typeOfResource></mods>"
|
222
|
+
@smods_rec.from_str(m)
|
223
|
+
expect(@smods_rec.format).to eq ['Video']
|
224
|
+
m = "<mods #{@ns_decl}><genre>Motion Picture</genre><typeOfResource>moving image</typeOfResource></mods>"
|
225
|
+
@smods_rec.from_str(m)
|
226
|
+
expect(@smods_rec.format).to eq ['Video']
|
227
|
+
m = "<mods #{@ns_decl}><genre>Motion Picture</genre><typeOfResource>moving image</typeOfResource></mods>"
|
228
|
+
@smods_rec.from_str(m)
|
229
|
+
expect(@smods_rec.format).to eq ['Video']
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
context "multiple format values", :jira => 'INDEX-32' do
|
234
|
+
it "multiple typeOfResource elements" do
|
235
|
+
m = "<mods #{@ns_decl}><typeOfResource>moving image</typeOfResource><typeOfResource>sound recording</typeOfResource></mods>"
|
236
|
+
@smods_rec.from_str(m)
|
237
|
+
expect(@smods_rec.format).to eq ['Video', 'Sound Recording']
|
238
|
+
end
|
239
|
+
it "multiple genre elements, single typeOfResource" do
|
240
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>librettos</genre><genre>article</genre></mods>"
|
241
|
+
@smods_rec.from_str(m)
|
242
|
+
expect(@smods_rec.format).to eq ['Book', 'Journal/Periodical']
|
243
|
+
end
|
244
|
+
it "mish mash" do
|
245
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><typeOfResource>still image</typeOfResource><genre>librettos</genre><genre>article</genre></mods>"
|
246
|
+
@smods_rec.from_str(m)
|
247
|
+
expect(@smods_rec.format).to eq ['Book', 'Journal/Periodical', 'Image']
|
248
|
+
end
|
249
|
+
it "doesn't give duplicate values" do
|
250
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>librettos</genre><genre>issue brief</genre></mods>"
|
251
|
+
@smods_rec.from_str(m)
|
252
|
+
expect(@smods_rec.format).to eq ['Book']
|
253
|
+
end
|
254
|
+
end
|
193
255
|
|
194
|
-
|
195
|
-
|
196
|
-
|
256
|
+
it "empty Array if no typeOfResource field" do
|
257
|
+
m = "<mods #{@ns_decl}><originInfo>
|
258
|
+
<dateCreated>1904</dateCreated>
|
259
|
+
</originInfo></mods>"
|
197
260
|
@smods_rec.from_str(m)
|
198
|
-
expect(@smods_rec.format).to eq [
|
261
|
+
expect(@smods_rec.format).to eq []
|
199
262
|
end
|
200
|
-
|
201
|
-
|
263
|
+
|
264
|
+
it "empty Array if weird typeOfResource value" do
|
265
|
+
m = "<mods #{@ns_decl}>
|
266
|
+
<typeOfResource>foo</typeOfResource>
|
267
|
+
</mods>"
|
202
268
|
@smods_rec.from_str(m)
|
203
|
-
expect(@smods_rec.format).to eq [
|
204
|
-
|
269
|
+
expect(@smods_rec.format).to eq []
|
270
|
+
end
|
271
|
+
end # format
|
272
|
+
|
273
|
+
context "format_main" do
|
274
|
+
it "3D object: typeOfResource 'three dimensional object'" do
|
275
|
+
m = "<mods #{@ns_decl}><typeOfResource>three dimensional object</typeOfResource></mods>"
|
205
276
|
@smods_rec.from_str(m)
|
206
|
-
expect(@smods_rec.
|
207
|
-
|
277
|
+
expect(@smods_rec.format_main).to eq ['Object']
|
278
|
+
end
|
279
|
+
|
280
|
+
it "Archive/Manuscript: typeOfResource 'mixed material'" do
|
281
|
+
m = "<mods #{@ns_decl}><typeOfResource>mixed material</typeOfResource></mods>"
|
208
282
|
@smods_rec.from_str(m)
|
209
|
-
expect(@smods_rec.
|
283
|
+
expect(@smods_rec.format_main).to eq ['Archive/Manuscript']
|
284
|
+
end
|
285
|
+
|
286
|
+
context "Article: typeOfResource text, genre" do
|
287
|
+
it "'article'" do
|
288
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre authority=\"marcgt\">article</genre></mods>"
|
289
|
+
@smods_rec.from_str(m)
|
290
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
291
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre authority=\"marcgt\">Article</genre></mods>"
|
292
|
+
@smods_rec.from_str(m)
|
293
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
294
|
+
end
|
295
|
+
it "'book chapter'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
296
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">book chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
297
|
+
@smods_rec.from_str(m)
|
298
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
299
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Book chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
300
|
+
@smods_rec.from_str(m)
|
301
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
302
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Book Chapter</genre><typeOfResource>text</typeOfResource></mods>"
|
303
|
+
@smods_rec.from_str(m)
|
304
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
305
|
+
end
|
306
|
+
it "'issue brief'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
307
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">issue brief</genre><typeOfResource>text</typeOfResource></mods>"
|
308
|
+
@smods_rec.from_str(m)
|
309
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
310
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Issue brief</genre><typeOfResource>text</typeOfResource></mods>"
|
311
|
+
@smods_rec.from_str(m)
|
312
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
313
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Issue Brief</genre><typeOfResource>text</typeOfResource></mods>"
|
314
|
+
@smods_rec.from_str(m)
|
315
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
316
|
+
end
|
317
|
+
it "'project report'", :jira => 'GRYP-170', :github => 'gdor-indexer/#7' do
|
318
|
+
m = "<mods #{@ns_decl}><genre>project report</genre><typeOfResource>text</typeOfResource></mods>"
|
319
|
+
@smods_rec.from_str(m)
|
320
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
321
|
+
m = "<mods #{@ns_decl}><genre>Project report</genre><typeOfResource>text</typeOfResource></mods>"
|
322
|
+
@smods_rec.from_str(m)
|
323
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
324
|
+
m = "<mods #{@ns_decl}><genre>Project Report</genre><typeOfResource>text</typeOfResource></mods>"
|
325
|
+
@smods_rec.from_str(m)
|
326
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
327
|
+
end
|
328
|
+
it "'report' isn't valid", :jira => 'GRYP-170', :github => 'gdor-indexer/#7' do
|
329
|
+
m = "<mods #{@ns_decl}><genre>report</genre><typeOfResource>text</typeOfResource></mods>"
|
330
|
+
@smods_rec.from_str(m)
|
331
|
+
expect(@smods_rec.format_main).to eq []
|
332
|
+
end
|
333
|
+
it "'student project report'", :consul => '/NGDE/Format 2014-05-28' do
|
334
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">student project report</genre><typeOfResource>text</typeOfResource></mods>"
|
335
|
+
@smods_rec.from_str(m)
|
336
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
337
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Student project report</genre><typeOfResource>text</typeOfResource></mods>"
|
338
|
+
@smods_rec.from_str(m)
|
339
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
340
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Student Project report</genre><typeOfResource>text</typeOfResource></mods>"
|
341
|
+
@smods_rec.from_str(m)
|
342
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
343
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Student Project Report</genre><typeOfResource>text</typeOfResource></mods>"
|
344
|
+
@smods_rec.from_str(m)
|
345
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
346
|
+
end
|
347
|
+
it "'technical report'", :jira => 'GRYPHONDOR-207' do
|
348
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">technical report</genre><typeOfResource>text</typeOfResource></mods>"
|
349
|
+
@smods_rec.from_str(m)
|
350
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
351
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Technical report</genre><typeOfResource>text</typeOfResource></mods>"
|
352
|
+
@smods_rec.from_str(m)
|
353
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
354
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Technical Report</genre><typeOfResource>text</typeOfResource></mods>"
|
355
|
+
@smods_rec.from_str(m)
|
356
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
357
|
+
end
|
358
|
+
it "'working paper'", :email => 'mods-squad 2014-05-22, Joanna Dyla' do
|
359
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">working paper</genre><typeOfResource>text</typeOfResource></mods>"
|
360
|
+
@smods_rec.from_str(m)
|
361
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
362
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Working paper</genre><typeOfResource>text</typeOfResource></mods>"
|
363
|
+
@smods_rec.from_str(m)
|
364
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
365
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Working Paper</genre><typeOfResource>text</typeOfResource></mods>"
|
366
|
+
@smods_rec.from_str(m)
|
367
|
+
expect(@smods_rec.format_main).to eq ['Article']
|
368
|
+
end
|
369
|
+
end # Article
|
370
|
+
|
371
|
+
context "Book" do
|
372
|
+
context "typeOfResource text," do
|
373
|
+
it 'originInfo/issuance monographic' do
|
374
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><originInfo><issuance>monographic</issuance></originInfo></mods>"
|
375
|
+
@smods_rec.from_str(m)
|
376
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
377
|
+
end
|
378
|
+
context "genre" do
|
379
|
+
it "'conference publication'", :jira => 'GRYPHONDOR-207' do
|
380
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
381
|
+
@smods_rec.from_str(m)
|
382
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
383
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
384
|
+
@smods_rec.from_str(m)
|
385
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
386
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Conference Publication</genre><typeOfResource>text</typeOfResource></mods>"
|
387
|
+
@smods_rec.from_str(m)
|
388
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
389
|
+
end
|
390
|
+
it "'instruction'", :consul => '/NGDE/Format 2014-05-28' do
|
391
|
+
# Hydrus 'textbook'
|
392
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">instruction</genre><typeOfResource>text</typeOfResource></mods>"
|
393
|
+
@smods_rec.from_str(m)
|
394
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
395
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Instruction</genre><typeOfResource>text</typeOfResource></mods>"
|
396
|
+
@smods_rec.from_str(m)
|
397
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
398
|
+
end
|
399
|
+
it "'libretto' isn't valid", :jira => 'INDEX-98' do
|
400
|
+
m = "<mods #{@ns_decl}><genre>libretto</genre><typeOfResource>text</typeOfResource></mods>"
|
401
|
+
@smods_rec.from_str(m)
|
402
|
+
expect(@smods_rec.format_main).to eq []
|
403
|
+
end
|
404
|
+
it "'librettos'", :jira => 'INDEX-98' do
|
405
|
+
m = "<mods #{@ns_decl}><genre>librettos</genre><typeOfResource>text</typeOfResource></mods>"
|
406
|
+
@smods_rec.from_str(m)
|
407
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
408
|
+
m = "<mods #{@ns_decl}><genre>Librettos</genre><typeOfResource>text</typeOfResource></mods>"
|
409
|
+
@smods_rec.from_str(m)
|
410
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
411
|
+
end
|
412
|
+
it "'thesis'" do
|
413
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">thesis</genre><typeOfResource>text</typeOfResource></mods>"
|
414
|
+
@smods_rec.from_str(m)
|
415
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
416
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Thesis</genre><typeOfResource>text</typeOfResource></mods>"
|
417
|
+
@smods_rec.from_str(m)
|
418
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
419
|
+
end
|
420
|
+
end
|
421
|
+
end
|
422
|
+
end # Book
|
423
|
+
|
424
|
+
context "Dataset: typeOfResource 'software, multimedia'" do
|
425
|
+
it "genre 'dataset'" do
|
426
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">dataset</genre><typeOfResource>software, multimedia</typeOfResource></mods>"
|
427
|
+
@smods_rec.from_str(m)
|
428
|
+
expect(@smods_rec.format_main).to eq ['Dataset']
|
429
|
+
m = "<mods #{@ns_decl}><genre authority=\"local\">Dataset</genre><typeOfResource>software, multimedia</typeOfResource></mods>"
|
430
|
+
@smods_rec.from_str(m)
|
431
|
+
expect(@smods_rec.format_main).to eq ['Dataset']
|
432
|
+
end
|
210
433
|
end
|
211
|
-
end
|
212
434
|
|
213
|
-
|
214
|
-
|
215
|
-
m = "<mods #{@ns_decl}><typeOfResource>moving image</typeOfResource><typeOfResource>sound recording</typeOfResource></mods>"
|
435
|
+
it "Image: typeOfResource 'still image'" do
|
436
|
+
m = "<mods #{@ns_decl}><typeOfResource>still image</typeOfResource></mods>"
|
216
437
|
@smods_rec.from_str(m)
|
217
|
-
expect(@smods_rec.
|
438
|
+
expect(@smods_rec.format_main).to eq ['Image']
|
218
439
|
end
|
219
|
-
|
220
|
-
|
440
|
+
|
441
|
+
it "Journal/Periodical: typeOfResource 'text', originInfo/issuance 'continuing'" do
|
442
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><originInfo><issuance>continuing</issuance></originInfo></mods>"
|
221
443
|
@smods_rec.from_str(m)
|
222
|
-
expect(@smods_rec.
|
444
|
+
expect(@smods_rec.format_main).to eq ['Journal/Periodical']
|
223
445
|
end
|
224
|
-
|
225
|
-
|
446
|
+
|
447
|
+
it "Map: typeOfResource 'cartographic'" do
|
448
|
+
m = "<mods #{@ns_decl}><typeOfResource>cartographic</typeOfResource></mods>"
|
226
449
|
@smods_rec.from_str(m)
|
227
|
-
expect(@smods_rec.
|
450
|
+
expect(@smods_rec.format_main).to eq ['Map']
|
451
|
+
end
|
452
|
+
|
453
|
+
context "Music - Recording: typeOfResource 'sound recording-musical'", :jira => 'GRYPHONDOR-207' do
|
454
|
+
it "no genre" do
|
455
|
+
m = "<mods #{@ns_decl}><typeOfResource>sound recording-musical</typeOfResource></mods>"
|
456
|
+
@smods_rec.from_str(m)
|
457
|
+
expect(@smods_rec.format_main).to eq ['Music recording']
|
458
|
+
end
|
459
|
+
it "genre 'sound'" do
|
460
|
+
m = "<mods #{@ns_decl}><typeOfResource>sound recording-musical</typeOfResource><genre authority=\"marcgt\">sound</genre></mods>"
|
461
|
+
@smods_rec.from_str(m)
|
462
|
+
expect(@smods_rec.format_main).to eq ['Music recording']
|
463
|
+
m = "<mods #{@ns_decl}><typeOfResource>sound recording-musical</typeOfResource><genre authority=\"marcgt\">Sound</genre></mods>"
|
464
|
+
@smods_rec.from_str(m)
|
465
|
+
expect(@smods_rec.format_main).to eq ['Music recording']
|
466
|
+
end
|
228
467
|
end
|
229
|
-
|
230
|
-
|
468
|
+
|
469
|
+
it "Music - Score: typeOfResource 'notated music'" do
|
470
|
+
m = "<mods #{@ns_decl}><typeOfResource>notated music</typeOfResource></mods>"
|
231
471
|
@smods_rec.from_str(m)
|
232
|
-
expect(@smods_rec.
|
472
|
+
expect(@smods_rec.format_main).to eq ['Music score']
|
233
473
|
end
|
234
|
-
end
|
235
474
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
475
|
+
context "Software/Multimedia: typeOfResource 'software, multimedia'" do
|
476
|
+
it "no genre" do
|
477
|
+
m = "<mods #{@ns_decl}><typeOfResource>software, multimedia</typeOfResource></mods>"
|
478
|
+
@smods_rec.from_str(m)
|
479
|
+
expect(@smods_rec.format_main).to eq ['Software/Multimedia']
|
480
|
+
end
|
481
|
+
it "genre 'game'", :jira => 'GRYPHONDOR-207' do
|
482
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">game</genre><typeOfResource>software, multimedia</typeOfResource></mods>"
|
483
|
+
@smods_rec.from_str(m)
|
484
|
+
expect(@smods_rec.format_main).to eq ['Software/Multimedia']
|
485
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Game</genre><typeOfResource>software, multimedia</typeOfResource></mods>"
|
486
|
+
@smods_rec.from_str(m)
|
487
|
+
expect(@smods_rec.format_main).to eq ['Software/Multimedia']
|
488
|
+
end
|
489
|
+
end
|
243
490
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
491
|
+
context "Sound Recording:" do
|
492
|
+
it "typeOfResource 'sound recording-nonmusical', genre 'sound", :jira => 'GRYPHONDOR-207' do
|
493
|
+
m = "<mods #{@ns_decl}><genre>sound</genre><typeOfResource>sound recording-nonmusical</typeOfResource></mods>"
|
494
|
+
@smods_rec.from_str(m)
|
495
|
+
expect(@smods_rec.format_main).to eq ['Sound recording']
|
496
|
+
m = "<mods #{@ns_decl}><genre>Sound</genre><typeOfResource>sound recording-nonmusical</typeOfResource></mods>"
|
497
|
+
@smods_rec.from_str(m)
|
498
|
+
expect(@smods_rec.format_main).to eq ['Sound recording']
|
499
|
+
end
|
500
|
+
it "typeOfResource 'sound recording', genre 'sound", :jira => 'INDEX-94' do
|
501
|
+
m = "<mods #{@ns_decl}><genre>sound</genre><typeOfResource>sound recording</typeOfResource></mods>"
|
502
|
+
@smods_rec.from_str(m)
|
503
|
+
expect(@smods_rec.format_main).to eq ['Sound recording']
|
504
|
+
m = "<mods #{@ns_decl}><genre>Sound</genre><typeOfResource>sound recording</typeOfResource></mods>"
|
505
|
+
@smods_rec.from_str(m)
|
506
|
+
expect(@smods_rec.format_main).to eq ['Sound recording']
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
|
511
|
+
context "Video: typeOfResource 'moving image'" do
|
512
|
+
it "no genre" do
|
513
|
+
m = "<mods #{@ns_decl}><typeOfResource>moving image</typeOfResource></mods>"
|
514
|
+
@smods_rec.from_str(m)
|
515
|
+
expect(@smods_rec.format_main).to eq ['Video']
|
516
|
+
end
|
517
|
+
it "genre 'motion picture'", :jira => 'GRYPHONDOR-207' do
|
518
|
+
m = "<mods #{@ns_decl}><genre>motion picture</genre><typeOfResource>moving image</typeOfResource></mods>"
|
519
|
+
@smods_rec.from_str(m)
|
520
|
+
expect(@smods_rec.format_main).to eq ['Video']
|
521
|
+
m = "<mods #{@ns_decl}><genre>Motion picture</genre><typeOfResource>moving image</typeOfResource></mods>"
|
522
|
+
@smods_rec.from_str(m)
|
523
|
+
expect(@smods_rec.format_main).to eq ['Video']
|
524
|
+
m = "<mods #{@ns_decl}><genre>Motion Picture</genre><typeOfResource>moving image</typeOfResource></mods>"
|
525
|
+
@smods_rec.from_str(m)
|
526
|
+
expect(@smods_rec.format_main).to eq ['Video']
|
527
|
+
end
|
528
|
+
end
|
529
|
+
|
530
|
+
context "multiple values", :jira => 'INDEX-32' do
|
531
|
+
it "multiple typeOfResource elements" do
|
532
|
+
m = "<mods #{@ns_decl}><typeOfResource>moving image</typeOfResource><typeOfResource>sound recording</typeOfResource></mods>"
|
533
|
+
@smods_rec.from_str(m)
|
534
|
+
expect(@smods_rec.format_main).to eq ['Video', 'Sound recording']
|
535
|
+
end
|
536
|
+
it "multiple genre elements, single typeOfResource" do
|
537
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>librettos</genre><genre>article</genre></mods>"
|
538
|
+
@smods_rec.from_str(m)
|
539
|
+
expect(@smods_rec.format_main).to eq ['Article', 'Book']
|
540
|
+
end
|
541
|
+
it "mish mash" do
|
542
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><typeOfResource>still image</typeOfResource><genre>librettos</genre><genre>article</genre></mods>"
|
543
|
+
@smods_rec.from_str(m)
|
544
|
+
expect(@smods_rec.format_main).to eq ['Article', 'Book', 'Image']
|
545
|
+
end
|
546
|
+
it "doesn't give duplicate values" do
|
547
|
+
m = "<mods #{@ns_decl}><typeOfResource>text</typeOfResource><genre>librettos</genre><genre>thesis</genre></mods>"
|
548
|
+
@smods_rec.from_str(m)
|
549
|
+
expect(@smods_rec.format_main).to eq ['Book']
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
553
|
+
it "empty Array if no typeOfResource field" do
|
554
|
+
m = "<mods #{@ns_decl}><originInfo>
|
555
|
+
<dateCreated>1904</dateCreated>
|
556
|
+
</originInfo></mods>"
|
557
|
+
@smods_rec.from_str(m)
|
558
|
+
expect(@smods_rec.format_main).to eq []
|
559
|
+
end
|
560
|
+
|
561
|
+
it "empty Array if weird typeOfResource value" do
|
562
|
+
m = "<mods #{@ns_decl}>
|
563
|
+
<typeOfResource>foo</typeOfResource>
|
564
|
+
</mods>"
|
565
|
+
@smods_rec.from_str(m)
|
566
|
+
expect(@smods_rec.format_main).to eq []
|
567
|
+
end
|
568
|
+
end #format_main
|
569
|
+
|
570
|
+
context "sw_genre" do
|
571
|
+
it "Conference proceedings: typeOfResource 'text', genre 'conference publication'" do
|
572
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
573
|
+
@smods_rec.from_str(m)
|
574
|
+
expect(@smods_rec.sw_genre).to eq ['Conference proceedings']
|
575
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Conference publication</genre><typeOfResource>text</typeOfResource></mods>"
|
576
|
+
@smods_rec.from_str(m)
|
577
|
+
expect(@smods_rec.sw_genre).to eq ['Conference proceedings']
|
578
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Conference Publication</genre><typeOfResource>text</typeOfResource></mods>"
|
579
|
+
@smods_rec.from_str(m)
|
580
|
+
expect(@smods_rec.sw_genre).to eq ['Conference proceedings']
|
581
|
+
end
|
582
|
+
it "Thesis/Dissertation: typeOfResource 'text', genre 'thesis'" do
|
583
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">thesis</genre><typeOfResource>text</typeOfResource></mods>"
|
584
|
+
@smods_rec.from_str(m)
|
585
|
+
expect(@smods_rec.sw_genre).to eq ['Thesis/Dissertation']
|
586
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Thesis</genre><typeOfResource>text</typeOfResource></mods>"
|
587
|
+
@smods_rec.from_str(m)
|
588
|
+
expect(@smods_rec.sw_genre).to eq ['Thesis/Dissertation']
|
589
|
+
end
|
590
|
+
it "capitalizes the first letter of a genre value" do
|
591
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">student project report</genre></mods>"
|
592
|
+
@smods_rec.from_str(m)
|
593
|
+
expect(@smods_rec.sw_genre).to eq ['Student project report']
|
594
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Student project report</genre></mods>"
|
595
|
+
@smods_rec.from_str(m)
|
596
|
+
expect(@smods_rec.sw_genre).to eq ['Student project report']
|
597
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Student Project report</genre></mods>"
|
598
|
+
@smods_rec.from_str(m)
|
599
|
+
expect(@smods_rec.sw_genre).to eq ['Student project report']
|
600
|
+
m = "<mods #{@ns_decl}><genre authority=\"marcgt\">Student Project Report</genre></mods>"
|
601
|
+
@smods_rec.from_str(m)
|
602
|
+
expect(@smods_rec.sw_genre).to eq ['Student project report']
|
603
|
+
end
|
604
|
+
# NOTE: may need to remove plurals and/or trailing punctuation in future
|
605
|
+
it "returns all genre values" do
|
606
|
+
m = "<mods #{@ns_decl}>
|
607
|
+
<genre>game</genre>
|
608
|
+
<genre>foo</genre>
|
609
|
+
<genre>technical report</genre>
|
610
|
+
</mods>"
|
611
|
+
@smods_rec.from_str(m)
|
612
|
+
expect(@smods_rec.sw_genre).to eq ['Game', 'Foo', 'Technical report']
|
613
|
+
end
|
614
|
+
it "doesn't have duplicates" do
|
615
|
+
m = "<mods #{@ns_decl}>
|
616
|
+
<genre>game</genre>
|
617
|
+
<genre>technical report</genre>
|
618
|
+
<genre>Game</genre>
|
619
|
+
</mods>"
|
620
|
+
@smods_rec.from_str(m)
|
621
|
+
expect(@smods_rec.sw_genre).to eq ['Game', 'Technical report']
|
622
|
+
end
|
623
|
+
it "empty Array if no genre values" do
|
624
|
+
m = "<mods #{@ns_decl}>
|
625
|
+
<typeOfResource>text</typeOfResource>
|
626
|
+
</mods>"
|
627
|
+
@smods_rec.from_str(m)
|
628
|
+
expect(@smods_rec.sw_genre).to eq []
|
629
|
+
end
|
630
|
+
end # sw_genre
|
251
631
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stanford-mods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
@@ -9,76 +9,76 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mods
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rdoc
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: yard
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rspec
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
description: Stanford specific wrangling of MODS metadata from DOR, the Stanford Digital
|
@@ -92,10 +92,10 @@ extra_rdoc_files:
|
|
92
92
|
- LICENSE
|
93
93
|
- README.rdoc
|
94
94
|
files:
|
95
|
-
- .coveralls.yml
|
96
|
-
- .gitignore
|
97
|
-
- .travis.yml
|
98
|
-
- .yardopts
|
95
|
+
- ".coveralls.yml"
|
96
|
+
- ".gitignore"
|
97
|
+
- ".travis.yml"
|
98
|
+
- ".yardopts"
|
99
99
|
- Gemfile
|
100
100
|
- LICENSE
|
101
101
|
- README.rdoc
|
@@ -123,12 +123,12 @@ require_paths:
|
|
123
123
|
- lib
|
124
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
|
-
- -
|
126
|
+
- - ">="
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
|
-
- -
|
131
|
+
- - ">="
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|