pennmarc 1.0.25 → 1.0.26

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +8 -9
  3. data/lib/pennmarc/helpers/creator.rb +139 -65
  4. data/lib/pennmarc/helpers/edition.rb +5 -3
  5. data/lib/pennmarc/helpers/note.rb +24 -19
  6. data/lib/pennmarc/helpers/production.rb +113 -20
  7. data/lib/pennmarc/test/marc_helpers.rb +83 -0
  8. data/lib/pennmarc/util.rb +98 -69
  9. data/lib/pennmarc/version.rb +1 -1
  10. data/lib/pennmarc.rb +7 -0
  11. data/spec/lib/pennmarc/helpers/access_spec.rb +0 -2
  12. data/spec/lib/pennmarc/helpers/citation_spec.rb +0 -2
  13. data/spec/lib/pennmarc/helpers/classification_spec.rb +0 -2
  14. data/spec/lib/pennmarc/helpers/creator_spec.rb +103 -2
  15. data/spec/lib/pennmarc/helpers/database_spec.rb +0 -2
  16. data/spec/lib/pennmarc/helpers/date_spec.rb +0 -2
  17. data/spec/lib/pennmarc/helpers/edition_spec.rb +4 -2
  18. data/spec/lib/pennmarc/helpers/format_spec.rb +0 -2
  19. data/spec/lib/pennmarc/helpers/genre_spec.rb +0 -2
  20. data/spec/lib/pennmarc/helpers/identifer_spec.rb +0 -2
  21. data/spec/lib/pennmarc/helpers/inventory_spec.rb +0 -2
  22. data/spec/lib/pennmarc/helpers/language_spec.rb +0 -2
  23. data/spec/lib/pennmarc/helpers/link_spec.rb +0 -2
  24. data/spec/lib/pennmarc/helpers/location_spec.rb +0 -2
  25. data/spec/lib/pennmarc/helpers/note_spec.rb +22 -29
  26. data/spec/lib/pennmarc/helpers/production_spec.rb +121 -22
  27. data/spec/lib/pennmarc/helpers/relation_spec.rb +0 -2
  28. data/spec/lib/pennmarc/helpers/series_spec.rb +0 -2
  29. data/spec/lib/pennmarc/helpers/subject_spec.rb +0 -2
  30. data/spec/lib/pennmarc/helpers/title_spec.rb +0 -2
  31. data/spec/lib/pennmarc/marc_util_spec.rb +0 -2
  32. data/spec/lib/pennmarc/parser_spec.rb +1 -1
  33. data/spec/spec_helper.rb +7 -0
  34. data/spec/support/fixture_helpers.rb +10 -0
  35. metadata +4 -3
  36. data/spec/support/marc_spec_helpers.rb +0 -85
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Classification' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Classification }
7
5
  let(:record) do
8
6
  marc_record fields: [marc_field(tag: tag,
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Creator' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Creator }
7
5
  let(:mapping) { { aut: 'Author' } }
8
6
 
@@ -95,6 +93,91 @@ describe 'PennMARC::Creator' do
95
93
  end
96
94
  end
97
95
 
96
+ describe '.authors_list' do
97
+ let(:record) { marc_record fields: fields }
98
+
99
+ context 'with two author records' do
100
+ let(:fields) do
101
+ [marc_field(tag: '100', subfields: { a: 'Surname, Name', '0': 'http://cool.uri/12345', d: '1900-2000',
102
+ e: 'author.', '4': 'http://cool.uri/vocabulary/relators/aut' }),
103
+ marc_field(tag: '700', subfields: { a: 'Surname, Alternative', '6': '100', d: '1970-' })]
104
+ end
105
+
106
+ it 'returns single author values with no URIs anywhere' do
107
+ values = helper.authors_list(record)
108
+ expect(values).to contain_exactly 'Surname, Name', 'Surname, Alternative'
109
+ end
110
+ end
111
+
112
+ context 'with three author records - abbreviated names' do
113
+ let(:fields) do
114
+ [marc_field(tag: '100', subfields: { a: 'Surname, Alex', '0': 'http://cool.uri/12345', d: '1900-2000',
115
+ e: 'author.', '4': 'http://cool.uri/vocabulary/relators/aut' }),
116
+ marc_field(tag: '110', subfields: { a: 'Second, NameX', '0': 'http://cool.uri/12345', d: '1901-2010',
117
+ e: 'author.', '4': 'http://cool.uri/vocabulary/relators/aut' }),
118
+ marc_field(tag: '700', subfields: { a: 'Alt, Alternative', '6': '100', d: '1970-' })]
119
+ end
120
+
121
+ it 'returns single author values with no URIs anywhere' do
122
+ values = helper.authors_list(record, first_initial_only: true)
123
+ expect(values).to contain_exactly 'Surname, A.', 'Second, N.', 'Alt, A.'
124
+ end
125
+ end
126
+ end
127
+
128
+ describe '.contributors_list' do
129
+ let(:record) { marc_record fields: fields }
130
+
131
+ context 'with two authors and four contributors records, names only' do
132
+ let(:fields) do
133
+ [marc_field(tag: '100', subfields: { a: 'Hamilton, Alex', '0': 'http://cool.uri/12345', d: '1900-2000',
134
+ e: 'author.' }),
135
+ marc_field(tag: '100', subfields: { a: 'Lincoln, Abraham', b: 'I', c: 'laureate', d: '1968', e: 'author',
136
+ j: 'pseud', q: 'Fuller Name', u: 'affiliation', '3': 'materials',
137
+ '4': 'aut' }),
138
+ marc_field(tag: '700', subfields: { a: 'Einstein, Albert', '6': '100', d: '1970-', '4': 'trl',
139
+ e: 'translator' }),
140
+ marc_field(tag: '700', subfields: { a: 'Franklin, Ben', '6': '100', d: '1970-', '4': 'edt' }),
141
+ marc_field(tag: '710', subfields: { a: 'Jefferson, Thomas', '6': '100', d: '1870-', '4': 'edt' }),
142
+ marc_field(tag: '700', subfields: { a: 'Dickens, Charles', '6': '100', d: '1970-', '4': 'com' })]
143
+ end
144
+
145
+ it 'returns two authors and four contributors' do
146
+ values = helper.contributors_list(record)
147
+ expect(values).to contain_exactly ['Author', ['Hamilton, Alex', 'Lincoln, Abraham']],
148
+ ['Compiler', ['Dickens, Charles']],
149
+ ['Editor', ['Franklin, Ben', 'Jefferson, Thomas']],
150
+ ['Translator', ['Einstein, Albert']]
151
+ end
152
+ end
153
+
154
+ context 'with two authors and four contributors records, with full information and relator' do
155
+ let(:fields) do
156
+ [marc_field(tag: '100', subfields: { a: 'Hamilton, Alex', '0': 'http://cool.uri/12345', d: '1900-2000',
157
+ e: 'author.', '4': 'aut' }),
158
+ marc_field(tag: '100', subfields: { a: 'Lincoln, Abraham', b: 'I', c: 'laureate', d: '1968', e: 'author',
159
+ j: 'pseud', q: 'Fuller Name', u: 'affiliation', '3': 'materials',
160
+ '4': 'aut' }),
161
+ marc_field(tag: '700', subfields: { a: 'Einstein, Albert', '6': '100', d: '1970-', '4': 'trl',
162
+ e: 'translator' }),
163
+ marc_field(tag: '700', subfields: { a: 'Franklin, Ben', '6': '100', d: '1970-', '4': 'edt' }),
164
+ marc_field(tag: '710', subfields: { a: 'Jefferson, Thomas', '6': '100', d: '1870-', '4': 'edt' }),
165
+ marc_field(tag: '700', subfields: { a: 'Dickens, Charles', '6': '100', d: '1970-', '4': 'com' }),
166
+ marc_field(tag: '880', subfields: { a: '狄更斯', '6': '700', d: '1970-', '4': 'com' }),
167
+ marc_field(tag: '700', subfields: { a: 'Twain, Mark', '6': '100', d: '1870-' })]
168
+ end
169
+
170
+ it 'returns four contributors' do
171
+ values = helper.contributors_list(record, include_authors: false, name_only: false, vernacular: true)
172
+ expect(values).to contain_exactly ['Compiler', ['Dickens, Charles 1970-, Compiler', '狄更斯 1970-, Compiler']],
173
+ ['Contributor', ['Twain, Mark 1870-, Contributor']],
174
+ ['Editor',
175
+ ['Franklin, Ben 1970-, Editor', 'Jefferson, Thomas 1870-, Editor']],
176
+ ['Translator', ['Einstein, Albert 1970-, Translator']]
177
+ end
178
+ end
179
+ end
180
+
98
181
  describe '.show_facet_map' do
99
182
  let(:record) do
100
183
  marc_record fields: [
@@ -302,6 +385,24 @@ describe 'PennMARC::Creator' do
302
385
  end
303
386
  end
304
387
 
388
+ describe '.corporate_search' do
389
+ let(:record) do
390
+ marc_record fields: [
391
+ marc_field(tag: '110', subfields: { a: 'Penn Libraries', b: 'Digital Library Development' }),
392
+ marc_field(tag: '710', subfields: { a: 'Working Group on Digital Repository Infrastructure' }),
393
+ marc_field(tag: '810', subfields: { a: 'Constellation of Repositories Strategic Team' })
394
+ ]
395
+ end
396
+
397
+ it 'returns expected values' do
398
+ expect(helper.corporate_search(record)).to contain_exactly(
399
+ 'Constellation of Repositories Strategic Team',
400
+ 'Penn Libraries Digital Library Development',
401
+ 'Working Group on Digital Repository Infrastructure'
402
+ )
403
+ end
404
+ end
405
+
305
406
  describe '.contributor_show' do
306
407
  let(:record) { marc_record fields: fields }
307
408
 
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Database' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Database }
7
5
  let(:record) do
8
6
  marc_record(fields: [
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Date' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Date }
7
5
  let(:record) { marc_record fields: fields }
8
6
 
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Edition' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Edition }
7
5
  let(:mapping) { { aut: 'Author' } }
8
6
  let(:record) do
@@ -18,6 +16,10 @@ describe 'PennMARC::Edition' do
18
16
  it 'returns the editions' do
19
17
  expect(helper.show(record)).to contain_exactly('5th Edition Remastered', 'رمستر')
20
18
  end
19
+
20
+ it 'returns the editions without alternate' do
21
+ expect(helper.show(record, with_alternate: false)).to contain_exactly('5th Edition Remastered')
22
+ end
21
23
  end
22
24
 
23
25
  describe '.values' do
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Format' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Format }
7
5
 
8
6
  describe '.facet' do
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Genre' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Genre }
7
5
  let(:record) { marc_record fields: fields }
8
6
 
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Identifier' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Identifier }
7
5
 
8
6
  describe '.mmsid' do
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Inventory' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Inventory }
7
5
  let(:record) do
8
6
  marc_record fields: fields
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Language' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Language }
7
5
  let(:iso_639_2_mapping) do
8
6
  { eng: 'English', und: 'Undetermined', fre: 'French', ger: 'German', ulw: 'Ulwa' }
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Link' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Link }
7
5
 
8
6
  describe '.full_text_link' do
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Location' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Location }
7
5
  let(:enriched_marc) { PennMARC::Enriched }
8
6
  let(:mapping) { location_map }
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Note' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Note }
5
+ let(:record) { marc_record(fields: fields) }
7
6
 
8
7
  describe '.notes_show' do
9
- let(:record) { marc_record(fields: fields) }
10
8
  let(:fields) do
11
9
  [
12
10
  marc_field(tag: '500',
@@ -39,7 +37,6 @@ describe 'PennMARC::Note' do
39
37
  end
40
38
 
41
39
  describe '.local_notes_show' do
42
- let(:record) { marc_record(fields: fields) }
43
40
  let(:fields) do
44
41
  [
45
42
  marc_field(tag: '561', subfields: { a: 'Athenaeum copy: ', u: 'No URI' }),
@@ -76,7 +73,6 @@ describe 'PennMARC::Note' do
76
73
  end
77
74
 
78
75
  describe '.provenance_show' do
79
- let(:record) { marc_record(fields: fields) }
80
76
  let(:fields) do
81
77
  [
82
78
  marc_field(tag: '561', subfields: { a: 'Not Athenaeum copy: ', u: 'No URI' }, indicator1: '1', indicator2: ' '),
@@ -99,29 +95,35 @@ describe 'PennMARC::Note' do
99
95
  end
100
96
  end
101
97
 
102
- describe '.contents_show' do
103
- let(:record) { marc_record(fields: fields) }
98
+ describe '.contents_values' do
104
99
  let(:fields) do
105
- [
106
- marc_field(tag: '505', subfields: { a: 'Formatted content notes', g: 'Misc Info', r: 'Responsible Agent',
107
- t: 'A Title', u: 'URI' }),
108
- marc_field(tag: '880', subfields: { a: 'Alt Formatted content notes', g: ' Alt Misc Info',
109
- r: 'Alt Responsible Agent', t: 'Alt Title', u: 'Alt URI', '6': '505' })
110
- ]
100
+ [marc_field(tag: '505', subfields: { a: 'Formatted content notes', g: 'Misc Info', r: 'Responsible Agent',
101
+ t: 'A Title', u: 'URI' }),
102
+ marc_field(tag: '880', subfields: { a: 'Alt Formatted content notes', g: ' Alt Misc Info',
103
+ r: 'Alt Responsible Agent', t: 'Alt Title', u: 'Alt URI', '6': '505' })]
111
104
  end
112
105
 
113
- let(:values) { helper.contents_show(record) }
106
+ context 'with vernacular included' do
107
+ let(:values) { helper.contents_values(record) }
114
108
 
115
- it 'returns expected values from 505 and its linked alternate' do
116
- expect(values).to contain_exactly(
117
- 'Formatted content notes Misc Info Responsible Agent A Title URI',
118
- 'Alt Formatted content notes Alt Misc Info Alt Responsible Agent Alt Title Alt URI'
119
- )
109
+ it 'returns expected values from 505 and its linked alternate' do
110
+ expect(values).to contain_exactly(
111
+ 'Formatted content notes Misc Info Responsible Agent A Title URI',
112
+ 'Alt Formatted content notes Alt Misc Info Alt Responsible Agent Alt Title Alt URI'
113
+ )
114
+ end
115
+ end
116
+
117
+ context 'with vernacular excluded' do
118
+ let(:values) { helper.contents_values(record, with_alternate: false) }
119
+
120
+ it 'returns expected values from 505 but not its linked alternate' do
121
+ expect(values).to contain_exactly('Formatted content notes Misc Info Responsible Agent A Title URI')
122
+ end
120
123
  end
121
124
  end
122
125
 
123
126
  describe '.access_restriction_show' do
124
- let(:record) { marc_record(fields: fields) }
125
127
  let(:fields) do
126
128
  [
127
129
  marc_field(tag: '506', subfields: { a: 'Open to users with valid PennKey', b: 'Donor', c: 'Appointment Only',
@@ -129,7 +131,6 @@ describe 'PennMARC::Note' do
129
131
  g: '20300101', q: 'Van Pelt', u: 'URI', '2': 'star' })
130
132
  ]
131
133
  end
132
-
133
134
  let(:values) { helper.access_restriction_show(record) }
134
135
 
135
136
  it 'returns expected values from 506' do
@@ -141,8 +142,6 @@ describe 'PennMARC::Note' do
141
142
  end
142
143
 
143
144
  describe '.finding_aid_show' do
144
- let(:record) { marc_record(fields: fields) }
145
-
146
145
  let(:fields) do
147
146
  [
148
147
  marc_field(tag: '555', subfields: { a: 'Finding aid', b: 'Source', c: 'Item level control',
@@ -151,7 +150,6 @@ describe 'PennMARC::Note' do
151
150
  d: 'Alt citation', u: 'Alt URI', '3': 'Alt Materials', '6': '555' })
152
151
  ]
153
152
  end
154
-
155
153
  let(:values) { helper.finding_aid_show(record) }
156
154
 
157
155
  it 'returns expected values from 555 and its linked alternate' do
@@ -163,15 +161,12 @@ describe 'PennMARC::Note' do
163
161
  end
164
162
 
165
163
  describe '.participant_show' do
166
- let(:record) { marc_record(fields: fields) }
167
-
168
164
  let(:fields) do
169
165
  [
170
166
  marc_field(tag: '511', subfields: { a: 'Narrator: Some Dev' }),
171
167
  marc_field(tag: '880', subfields: { a: 'Alt Participant', '6': '511' })
172
168
  ]
173
169
  end
174
-
175
170
  let(:values) { helper.participant_show(record) }
176
171
 
177
172
  it 'returns expected values from 511 and its linked alternate' do
@@ -180,8 +175,6 @@ describe 'PennMARC::Note' do
180
175
  end
181
176
 
182
177
  describe '.credits_show' do
183
- let(:record) { marc_record(fields: fields) }
184
-
185
178
  let(:fields) do
186
179
  [
187
180
  marc_field(tag: '508', subfields: { a: 'Music: Some Dev' }),
@@ -1,13 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Production' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Production }
5
+ let(:record) { marc_record fields: fields }
7
6
 
8
7
  describe '.show' do
9
- let(:record) { marc_record fields: fields }
10
-
11
8
  let(:fields) do
12
9
  [
13
10
  marc_field(tag: '264', subfields: { a: 'Marabella, Trinidad, West Indies',
@@ -19,7 +16,6 @@ describe 'PennMARC::Production' do
19
16
  indicator2: '0')
20
17
  ]
21
18
  end
22
-
23
19
  let(:values) { helper.show(record) }
24
20
 
25
21
  it 'returns expected values' do
@@ -31,6 +27,21 @@ describe 'PennMARC::Production' do
31
27
  end
32
28
  end
33
29
 
30
+ describe '.search' do
31
+ let(:fields) do
32
+ [
33
+ marc_field(tag: '260', subfields: { a: 'Marabella, Trinidad, West Indies',
34
+ b: 'Ramjohn Publishing', c: '1999' }, indicator2: '0'),
35
+ marc_field(tag: '264', subfields: { a: 'Leeds', b: 'Peepal Tree Productions', c: '2019' }, indicator2: '0'),
36
+ marc_field(tag: '264', subfields: { a: 'Nowhere', b: 'Wasteland Publishing', c: '1999' }, indicator2: '1')
37
+ ]
38
+ end
39
+
40
+ it 'returns expected values' do
41
+ expect(helper.search(record)).to contain_exactly('Wasteland Publishing', 'Ramjohn Publishing')
42
+ end
43
+ end
44
+
34
45
  describe '.distribution_show' do
35
46
  let(:record) { marc_record fields: fields }
36
47
  let(:fields) do
@@ -57,7 +68,6 @@ describe 'PennMARC::Production' do
57
68
 
58
69
  describe '.manufacture_show' do
59
70
  let(:record) { marc_record fields: fields }
60
-
61
71
  let(:fields) do
62
72
  [
63
73
  marc_field(tag: '264', subfields: { a: 'Marabella, Trinidad, West Indies',
@@ -69,7 +79,6 @@ describe 'PennMARC::Production' do
69
79
  indicator2: '3')
70
80
  ]
71
81
  end
72
-
73
82
  let(:values) { helper.manufacture_show(record) }
74
83
 
75
84
  it 'returns expected values' do
@@ -83,8 +92,6 @@ describe 'PennMARC::Production' do
83
92
 
84
93
  describe '.publication_values' do
85
94
  context 'with date in 245 ǂf' do
86
- let(:record) { marc_record fields: fields }
87
-
88
95
  let(:fields) do
89
96
  [
90
97
  marc_field(tag: '245', subfields: { f: '1869-1941' }),
@@ -93,7 +100,6 @@ describe 'PennMARC::Production' do
93
100
  c: '1920' }, indicator2: '1')
94
101
  ]
95
102
  end
96
-
97
103
  let(:values) { helper.publication_values(record) }
98
104
 
99
105
  it 'returns expected values' do
@@ -103,16 +109,13 @@ describe 'PennMARC::Production' do
103
109
  end
104
110
 
105
111
  context 'with 260, 261, or 262 fields' do
106
- let(:record) { marc_record fields: fields }
107
-
108
112
  let(:fields) do
109
113
  [
110
- marc_field(tag: '260', subfields: { a: ' Burnt Mill, Harlow, Essex, England', b: 'Longman',
114
+ marc_field(tag: '260', subfields: { a: 'Burnt Mill, Harlow, Essex, England', b: 'Longman',
111
115
  c: '1985, c1956.' }),
112
116
  marc_field(tag: '264', subfields: { a: 'Nowhere', b: 'Wasteland Publishers', c: '1999' }, indicator2: '1')
113
117
  ]
114
118
  end
115
-
116
119
  let(:values) { helper.publication_values(record) }
117
120
 
118
121
  it 'returns expected values' do
@@ -121,8 +124,6 @@ describe 'PennMARC::Production' do
121
124
  end
122
125
 
123
126
  context 'without 260, 261, or 262 fields' do
124
- let(:record) { marc_record fields: fields }
125
-
126
127
  let(:fields) do
127
128
  [
128
129
  marc_field(tag: '264', subfields: { a: 'Nowhere', b: 'Wasteland Publishers', c: '1999' }, indicator2: '1'),
@@ -130,7 +131,6 @@ describe 'PennMARC::Production' do
130
131
  marc_field(tag: '264', subfields: { c: ' c2016' }, indicator2: '4')
131
132
  ]
132
133
  end
133
-
134
134
  let(:values) { helper.publication_values(record) }
135
135
 
136
136
  it 'returns publication values from field 264' do
@@ -140,8 +140,6 @@ describe 'PennMARC::Production' do
140
140
  end
141
141
 
142
142
  describe '.publication_show' do
143
- let(:record) { marc_record fields: fields }
144
-
145
143
  let(:fields) do
146
144
  [marc_field(tag: '245', subfields: { f: 'between 1800-1850' }),
147
145
  marc_field(tag: '260', subfields: { a: ' Burnt Mill, Harlow, Essex, England', b: 'Longman',
@@ -154,7 +152,6 @@ describe 'PennMARC::Production' do
154
152
  marc_field(tag: '880', subfields: { a: 'Linked', b: 'Alternate Publishers', c: '880', '6': '264' },
155
153
  indicator2: '1')]
156
154
  end
157
-
158
155
  let(:values) { helper.publication_show(record) }
159
156
 
160
157
  it 'returns expected values' do
@@ -167,9 +164,38 @@ describe 'PennMARC::Production' do
167
164
  end
168
165
  end
169
166
 
170
- describe 'place_of_publication_show' do
167
+ describe '.publication_citation_show' do
171
168
  let(:record) { marc_record fields: fields }
172
169
 
170
+ let(:fields) do
171
+ [marc_field(tag: '245', subfields: { f: 'between 1800-1850' }),
172
+ marc_field(tag: '260', subfields: { a: ' Burnt Mill, Harlow, Essex, England', b: 'Longman',
173
+ c: '1985, c1956.' }),
174
+ marc_field(tag: '264', subfields: { a: 'Leeds', b: 'Peepal Tree Press', c: '2019' }, indicator2: '1'),
175
+ marc_field(tag: '880', subfields: { f: 'Alternate 1800-1850', '6': '245' }),
176
+ marc_field(tag: '880',
177
+ subfields: { a: 'Alternate England', b: 'Alternate Longman', c: 'Alternate 1985, c1956.',
178
+ '6': '260' }),
179
+ marc_field(tag: '880', subfields: { a: 'Linked', b: 'Alternate Publishers', c: '880', '6': '264' },
180
+ indicator2: '1')]
181
+ end
182
+ let(:values) { helper.publication_citation_show(record) }
183
+ let(:values_no_year) { helper.publication_citation_show(record, with_year: false) }
184
+
185
+ it 'returns publication citation values' do
186
+ expect(values).to contain_exactly('between 1800-1850',
187
+ 'Burnt Mill, Harlow, Essex, England Longman 1985, c1956.',
188
+ 'Leeds Peepal Tree Press 2019')
189
+ end
190
+
191
+ it 'returns publication citation values without year' do
192
+ expect(values_no_year).to contain_exactly('between 1800-1850',
193
+ 'Burnt Mill, Harlow, Essex, England Longman',
194
+ 'Leeds Peepal Tree Press')
195
+ end
196
+ end
197
+
198
+ describe 'place_of_publication_show' do
173
199
  let(:fields) do
174
200
  [marc_field(tag: '752', subfields: { a: 'United States', b: 'California', c: 'Los Angeles (County)',
175
201
  d: 'Los Angeles', e: 'publication place', f: 'Little Tokyo',
@@ -180,7 +206,6 @@ describe 'PennMARC::Production' do
180
206
  f: 'Alt Tokyo', g: 'NA',
181
207
  h: 'Alt Earth', '6': '752' })]
182
208
  end
183
-
184
209
  let(:values) { helper.place_of_publication_show(record) }
185
210
 
186
211
  it 'returns expected values' do
@@ -190,4 +215,78 @@ describe 'PennMARC::Production' do
190
215
  )
191
216
  end
192
217
  end
218
+
219
+ describe 'place_of_publication_search' do
220
+ let(:values) { helper.place_of_publication_search(record) }
221
+
222
+ context 'with publication info in the 26x fields' do
223
+ let(:fields) do
224
+ [marc_field(tag: '260', subfields: { a: 'Marabella, Trinidad, West Indies',
225
+ b: 'Ramjohn Publishing', c: '1999' }, indicator2: '0'),
226
+ marc_field(tag: '264', subfields: { a: 'Leeds', b: 'Peepal Tree Productions', c: '2019' }, indicator2: '0'),
227
+ marc_field(tag: '264', subfields: { a: 'Nowhere', b: 'Wasteland Publishing', c: '1983' }, indicator2: '1')]
228
+ end
229
+
230
+ it 'returns expected values' do
231
+ expect(values).to contain_exactly('Marabella, Trinidad, West Indies', 'Nowhere')
232
+ end
233
+ end
234
+
235
+ context 'with publication info in 752' do
236
+ let(:fields) do
237
+ [marc_field(tag: '752', subfields: { a: 'United States', b: 'California', c: 'Los Angeles (County)',
238
+ d: 'Los Angeles', e: 'publication place', f: 'Little Tokyo',
239
+ g: 'North America', h: 'Earth' })]
240
+ end
241
+
242
+ it 'returns expected values' do
243
+ expect(values).to contain_exactly(
244
+ 'United States California Los Angeles (County) Los Angeles Little Tokyo North America Earth'
245
+ )
246
+ end
247
+ end
248
+ end
249
+
250
+ describe 'publication_ris_place_of_pub' do
251
+ let(:record) { marc_record fields: fields }
252
+ let(:fields) do
253
+ [marc_field(tag: '245', subfields: { f: 'between 1800-1850' }),
254
+ marc_field(tag: '260', subfields: { a: ' Burnt Mill, Harlow, Essex, England', b: 'Longman',
255
+ c: '1985, c1956.' }),
256
+ marc_field(tag: '264', subfields: { a: 'Leeds', b: 'Peepal Tree Press', c: '2019' }, indicator2: '1'),
257
+ marc_field(tag: '880', subfields: { f: 'Alternate 1800-1850', '6': '245' }),
258
+ marc_field(tag: '880',
259
+ subfields: { a: 'Alternate England', b: 'Alternate Longman', c: 'Alternate 1985, c1956.',
260
+ '6': '260' }),
261
+ marc_field(tag: '880', subfields: { a: 'Linked', b: 'Alternate Publishers', c: '880', '6': '264' },
262
+ indicator2: '1')]
263
+ end
264
+
265
+ let(:values) { helper.publication_ris_place_of_pub(record) }
266
+
267
+ it 'returns expected values' do
268
+ expect(values).to contain_exactly('between 1800-1850', 'Burnt Mill, Harlow, Essex, England', 'Leeds')
269
+ end
270
+ end
271
+
272
+ describe 'publication_ris_publisher' do
273
+ let(:record) { marc_record fields: fields }
274
+ let(:fields) do
275
+ [marc_field(tag: '245', subfields: { f: 'between 1800-1850' }),
276
+ marc_field(tag: '260', subfields: { a: ' Burnt Mill, Harlow, Essex, England', b: 'Longman',
277
+ c: '1985, c1956.' }),
278
+ marc_field(tag: '264', subfields: { a: 'Leeds', b: 'Peepal Tree Press', c: '2019' }, indicator2: '1'),
279
+ marc_field(tag: '880', subfields: { f: 'Alternate 1800-1850', '6': '245' }),
280
+ marc_field(tag: '880',
281
+ subfields: { a: 'Alternate England', b: 'Alternate Longman', c: 'Alternate 1985, c1956.',
282
+ '6': '260' }),
283
+ marc_field(tag: '880', subfields: { a: 'Linked', b: 'Alternate Publishers', c: '880', '6': '264' },
284
+ indicator2: '1')]
285
+ end
286
+ let(:values) { helper.publication_ris_publisher(record) }
287
+
288
+ it 'returns expected values' do
289
+ expect(values).to contain_exactly('between 1800-1850', 'Longman', 'Peepal Tree Press')
290
+ end
291
+ end
193
292
  end
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Relation' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Relation }
7
5
  let(:record) { marc_record fields: fields }
8
6
  let(:relator_map) { { aut: 'Author', trl: 'Translator' } }
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Series' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Series }
7
5
  let(:mapping) { { aut: 'Author' } }
8
6
  let(:record) do
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Subject' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Subject }
7
5
  let(:relator_map) do
8
6
  { dpc: 'Depicted' }
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'PennMARC::Title' do
4
- include MarcSpecHelpers
5
-
6
4
  let(:helper) { PennMARC::Title }
7
5
 
8
6
  describe '.search' do