briard 2.4.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/codeql-analysis.yml +72 -0
- data/.github/workflows/rubocop.yml +50 -0
- data/.rubocop.yml +144 -620
- data/.rubocop_todo.yml +76 -0
- data/CHANGELOG.md +22 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +43 -6
- data/Rakefile +1 -1
- data/{bolognese.gemspec → briard.gemspec} +46 -38
- data/lib/briard/array.rb +2 -2
- data/lib/briard/author_utils.rb +79 -71
- data/lib/briard/cli.rb +12 -13
- data/lib/briard/crossref_utils.rb +73 -61
- data/lib/briard/datacite_utils.rb +132 -106
- data/lib/briard/doi_utils.rb +10 -10
- data/lib/briard/metadata.rb +96 -106
- data/lib/briard/metadata_utils.rb +87 -78
- data/lib/briard/readers/bibtex_reader.rb +65 -65
- data/lib/briard/readers/cff_reader.rb +88 -70
- data/lib/briard/readers/citeproc_reader.rb +90 -84
- data/lib/briard/readers/codemeta_reader.rb +68 -50
- data/lib/briard/readers/crosscite_reader.rb +2 -2
- data/lib/briard/readers/crossref_reader.rb +249 -210
- data/lib/briard/readers/datacite_json_reader.rb +3 -3
- data/lib/briard/readers/datacite_reader.rb +225 -189
- data/lib/briard/readers/npm_reader.rb +49 -42
- data/lib/briard/readers/ris_reader.rb +82 -80
- data/lib/briard/readers/schema_org_reader.rb +182 -159
- data/lib/briard/string.rb +1 -1
- data/lib/briard/utils.rb +4 -4
- data/lib/briard/version.rb +3 -1
- data/lib/briard/whitelist_scrubber.rb +11 -4
- data/lib/briard/writers/bibtex_writer.rb +14 -8
- data/lib/briard/writers/cff_writer.rb +33 -26
- data/lib/briard/writers/codemeta_writer.rb +19 -15
- data/lib/briard/writers/csv_writer.rb +6 -4
- data/lib/briard/writers/datacite_json_writer.rb +8 -2
- data/lib/briard/writers/jats_writer.rb +33 -28
- data/lib/briard/writers/rdf_xml_writer.rb +1 -1
- data/lib/briard/writers/ris_writer.rb +30 -18
- data/lib/briard/writers/turtle_writer.rb +1 -1
- data/lib/briard.rb +6 -6
- data/rubocop.sarif +0 -0
- data/spec/array_spec.rb +5 -5
- data/spec/author_utils_spec.rb +151 -132
- data/spec/datacite_utils_spec.rb +135 -83
- data/spec/doi_utils_spec.rb +168 -164
- data/spec/find_from_format_spec.rb +69 -69
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/onlies_keep_specific_tags.yml +65 -0
- data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/removes_a_tags.yml +65 -0
- data/spec/metadata_spec.rb +91 -90
- data/spec/readers/bibtex_reader_spec.rb +43 -38
- data/spec/readers/cff_reader_spec.rb +165 -153
- data/spec/readers/citeproc_reader_spec.rb +45 -40
- data/spec/readers/codemeta_reader_spec.rb +128 -115
- data/spec/readers/crosscite_reader_spec.rb +34 -24
- data/spec/readers/crossref_reader_spec.rb +1098 -939
- data/spec/readers/datacite_json_reader_spec.rb +53 -40
- data/spec/readers/datacite_reader_spec.rb +1541 -1337
- data/spec/readers/npm_reader_spec.rb +48 -43
- data/spec/readers/ris_reader_spec.rb +53 -47
- data/spec/readers/schema_org_reader_spec.rb +329 -267
- data/spec/spec_helper.rb +6 -5
- data/spec/utils_spec.rb +371 -347
- data/spec/writers/bibtex_writer_spec.rb +143 -143
- data/spec/writers/cff_writer_spec.rb +96 -90
- data/spec/writers/citation_writer_spec.rb +34 -33
- data/spec/writers/citeproc_writer_spec.rb +226 -224
- data/spec/writers/codemeta_writer_spec.rb +18 -16
- data/spec/writers/crosscite_writer_spec.rb +91 -73
- data/spec/writers/crossref_writer_spec.rb +99 -91
- data/spec/writers/csv_writer_spec.rb +70 -70
- data/spec/writers/datacite_json_writer_spec.rb +78 -68
- data/spec/writers/datacite_writer_spec.rb +417 -322
- data/spec/writers/jats_writer_spec.rb +177 -161
- data/spec/writers/rdf_xml_writer_spec.rb +68 -63
- data/spec/writers/ris_writer_spec.rb +162 -162
- data/spec/writers/turtle_writer_spec.rb +47 -47
- metadata +250 -160
- data/.github/workflows/release.yml +0 -47
@@ -3,1115 +3,1274 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Briard::Metadata, vcr: true do
|
6
|
-
|
6
|
+
subject { described_class.new(input: input) }
|
7
7
|
|
8
|
-
|
8
|
+
let(:input) { '10.7554/eLife.01567' }
|
9
9
|
|
10
|
-
context
|
11
|
-
it
|
12
|
-
input = fixture_path
|
13
|
-
subject =
|
14
|
-
expect(subject.raw).to eq(
|
10
|
+
context 'get crossref raw' do
|
11
|
+
it 'journal article' do
|
12
|
+
input = "#{fixture_path}crossref.xml"
|
13
|
+
subject = described_class.new(input: input)
|
14
|
+
expect(subject.raw).to eq(File.read(input).strip)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
context
|
19
|
-
it
|
18
|
+
context 'get crossref metadata' do
|
19
|
+
it 'DOI with data citation' do
|
20
20
|
expect(subject.valid?).to be true
|
21
|
-
expect(subject.id).to eq(
|
22
|
-
expect(subject.identifiers).to eq([{
|
23
|
-
|
24
|
-
expect(subject.
|
21
|
+
expect(subject.id).to eq('https://doi.org/10.7554/elife.01567')
|
22
|
+
expect(subject.identifiers).to eq([{ 'identifier' => 'e01567',
|
23
|
+
'identifierType' => 'article_number' }])
|
24
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
25
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
26
|
+
expect(subject.url).to eq('https://elifesciences.org/articles/01567')
|
25
27
|
expect(subject.creators.length).to eq(5)
|
26
|
-
expect(subject.creators.first).to eq(
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
expect(subject.
|
34
|
-
expect(subject.
|
35
|
-
|
36
|
-
expect(subject.
|
28
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Sankar, Martial',
|
29
|
+
'givenName' => 'Martial', 'familyName' => 'Sankar', 'affiliation' => [{ 'name' => 'Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland' }])
|
30
|
+
expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 3.0 Unported',
|
31
|
+
'rightsIdentifier' => 'cc-by-3.0',
|
32
|
+
'rightsIdentifierScheme' => 'SPDX',
|
33
|
+
'rightsUri' => 'https://creativecommons.org/licenses/by/3.0/legalcode',
|
34
|
+
'schemeUri' => 'https://spdx.org/licenses/' }])
|
35
|
+
expect(subject.titles).to eq([{ 'title' => 'Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth' }])
|
36
|
+
expect(subject.dates).to eq([{ 'date' => '2014-02-11', 'dateType' => 'Issued' },
|
37
|
+
{ 'date' => '2022-03-26T09:21:50Z', 'dateType' => 'Updated' }])
|
38
|
+
expect(subject.publication_year).to eq('2014')
|
39
|
+
expect(subject.publisher).to eq('eLife Sciences Publications, Ltd')
|
40
|
+
expect(subject.container).to eq('firstPage' => 'e01567', 'identifier' => '2050-084X',
|
41
|
+
'identifierType' => 'ISSN', 'title' => 'eLife', 'type' => 'Journal', 'volume' => '3')
|
37
42
|
expect(subject.related_identifiers.length).to eq(28)
|
38
|
-
expect(subject.related_identifiers.first).to eq(
|
39
|
-
|
40
|
-
expect(subject.
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
43
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '2050-084X',
|
44
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
45
|
+
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1038/ncb2764',
|
46
|
+
'relatedIdentifierType' => 'DOI', 'relationType' => 'References')
|
47
|
+
expect(subject.funding_references).to eq([{ 'funderName' => 'SystemsX' },
|
48
|
+
{ 'funderIdentifier' => 'https://doi.org/10.13039/501100003043',
|
49
|
+
'funderIdentifierType' => 'Crossref Funder ID',
|
50
|
+
'funderName' => 'EMBO' },
|
51
|
+
{ 'funderIdentifier' => 'https://doi.org/10.13039/501100001711',
|
52
|
+
'funderIdentifierType' => 'Crossref Funder ID',
|
53
|
+
'funderName' => 'Swiss National Science Foundation' },
|
54
|
+
{ 'funderIdentifier' => 'https://doi.org/10.13039/501100006390',
|
55
|
+
'funderIdentifierType' => 'Crossref Funder ID',
|
56
|
+
'funderName' => 'University of Lausanne' }])
|
57
|
+
expect(subject.agency).to eq('crossref')
|
51
58
|
end
|
52
59
|
|
53
|
-
it
|
54
|
-
input =
|
55
|
-
subject =
|
60
|
+
it 'journal article' do
|
61
|
+
input = 'https://doi.org/10.1371/journal.pone.0000030'
|
62
|
+
subject = described_class.new(input: input)
|
56
63
|
expect(subject.valid?).to be true
|
57
|
-
expect(subject.id).to eq(
|
58
|
-
expect(subject.identifiers).to eq([{
|
59
|
-
|
60
|
-
expect(subject.
|
64
|
+
expect(subject.id).to eq('https://doi.org/10.1371/journal.pone.0000030')
|
65
|
+
expect(subject.identifiers).to eq([{ 'identifier' => '10.1371/journal.pone.0000030',
|
66
|
+
'identifierType' => 'Publisher ID' }])
|
67
|
+
expect(subject.url).to eq('https://dx.plos.org/10.1371/journal.pone.0000030')
|
68
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
69
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
61
70
|
expect(subject.creators.length).to eq(5)
|
62
|
-
expect(subject.creators.first).to eq(
|
63
|
-
|
64
|
-
expect(subject.
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
expect(subject.
|
71
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Ralser, Markus',
|
72
|
+
'givenName' => 'Markus', 'familyName' => 'Ralser')
|
73
|
+
expect(subject.contributors).to eq([{ 'contributorType' => 'Editor', 'familyName' => 'Janbon',
|
74
|
+
'givenName' => 'Guilhem', 'name' => 'Janbon, Guilhem', 'nameType' => 'Personal' }])
|
75
|
+
expect(subject.titles).to eq([{ 'title' => 'Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization???Not Catalytic Inactivity???of the Mutant Enzymes' }])
|
76
|
+
expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 4.0 International',
|
77
|
+
'rightsIdentifier' => 'cc-by-4.0',
|
78
|
+
'rightsIdentifierScheme' => 'SPDX',
|
79
|
+
'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode',
|
80
|
+
'schemeUri' => 'https://spdx.org/licenses/' }])
|
81
|
+
expect(subject.dates).to eq([{ 'date' => '2006-12-20', 'dateType' => 'Issued' },
|
82
|
+
{ 'date' => '2021-08-06T23:49:55Z', 'dateType' => 'Updated' }])
|
83
|
+
expect(subject.publication_year).to eq('2006')
|
84
|
+
expect(subject.publisher).to eq('Public Library of Science (PLoS)')
|
73
85
|
expect(subject.related_identifiers.length).to eq(68)
|
74
|
-
expect(subject.related_identifiers.first).to eq(
|
75
|
-
|
76
|
-
expect(subject.
|
77
|
-
|
86
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1932-6203',
|
87
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
88
|
+
expect(subject.related_identifiers.last).to eq(
|
89
|
+
'relatedIdentifier' => '10.1056/nejm199109123251104', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References'
|
90
|
+
)
|
91
|
+
expect(subject.container).to eq('firstPage' => 'e30', 'identifier' => '1932-6203',
|
92
|
+
'identifierType' => 'ISSN', 'issue' => '1', 'title' => 'PLoS ONE', 'type' => 'Journal', 'volume' => '1')
|
93
|
+
expect(subject.agency).to eq('crossref')
|
78
94
|
end
|
79
95
|
|
80
|
-
it
|
81
|
-
input =
|
82
|
-
subject =
|
96
|
+
it 'journal article with funding' do
|
97
|
+
input = 'https://doi.org/10.3389/fpls.2019.00816'
|
98
|
+
subject = described_class.new(input: input)
|
83
99
|
expect(subject.valid?).to be true
|
84
|
-
expect(subject.id).to eq(
|
85
|
-
expect(subject.identifiers).to eq([{
|
86
|
-
|
87
|
-
expect(subject.
|
100
|
+
expect(subject.id).to eq('https://doi.org/10.3389/fpls.2019.00816')
|
101
|
+
expect(subject.identifiers).to eq([{ 'identifier' => '816',
|
102
|
+
'identifierType' => 'article_number' }])
|
103
|
+
expect(subject.url).to eq('https://www.frontiersin.org/article/10.3389/fpls.2019.00816/full')
|
104
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
105
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
88
106
|
expect(subject.creators.length).to eq(4)
|
89
|
-
expect(subject.creators.first).to eq(
|
90
|
-
|
91
|
-
expect(subject.
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
expect(subject.
|
98
|
-
|
99
|
-
expect(subject.
|
107
|
+
expect(subject.creators.first).to eq('familyName' => 'Fortes', 'givenName' => 'Ana Margarida',
|
108
|
+
'name' => 'Fortes, Ana Margarida', 'nameType' => 'Personal')
|
109
|
+
expect(subject.titles).to eq([{ 'title' => 'Transcriptional Modulation of Polyamine Metabolism in Fruit Species Under Abiotic and Biotic Stress' }])
|
110
|
+
expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 4.0 International',
|
111
|
+
'rightsIdentifier' => 'cc-by-4.0',
|
112
|
+
'rightsIdentifierScheme' => 'SPDX',
|
113
|
+
'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode',
|
114
|
+
'schemeUri' => 'https://spdx.org/licenses/' }])
|
115
|
+
expect(subject.dates).to eq([{ 'date' => '2019-07-02', 'dateType' => 'Issued' },
|
116
|
+
{ 'date' => '2019-09-22T02:40:23Z', 'dateType' => 'Updated' }])
|
117
|
+
expect(subject.publication_year).to eq('2019')
|
118
|
+
expect(subject.publisher).to eq('Frontiers Media SA')
|
119
|
+
expect(subject.funding_references).to eq([{ 'awardNumber' => 'CA17111',
|
120
|
+
'funderIdentifier' => 'https://doi.org/10.13039/501100000921', 'funderIdentifierType' => 'Crossref Funder ID', 'funderName' => 'COST (European Cooperation in Science and Technology)' }])
|
100
121
|
expect(subject.related_identifiers.length).to eq(70)
|
101
|
-
expect(subject.related_identifiers.first).to eq(
|
102
|
-
|
103
|
-
expect(subject.
|
104
|
-
|
122
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1664-462X',
|
123
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
124
|
+
expect(subject.related_identifiers.last).to eq(
|
125
|
+
'relatedIdentifier' => '10.17660/actahortic.2004.632.41', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References'
|
126
|
+
)
|
127
|
+
expect(subject.container).to eq('firstPage' => '816', 'identifier' => '1664-462X',
|
128
|
+
'identifierType' => 'ISSN', 'title' => 'Frontiers in Plant Science', 'type' => 'Journal', 'volume' => '10')
|
129
|
+
expect(subject.agency).to eq('crossref')
|
105
130
|
end
|
106
131
|
|
107
|
-
it
|
108
|
-
input =
|
109
|
-
subject =
|
132
|
+
it 'journal article original language title' do
|
133
|
+
input = 'https://doi.org/10.7600/jspfsm.56.60'
|
134
|
+
subject = described_class.new(input: input)
|
110
135
|
expect(subject.valid?).to be true
|
111
|
-
expect(subject.id).to eq(
|
112
|
-
expect(subject.url).to eq(
|
113
|
-
expect(subject.types).to eq(
|
114
|
-
|
115
|
-
expect(subject.
|
116
|
-
expect(subject.
|
117
|
-
|
118
|
-
expect(subject.
|
136
|
+
expect(subject.id).to eq('https://doi.org/10.7600/jspfsm.56.60')
|
137
|
+
expect(subject.url).to eq('https://www.jstage.jst.go.jp/article/jspfsm/56/1/56_1_60/_article/-char/ja/')
|
138
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
139
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
140
|
+
expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }])
|
141
|
+
expect(subject.titles).to eq([{ 'lang' => 'ja',
|
142
|
+
'title' => '??????????????????????????????' }])
|
143
|
+
expect(subject.dates).to include({ 'date' => '2007', 'dateType' => 'Issued' })
|
144
|
+
expect(subject.publication_year).to eq('2007')
|
145
|
+
expect(subject.publisher).to eq('The Japanese Society of Physical Fitness and Sports Medicine')
|
119
146
|
expect(subject.related_identifiers.length).to eq(8)
|
120
|
-
expect(subject.related_identifiers.first).to eq(
|
121
|
-
|
122
|
-
expect(subject.
|
147
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1881-4751',
|
148
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
149
|
+
expect(subject.container).to eq('firstPage' => '60', 'identifier' => '1881-4751',
|
150
|
+
'identifierType' => 'ISSN', 'issue' => '1', 'lastPage' => '60', 'title' => 'Japanese Journal of Physical Fitness and Sports Medicine', 'type' => 'Journal', 'volume' => '56')
|
151
|
+
expect(subject.agency).to eq('crossref')
|
123
152
|
end
|
124
153
|
|
125
|
-
it
|
126
|
-
input =
|
127
|
-
subject =
|
154
|
+
it 'journal article with RDF for container' do
|
155
|
+
input = 'https://doi.org/10.1163/1937240X-00002096'
|
156
|
+
subject = described_class.new(input: input)
|
128
157
|
expect(subject.valid?).to be true
|
129
|
-
expect(subject.id).to eq(
|
130
|
-
expect(subject.url).to eq(
|
131
|
-
expect(subject.types).to eq(
|
158
|
+
expect(subject.id).to eq('https://doi.org/10.1163/1937240x-00002096')
|
159
|
+
expect(subject.url).to eq('https://academic.oup.com/jcb/article-lookup/doi/10.1163/1937240X-00002096')
|
160
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
161
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
132
162
|
expect(subject.creators.length).to eq(8)
|
133
|
-
expect(subject.creators.first).to eq(
|
134
|
-
|
135
|
-
expect(subject.
|
136
|
-
expect(subject.
|
137
|
-
expect(subject.
|
163
|
+
expect(subject.creators.first).to eq('familyName' => 'Mesquita-Joanes',
|
164
|
+
'givenName' => 'Francesc', 'name' => 'Mesquita-Joanes, Francesc', 'nameType' => 'Personal')
|
165
|
+
expect(subject.titles).to eq([{ 'title' => 'Global distribution of Fabaeformiscandona subacuta: an??exotic??invasive Ostracoda on the Iberian Peninsula?' }])
|
166
|
+
expect(subject.dates).to include({ 'date' => '2012-01-01', 'dateType' => 'Issued' })
|
167
|
+
expect(subject.publication_year).to eq('2012')
|
168
|
+
expect(subject.publisher).to eq('Oxford University Press (OUP)')
|
138
169
|
expect(subject.related_identifiers.length).to eq(44)
|
139
|
-
expect(subject.related_identifiers.first).to eq(
|
140
|
-
|
141
|
-
expect(subject.
|
142
|
-
|
170
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1937-240X',
|
171
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
172
|
+
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1002/aqc.1122',
|
173
|
+
'relatedIdentifierType' => 'DOI', 'relationType' => 'References')
|
174
|
+
expect(subject.container).to eq('firstPage' => '949', 'identifier' => '1937-240X',
|
175
|
+
'identifierType' => 'ISSN', 'issue' => '6', 'lastPage' => '961', 'title' => 'Journal of Crustacean Biology', 'type' => 'Journal', 'volume' => '32')
|
176
|
+
expect(subject.agency).to eq('crossref')
|
143
177
|
end
|
144
178
|
|
145
|
-
it
|
146
|
-
input =
|
147
|
-
subject =
|
179
|
+
it 'book chapter with RDF for container' do
|
180
|
+
input = '10.1007/978-3-642-33191-6_49'
|
181
|
+
subject = described_class.new(input: input)
|
148
182
|
expect(subject.valid?).to be true
|
149
|
-
expect(subject.id).to eq(
|
150
|
-
expect(subject.url).to eq(
|
151
|
-
expect(subject.types).to eq(
|
183
|
+
expect(subject.id).to eq('https://doi.org/10.1007/978-3-642-33191-6_49')
|
184
|
+
expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-642-33191-6_49')
|
185
|
+
expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter',
|
186
|
+
'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter')
|
152
187
|
expect(subject.creators.length).to eq(3)
|
153
|
-
expect(subject.creators.first).to eq(
|
154
|
-
|
155
|
-
expect(subject.
|
156
|
-
expect(subject.
|
157
|
-
|
188
|
+
expect(subject.creators.first).to eq('familyName' => 'Chen', 'givenName' => 'Lili',
|
189
|
+
'name' => 'Chen, Lili', 'nameType' => 'Personal')
|
190
|
+
expect(subject.titles).to eq([{ 'title' => 'Human Body Orientation Estimation in Multiview Scenarios' }])
|
191
|
+
expect(subject.dates).to eq([{ 'date' => '2012', 'dateType' => 'Issued' },
|
192
|
+
{ 'date' => '2020-11-24T03:11:32Z', 'dateType' => 'Updated' }])
|
193
|
+
expect(subject.publication_year).to eq('2012')
|
194
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
158
195
|
expect(subject.related_identifiers.length).to eq(7)
|
159
|
-
expect(subject.related_identifiers.first).to eq(
|
160
|
-
|
161
|
-
|
196
|
+
expect(subject.related_identifiers.first).to eq(
|
197
|
+
'relatedIdentifier' => '10.1007/978-3-540-24670-1_3', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References'
|
198
|
+
)
|
199
|
+
expect(subject.container).to eq('identifier' => '1611-3349', 'identifierType' => 'ISSN',
|
200
|
+
'title' => 'Lecture Notes in Computer Science', 'type' => 'Book Series')
|
201
|
+
expect(subject.agency).to eq('crossref')
|
162
202
|
end
|
163
203
|
|
164
|
-
it
|
165
|
-
input =
|
166
|
-
subject =
|
204
|
+
it 'posted_content' do
|
205
|
+
input = 'https://doi.org/10.1101/097196'
|
206
|
+
subject = described_class.new(input: input)
|
167
207
|
expect(subject.valid?).to be true
|
168
|
-
expect(subject.url).to eq(
|
169
|
-
expect(subject.types).to eq(
|
208
|
+
expect(subject.url).to eq('http://biorxiv.org/lookup/doi/10.1101/097196')
|
209
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
210
|
+
'resourceType' => 'PostedContent', 'resourceTypeGeneral' => 'Preprint', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
170
211
|
expect(subject.creators.count).to eq(11)
|
171
|
-
expect(subject.creators.last).to eq(
|
172
|
-
|
173
|
-
expect(subject.
|
174
|
-
expect(subject.
|
175
|
-
expect(subject.
|
176
|
-
|
177
|
-
expect(subject.
|
178
|
-
expect(subject.
|
179
|
-
expect(subject.
|
212
|
+
expect(subject.creators.last).to eq('nameType' => 'Personal',
|
213
|
+
'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-4060-7360', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Clark, Timothy', 'givenName' => 'Timothy', 'familyName' => 'Clark')
|
214
|
+
expect(subject.titles).to eq([{ 'title' => 'A Data Citation Roadmap for Scholarly Data Repositories' }])
|
215
|
+
expect(subject.id).to eq('https://doi.org/10.1101/097196')
|
216
|
+
expect(subject.identifiers).to eq([{ 'identifier' => 'biorxiv;097196v2',
|
217
|
+
'identifierType' => 'pisa' }])
|
218
|
+
expect(subject.descriptions.first['description']).to start_with('This article presents a practical roadmap')
|
219
|
+
expect(subject.dates).to include({ 'date' => '2017-10-09', 'dateType' => 'Issued' })
|
220
|
+
expect(subject.publication_year).to eq('2017')
|
221
|
+
expect(subject.publisher).to eq('Cold Spring Harbor Laboratory')
|
222
|
+
expect(subject.agency).to eq('crossref')
|
180
223
|
end
|
181
224
|
|
182
|
-
it
|
183
|
-
input =
|
184
|
-
subject =
|
225
|
+
it 'peer review' do
|
226
|
+
input = 'https://doi.org/10.7554/elife.55167.sa2'
|
227
|
+
subject = described_class.new(input: input)
|
185
228
|
expect(subject.valid?).to be true
|
186
|
-
expect(subject.url).to eq(
|
187
|
-
expect(subject.types).to eq(
|
229
|
+
expect(subject.url).to eq('https://elifesciences.org/articles/55167#sa2')
|
230
|
+
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal',
|
231
|
+
'resourceType' => 'PeerReview', 'resourceTypeGeneral' => 'PeerReview', 'ris' => 'JOUR', 'schemaOrg' => 'Review')
|
188
232
|
expect(subject.creators.count).to eq(8)
|
189
|
-
expect(subject.creators.last).to eq(
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
expect(subject.titles).to eq([{
|
195
|
-
expect(subject.id).to eq(
|
196
|
-
expect(subject.identifiers).to
|
197
|
-
expect(subject.descriptions).to
|
198
|
-
expect(subject.dates).to include({
|
199
|
-
expect(subject.publication_year).to eq(
|
200
|
-
expect(subject.publisher).to eq(
|
201
|
-
expect(subject.agency).to eq(
|
233
|
+
expect(subject.creators.last).to eq('affiliation' => [{ 'name' => 'Center for Computational Mathematics, Flatiron Institute, New York, United States' }],
|
234
|
+
'familyName' => 'Barnett',
|
235
|
+
'givenName' => 'Alex H',
|
236
|
+
'name' => 'Barnett, Alex H',
|
237
|
+
'nameType' => 'Personal')
|
238
|
+
expect(subject.titles).to eq([{ 'title' => 'Author response: SpikeForest, reproducible web-facing ground-truth validation of automated neural spike sorters' }])
|
239
|
+
expect(subject.id).to eq('https://doi.org/10.7554/elife.55167.sa2')
|
240
|
+
expect(subject.identifiers.empty?).to be(true)
|
241
|
+
expect(subject.descriptions.empty?).to be(true)
|
242
|
+
expect(subject.dates).to include({ 'date' => '2020-05-19', 'dateType' => 'Issued' })
|
243
|
+
expect(subject.publication_year).to eq('2020')
|
244
|
+
expect(subject.publisher).to eq('eLife Sciences Publications, Ltd')
|
245
|
+
expect(subject.agency).to eq('crossref')
|
202
246
|
end
|
203
247
|
|
204
|
-
it
|
205
|
-
input =
|
206
|
-
subject =
|
248
|
+
it 'dissertation' do
|
249
|
+
input = 'https://doi.org/10.14264/uql.2020.791'
|
250
|
+
subject = described_class.new(input: input)
|
207
251
|
expect(subject.valid?).to be true
|
208
|
-
expect(subject.url).to eq(
|
209
|
-
expect(subject.types).to eq(
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
expect(subject.
|
220
|
-
expect(subject.
|
221
|
-
expect(subject.
|
222
|
-
expect(subject.
|
223
|
-
expect(subject.
|
224
|
-
expect(subject.
|
225
|
-
expect(subject.
|
252
|
+
expect(subject.url).to eq('http://espace.library.uq.edu.au/view/UQ:23a1e74')
|
253
|
+
expect(subject.types).to eq('bibtex' => 'phdthesis', 'citeproc' => 'thesis',
|
254
|
+
'resourceType' => 'Dissertation', 'resourceTypeGeneral' => 'Dissertation', 'ris' => 'THES', 'schemaOrg' => 'Thesis')
|
255
|
+
expect(subject.creators).to eq([{ 'familyName' => 'Collingwood',
|
256
|
+
'givenName' => 'Patricia Maree',
|
257
|
+
'name' => 'Collingwood, Patricia Maree',
|
258
|
+
'nameIdentifiers' =>
|
259
|
+
[{ 'nameIdentifier' => 'https://orcid.org/0000-0003-3086-4443',
|
260
|
+
'nameIdentifierScheme' => 'ORCID',
|
261
|
+
'schemeUri' => 'https://orcid.org' }],
|
262
|
+
'nameType' => 'Personal' }])
|
263
|
+
expect(subject.titles).to eq([{ 'title' => 'School truancy and financial independence during emerging adulthood: a longitudinal analysis of receipt of and reliance on cash transfers' }])
|
264
|
+
expect(subject.id).to eq('https://doi.org/10.14264/uql.2020.791')
|
265
|
+
expect(subject.identifiers.empty?).to be(true)
|
266
|
+
expect(subject.descriptions.empty?).to be(true)
|
267
|
+
expect(subject.dates).to include({ 'date' => '2020-06-08', 'dateType' => 'Issued' })
|
268
|
+
expect(subject.publication_year).to eq('2020')
|
269
|
+
expect(subject.publisher).to eq('University of Queensland Library')
|
270
|
+
expect(subject.agency).to eq('crossref')
|
226
271
|
end
|
227
272
|
|
228
|
-
it
|
229
|
-
input =
|
230
|
-
subject =
|
273
|
+
it 'DOI with SICI DOI' do
|
274
|
+
input = 'https://doi.org/10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2'
|
275
|
+
subject = described_class.new(input: input)
|
231
276
|
expect(subject.valid?).to be true
|
232
|
-
expect(subject.id).to eq(
|
233
|
-
expect(subject.url).to eq(
|
234
|
-
expect(subject.types).to eq(
|
235
|
-
|
236
|
-
expect(subject.
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
expect(subject.
|
277
|
+
expect(subject.id).to eq('https://doi.org/10.1890/0012-9658(2006)87%255b2832:tiopma%255d2.0.co;2')
|
278
|
+
expect(subject.url).to eq('http://doi.wiley.com/10.1890/0012-9658(2006)87[2832:TIOPMA]2.0.CO;2')
|
279
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
280
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
281
|
+
expect(subject.creators).to eq([
|
282
|
+
{ 'nameType' => 'Personal', 'name' => 'Fenton, A.', 'givenName' => 'A.',
|
283
|
+
'familyName' => 'Fenton' }, { 'nameType' => 'Personal', 'name' => 'Rands, S. A.', 'givenName' => 'S. A.', 'familyName' => 'Rands' }
|
284
|
+
])
|
285
|
+
expect(subject.rights_list).to eq([{ 'rightsUri' => 'http://doi.wiley.com/10.1002/tdm_license_1.1' }])
|
286
|
+
expect(subject.titles).to eq([{ 'title' => 'THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR???PREY COMMUNITIES' }])
|
287
|
+
expect(subject.dates).to eq([{ 'date' => '2006-11', 'dateType' => 'Issued' },
|
288
|
+
{ 'date' => '2019-04-28T13:51:50Z', 'dateType' => 'Updated' }])
|
289
|
+
expect(subject.publication_year).to eq('2006')
|
290
|
+
expect(subject.publisher).to eq('Wiley')
|
241
291
|
expect(subject.related_identifiers.length).to eq(35)
|
242
|
-
expect(subject.related_identifiers.first).to eq(
|
243
|
-
|
244
|
-
expect(subject.
|
245
|
-
|
292
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '0012-9658',
|
293
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
294
|
+
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1098/rspb.2002.2213',
|
295
|
+
'relatedIdentifierType' => 'DOI', 'relationType' => 'References')
|
296
|
+
expect(subject.container).to eq('firstPage' => '2832', 'identifier' => '0012-9658',
|
297
|
+
'identifierType' => 'ISSN', 'issue' => '11', 'lastPage' => '2841', 'title' => 'Ecology', 'type' => 'Journal', 'volume' => '87')
|
298
|
+
expect(subject.agency).to eq('crossref')
|
246
299
|
end
|
247
300
|
|
248
|
-
it
|
249
|
-
input =
|
250
|
-
subject =
|
301
|
+
it 'DOI with ORCID ID' do
|
302
|
+
input = 'https://doi.org/10.1155/2012/291294'
|
303
|
+
subject = described_class.new(input: input)
|
251
304
|
expect(subject.valid?).to be true
|
252
|
-
expect(subject.id).to eq(
|
253
|
-
expect(subject.url).to eq(
|
254
|
-
expect(subject.types).to eq(
|
305
|
+
expect(subject.id).to eq('https://doi.org/10.1155/2012/291294')
|
306
|
+
expect(subject.url).to eq('http://www.hindawi.com/journals/pm/2012/291294/')
|
307
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
308
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
255
309
|
expect(subject.creators.length).to eq(7)
|
256
|
-
expect(subject.creators[2]).to eq(
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
expect(subject.
|
264
|
-
expect(subject.
|
265
|
-
expect(subject.
|
310
|
+
expect(subject.creators[2]).to eq('nameType' => 'Personal',
|
311
|
+
'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-2043-4925', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Hernandez, Beatriz', 'givenName' => 'Beatriz', 'familyName' => 'Hernandez', 'affiliation' => [{ 'name' => 'War Related Illness and Injury Study Center (WRIISC) and Mental Illness Research Education and Clinical Center (MIRECC), Department of Veterans Affairs, Palo Alto, CA 94304, USA' }, { 'name' => 'Department of Psychiatry and Behavioral Sciences, Stanford University School of Medicine, Stanford, CA 94304, USA' }])
|
312
|
+
expect(subject.rights_list).to eq([{ 'rights' => 'Creative Commons Attribution 3.0 Unported',
|
313
|
+
'rightsIdentifier' => 'cc-by-3.0',
|
314
|
+
'rightsIdentifierScheme' => 'SPDX',
|
315
|
+
'rightsUri' => 'https://creativecommons.org/licenses/by/3.0/legalcode',
|
316
|
+
'schemeUri' => 'https://spdx.org/licenses/' }])
|
317
|
+
expect(subject.titles).to eq([{ 'title' => 'Delineating a Retesting Zone Using Receiver Operating Characteristic Analysis on Serial QuantiFERON Tuberculosis Test Results in US Healthcare Workers' }])
|
318
|
+
expect(subject.dates).to include({ 'date' => '2012', 'dateType' => 'Issued' })
|
319
|
+
expect(subject.publication_year).to eq('2012')
|
320
|
+
expect(subject.publisher).to eq('Hindawi Limited')
|
266
321
|
expect(subject.related_identifiers.length).to eq(18)
|
267
|
-
expect(subject.related_identifiers.first).to eq(
|
268
|
-
|
269
|
-
expect(subject.
|
270
|
-
|
322
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '2090-1844',
|
323
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
324
|
+
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1378/chest.12-0045',
|
325
|
+
'relatedIdentifierType' => 'DOI', 'relationType' => 'References')
|
326
|
+
expect(subject.container).to eq('firstPage' => '1', 'identifier' => '2090-1844',
|
327
|
+
'identifierType' => 'ISSN', 'lastPage' => '7', 'title' => 'Pulmonary Medicine', 'type' => 'Journal', 'volume' => '2012')
|
328
|
+
expect(subject.agency).to eq('crossref')
|
271
329
|
end
|
272
330
|
|
273
|
-
it
|
274
|
-
input =
|
275
|
-
subject =
|
331
|
+
it 'date in future' do
|
332
|
+
input = 'https://doi.org/10.1016/j.ejphar.2015.03.018'
|
333
|
+
subject = described_class.new(input: input)
|
276
334
|
expect(subject.valid?).to be true
|
277
|
-
expect(subject.id).to eq(
|
278
|
-
expect(subject.identifiers).to eq([{
|
279
|
-
|
280
|
-
expect(subject.
|
335
|
+
expect(subject.id).to eq('https://doi.org/10.1016/j.ejphar.2015.03.018')
|
336
|
+
expect(subject.identifiers).to eq([{ 'identifier' => 'S0014299915002332',
|
337
|
+
'identifierType' => 'sequence-number' }])
|
338
|
+
expect(subject.url).to eq('https://linkinghub.elsevier.com/retrieve/pii/S0014299915002332')
|
339
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
340
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
281
341
|
expect(subject.creators.length).to eq(10)
|
282
|
-
expect(subject.creators.first).to eq(
|
283
|
-
|
284
|
-
expect(subject.
|
285
|
-
expect(subject.
|
286
|
-
expect(subject.
|
287
|
-
expect(subject.
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
expect(subject.
|
342
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Beck, Sarah E.',
|
343
|
+
'givenName' => 'Sarah E.', 'familyName' => 'Beck')
|
344
|
+
expect(subject.titles).to eq([{ 'title' => 'Paving the path to HIV neurotherapy: Predicting SIV CNS disease' }])
|
345
|
+
expect(subject.dates).to include({ 'date' => '2015-07', 'dateType' => 'Issued' })
|
346
|
+
expect(subject.publication_year).to eq('2015')
|
347
|
+
expect(subject.publisher).to eq('Elsevier BV')
|
348
|
+
expect(subject.related_identifiers).to eq([{ 'relatedIdentifier' => '0014-2999', 'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection' },
|
349
|
+
{ 'relatedIdentifier' => '10.1212/01.wnl.0000287431.88658.8b',
|
350
|
+
'relatedIdentifierType' => 'DOI',
|
351
|
+
'relationType' => 'References' },
|
352
|
+
{ 'relatedIdentifier' => '10.1182/blood-2010-09-308684',
|
353
|
+
'relatedIdentifierType' => 'DOI',
|
354
|
+
'relationType' => 'References' },
|
355
|
+
{ 'relatedIdentifier' => '10.1007/s13365-015-0313-7',
|
356
|
+
'relatedIdentifierType' => 'DOI',
|
357
|
+
'relationType' => 'References' },
|
358
|
+
{ 'relatedIdentifier' => '10.1016/j.jneuroim.2006.04.017',
|
359
|
+
'relatedIdentifierType' => 'DOI',
|
360
|
+
'relationType' => 'References' },
|
361
|
+
{ 'relatedIdentifier' => '10.1086/514001',
|
362
|
+
'relatedIdentifierType' => 'DOI',
|
363
|
+
'relationType' => 'References' },
|
364
|
+
{ 'relatedIdentifier' => '10.1002/ana.410310403',
|
365
|
+
'relatedIdentifierType' => 'DOI',
|
366
|
+
'relationType' => 'References' },
|
367
|
+
{ 'relatedIdentifier' => '10.1093/infdis/jir214',
|
368
|
+
'relatedIdentifierType' => 'DOI',
|
369
|
+
'relationType' => 'References' },
|
370
|
+
{ 'relatedIdentifier' => '10.1097/qad.0b013e32836010bd',
|
371
|
+
'relatedIdentifierType' => 'DOI',
|
372
|
+
'relationType' => 'References' },
|
373
|
+
{ 'relatedIdentifier' => '10.1261/rna.036863.112',
|
374
|
+
'relatedIdentifierType' => 'DOI',
|
375
|
+
'relationType' => 'References' },
|
376
|
+
{ 'relatedIdentifier' => '10.4103/0019-5359.107389',
|
377
|
+
'relatedIdentifierType' => 'DOI',
|
378
|
+
'relationType' => 'References' },
|
379
|
+
{ 'relatedIdentifier' => '10.3233/jad-2008-14103',
|
380
|
+
'relatedIdentifierType' => 'DOI',
|
381
|
+
'relationType' => 'References' },
|
382
|
+
{ 'relatedIdentifier' => '10.1126/science.287.5455.959',
|
383
|
+
'relatedIdentifierType' => 'DOI',
|
384
|
+
'relationType' => 'References' },
|
385
|
+
{ 'relatedIdentifier' => '10.1097/01.qai.0000165799.59322.f5',
|
386
|
+
'relatedIdentifierType' => 'DOI',
|
387
|
+
'relationType' => 'References' },
|
388
|
+
{ 'relatedIdentifier' => '10.1002/ana.410420503',
|
389
|
+
'relatedIdentifierType' => 'DOI',
|
390
|
+
'relationType' => 'References' },
|
391
|
+
{ 'relatedIdentifier' => '10.1089/ars.2012.4834',
|
392
|
+
'relatedIdentifierType' => 'DOI',
|
393
|
+
'relationType' => 'References' },
|
394
|
+
{ 'relatedIdentifier' => '10.1111/j.1600-0404.1987.tb05458.x',
|
395
|
+
'relatedIdentifierType' => 'DOI',
|
396
|
+
'relationType' => 'References' },
|
397
|
+
{ 'relatedIdentifier' => '10.1097/00002030-198905000-00006',
|
398
|
+
'relatedIdentifierType' => 'DOI',
|
399
|
+
'relationType' => 'References' },
|
400
|
+
{ 'relatedIdentifier' => '10.1002/ana.410200304',
|
401
|
+
'relatedIdentifierType' => 'DOI',
|
402
|
+
'relationType' => 'References' },
|
403
|
+
{ 'relatedIdentifier' => '10.1186/1742-6405-2-6',
|
404
|
+
'relatedIdentifierType' => 'DOI',
|
405
|
+
'relationType' => 'References' },
|
406
|
+
{ 'relatedIdentifier' => '10.1111/j.1600-0684.1993.tb00649.x',
|
407
|
+
'relatedIdentifierType' => 'DOI',
|
408
|
+
'relationType' => 'References' },
|
409
|
+
{ 'relatedIdentifier' => '10.1186/1742-6405-7-15',
|
410
|
+
'relatedIdentifierType' => 'DOI',
|
411
|
+
'relationType' => 'References' },
|
412
|
+
{ 'relatedIdentifier' => '10.1212/wnl.0b013e318200d727',
|
413
|
+
'relatedIdentifierType' => 'DOI',
|
414
|
+
'relationType' => 'References' },
|
415
|
+
{ 'relatedIdentifier' => '10.1089/aid.2006.0292',
|
416
|
+
'relatedIdentifierType' => 'DOI',
|
417
|
+
'relationType' => 'References' },
|
418
|
+
{ 'relatedIdentifier' => '10.1126/science.3646751',
|
419
|
+
'relatedIdentifierType' => 'DOI',
|
420
|
+
'relationType' => 'References' },
|
421
|
+
{ 'relatedIdentifier' => '10.1002/ajmg.b.32071',
|
422
|
+
'relatedIdentifierType' => 'DOI',
|
423
|
+
'relationType' => 'References' },
|
424
|
+
{ 'relatedIdentifier' => '10.1186/1756-6606-6-40',
|
425
|
+
'relatedIdentifierType' => 'DOI',
|
426
|
+
'relationType' => 'References' },
|
427
|
+
{ 'relatedIdentifier' => '10.1086/344938',
|
428
|
+
'relatedIdentifierType' => 'DOI',
|
429
|
+
'relationType' => 'References' },
|
430
|
+
{ 'relatedIdentifier' => '10.1128/jvi.71.8.6055-6060.1997',
|
431
|
+
'relatedIdentifierType' => 'DOI',
|
432
|
+
'relationType' => 'References' },
|
433
|
+
{ 'relatedIdentifier' => '10.1016/j.jneuroim.2004.08.031',
|
434
|
+
'relatedIdentifierType' => 'DOI',
|
435
|
+
'relationType' => 'References' },
|
436
|
+
{ 'relatedIdentifier' => '10.1371/journal.pone.0003603',
|
437
|
+
'relatedIdentifierType' => 'DOI',
|
438
|
+
'relationType' => 'References' },
|
439
|
+
{ 'relatedIdentifier' => '10.1093/jnen/61.1.85',
|
440
|
+
'relatedIdentifierType' => 'DOI',
|
441
|
+
'relationType' => 'References' },
|
442
|
+
{ 'relatedIdentifier' => '10.1097/qad.0b013e32832c4af0',
|
443
|
+
'relatedIdentifierType' => 'DOI',
|
444
|
+
'relationType' => 'References' },
|
445
|
+
{ 'relatedIdentifier' => '10.3389/fgene.2013.00083',
|
446
|
+
'relatedIdentifierType' => 'DOI',
|
447
|
+
'relationType' => 'References' },
|
448
|
+
{ 'relatedIdentifier' => '10.1080/13550280390194109',
|
449
|
+
'relatedIdentifierType' => 'DOI',
|
450
|
+
'relationType' => 'References' },
|
451
|
+
{ 'relatedIdentifier' => '10.1002/ana.410420504',
|
452
|
+
'relatedIdentifierType' => 'DOI',
|
453
|
+
'relationType' => 'References' },
|
454
|
+
{ 'relatedIdentifier' => '10.1001/archneur.61.11.1687',
|
455
|
+
'relatedIdentifierType' => 'DOI',
|
456
|
+
'relationType' => 'References' },
|
457
|
+
{ 'relatedIdentifier' => '10.1212/01.wnl.0000277635.05973.55',
|
458
|
+
'relatedIdentifierType' => 'DOI',
|
459
|
+
'relationType' => 'References' },
|
460
|
+
{ 'relatedIdentifier' => '10.1038/nmeth.3014',
|
461
|
+
'relatedIdentifierType' => 'DOI',
|
462
|
+
'relationType' => 'References' },
|
463
|
+
{ 'relatedIdentifier' => '10.1097/qai.0000000000000048',
|
464
|
+
'relatedIdentifierType' => 'DOI',
|
465
|
+
'relationType' => 'References' },
|
466
|
+
{ 'relatedIdentifier' => '10.1093/infdis/jit278',
|
467
|
+
'relatedIdentifierType' => 'DOI',
|
468
|
+
'relationType' => 'References' },
|
469
|
+
{ 'relatedIdentifier' => '10.1007/s13365-014-0283-1',
|
470
|
+
'relatedIdentifierType' => 'DOI',
|
471
|
+
'relationType' => 'References' },
|
472
|
+
{ 'relatedIdentifier' => '10.1097/00002030-199905280-00010',
|
473
|
+
'relatedIdentifierType' => 'DOI',
|
474
|
+
'relationType' => 'References' },
|
475
|
+
{ 'relatedIdentifier' => '10.1097/qco.0b013e32834ef586',
|
476
|
+
'relatedIdentifierType' => 'DOI',
|
477
|
+
'relationType' => 'References' },
|
478
|
+
{ 'relatedIdentifier' => '10.4049/jimmunol.169.6.3438',
|
479
|
+
'relatedIdentifierType' => 'DOI',
|
480
|
+
'relationType' => 'References' },
|
481
|
+
{ 'relatedIdentifier' => '10.2174/1389200024605082',
|
482
|
+
'relatedIdentifierType' => 'DOI',
|
483
|
+
'relationType' => 'References' },
|
484
|
+
{ 'relatedIdentifier' => '10.1126/science.1546323',
|
485
|
+
'relatedIdentifierType' => 'DOI',
|
486
|
+
'relationType' => 'References' },
|
487
|
+
{ 'relatedIdentifier' => '10.1016/s1474-4422(14)70137-1',
|
488
|
+
'relatedIdentifierType' => 'DOI',
|
489
|
+
'relationType' => 'References' },
|
490
|
+
{ 'relatedIdentifier' => '10.1016/j.jns.2009.06.043',
|
491
|
+
'relatedIdentifierType' => 'DOI',
|
492
|
+
'relationType' => 'References' },
|
493
|
+
{ 'relatedIdentifier' => '10.1128/jvi.77.16.9029-9040.2003',
|
494
|
+
'relatedIdentifierType' => 'DOI',
|
495
|
+
'relationType' => 'References' },
|
496
|
+
{ 'relatedIdentifier' => '10.1002/jcp.24254',
|
497
|
+
'relatedIdentifierType' => 'DOI',
|
498
|
+
'relationType' => 'References' },
|
499
|
+
{ 'relatedIdentifier' => '10.1128/jvi.76.1.292-302.2002',
|
500
|
+
'relatedIdentifierType' => 'DOI',
|
501
|
+
'relationType' => 'References' },
|
502
|
+
{ 'relatedIdentifier' => '10.1182/blood-2012-03-414706',
|
503
|
+
'relatedIdentifierType' => 'DOI',
|
504
|
+
'relationType' => 'References' },
|
505
|
+
{ 'relatedIdentifier' => '10.1016/j.jneuroim.2013.11.004',
|
506
|
+
'relatedIdentifierType' => 'DOI',
|
507
|
+
'relationType' => 'References' },
|
508
|
+
{ 'relatedIdentifier' => '10.1038/nrg3198',
|
509
|
+
'relatedIdentifierType' => 'DOI',
|
510
|
+
'relationType' => 'References' },
|
511
|
+
{ 'relatedIdentifier' => '10.1016/s0140-6736(96)10178-1',
|
512
|
+
'relatedIdentifierType' => 'DOI',
|
513
|
+
'relationType' => 'References' },
|
514
|
+
{ 'relatedIdentifier' => '10.1128/jvi.00366-11',
|
515
|
+
'relatedIdentifierType' => 'DOI',
|
516
|
+
'relationType' => 'References' },
|
517
|
+
{ 'relatedIdentifier' => '10.1007/s13365-011-0053-2',
|
518
|
+
'relatedIdentifierType' => 'DOI',
|
519
|
+
'relationType' => 'References' },
|
520
|
+
{ 'relatedIdentifier' => '10.1083/jcb.201211138',
|
521
|
+
'relatedIdentifierType' => 'DOI',
|
522
|
+
'relationType' => 'References' },
|
523
|
+
{ 'relatedIdentifier' => '10.1111/j.1600-0684.2011.00475.x',
|
524
|
+
'relatedIdentifierType' => 'DOI',
|
525
|
+
'relationType' => 'References' },
|
526
|
+
{ 'relatedIdentifier' => '10.1038/srep05915',
|
527
|
+
'relatedIdentifierType' => 'DOI',
|
528
|
+
'relationType' => 'References' },
|
529
|
+
{ 'relatedIdentifier' => '10.1096/fj.09-143503',
|
530
|
+
'relatedIdentifierType' => 'DOI',
|
531
|
+
'relationType' => 'References' },
|
532
|
+
{ 'relatedIdentifier' => '10.1542/peds.111.2.e168',
|
533
|
+
'relatedIdentifierType' => 'DOI',
|
534
|
+
'relationType' => 'References' },
|
535
|
+
{ 'relatedIdentifier' => '10.2174/1566524013363555',
|
536
|
+
'relatedIdentifierType' => 'DOI',
|
537
|
+
'relationType' => 'References' },
|
538
|
+
{ 'relatedIdentifier' => '10.1126/science.283.5403.857',
|
539
|
+
'relatedIdentifierType' => 'DOI',
|
540
|
+
'relationType' => 'References' },
|
541
|
+
{ 'relatedIdentifier' => '10.1212/01.wnl.0000145763.68284.15',
|
542
|
+
'relatedIdentifierType' => 'DOI',
|
543
|
+
'relationType' => 'References' },
|
544
|
+
{ 'relatedIdentifier' => '10.1002/ana.410230727',
|
545
|
+
'relatedIdentifierType' => 'DOI',
|
546
|
+
'relationType' => 'References' },
|
547
|
+
{ 'relatedIdentifier' => '10.1186/1742-4690-10-95',
|
548
|
+
'relatedIdentifierType' => 'DOI',
|
549
|
+
'relationType' => 'References' },
|
550
|
+
{ 'relatedIdentifier' => '10.1128/jvi.79.2.684-695.2005',
|
551
|
+
'relatedIdentifierType' => 'DOI',
|
552
|
+
'relationType' => 'References' },
|
553
|
+
{ 'relatedIdentifier' => '10.1111/j.1600-0684.2005.00126.x',
|
554
|
+
'relatedIdentifierType' => 'DOI',
|
555
|
+
'relationType' => 'References' },
|
556
|
+
{ 'relatedIdentifier' => '10.1186/1756-8722-6-6',
|
557
|
+
'relatedIdentifierType' => 'DOI',
|
558
|
+
'relationType' => 'References' },
|
559
|
+
{ 'relatedIdentifier' => '10.1016/j.jmb.2013.12.017',
|
560
|
+
'relatedIdentifierType' => 'DOI',
|
561
|
+
'relationType' => 'References' },
|
562
|
+
{ 'relatedIdentifier' => '10.1590/s0037-86822012000600002',
|
563
|
+
'relatedIdentifierType' => 'DOI',
|
564
|
+
'relationType' => 'References' },
|
565
|
+
{ 'relatedIdentifier' => '10.1080/13550280390218715',
|
566
|
+
'relatedIdentifierType' => 'DOI',
|
567
|
+
'relationType' => 'References' },
|
568
|
+
{ 'relatedIdentifier' => '10.1111/j.1468-1331.2012.03777.x',
|
569
|
+
'relatedIdentifierType' => 'DOI',
|
570
|
+
'relationType' => 'References' },
|
571
|
+
{ 'relatedIdentifier' => '10.3233/jad-2010-090649',
|
572
|
+
'relatedIdentifierType' => 'DOI',
|
573
|
+
'relationType' => 'References' },
|
574
|
+
{ 'relatedIdentifier' => '10.1080/13550280500516484',
|
575
|
+
'relatedIdentifierType' => 'DOI',
|
576
|
+
'relationType' => 'References' },
|
577
|
+
{ 'relatedIdentifier' => '10.1080/13550280390218751',
|
578
|
+
'relatedIdentifierType' => 'DOI',
|
579
|
+
'relationType' => 'References' },
|
580
|
+
{ 'relatedIdentifier' => '10.1189/jlb.0811394',
|
581
|
+
'relatedIdentifierType' => 'DOI',
|
582
|
+
'relationType' => 'References' },
|
583
|
+
{ 'relatedIdentifier' => '10.1007/s11481-011-9330-3',
|
584
|
+
'relatedIdentifierType' => 'DOI',
|
585
|
+
'relationType' => 'References' },
|
586
|
+
{ 'relatedIdentifier' => '10.1080/13550280802074539',
|
587
|
+
'relatedIdentifierType' => 'DOI',
|
588
|
+
'relationType' => 'References' },
|
589
|
+
{ 'relatedIdentifier' => '10.1086/650743',
|
590
|
+
'relatedIdentifierType' => 'DOI',
|
591
|
+
'relationType' => 'References' },
|
592
|
+
{ 'relatedIdentifier' => '10.1371/journal.pone.0008129',
|
593
|
+
'relatedIdentifierType' => 'DOI',
|
594
|
+
'relationType' => 'References' },
|
595
|
+
{ 'relatedIdentifier' => '10.1128/jvi.80.10.5074-5077.2006',
|
596
|
+
'relatedIdentifierType' => 'DOI',
|
597
|
+
'relationType' => 'References' },
|
598
|
+
{ 'relatedIdentifier' => '10.1186/1742-2094-10-62',
|
599
|
+
'relatedIdentifierType' => 'DOI',
|
600
|
+
'relationType' => 'References' },
|
601
|
+
{ 'relatedIdentifier' => '10.1086/323478',
|
602
|
+
'relatedIdentifierType' => 'DOI',
|
603
|
+
'relationType' => 'References' },
|
604
|
+
{ 'relatedIdentifier' => '10.1128/jvi.73.12.10480-10488.1999',
|
605
|
+
'relatedIdentifierType' => 'DOI',
|
606
|
+
'relationType' => 'References' },
|
607
|
+
{ 'relatedIdentifier' => '10.1111/hiv.12134',
|
608
|
+
'relatedIdentifierType' => 'DOI',
|
609
|
+
'relationType' => 'References' }])
|
610
|
+
expect(subject.container).to eq('firstPage' => '303', 'identifier' => '0014-2999',
|
611
|
+
'identifierType' => 'ISSN', 'lastPage' => '312', 'title' => 'European Journal of Pharmacology', 'type' => 'Journal', 'volume' => '759')
|
612
|
+
expect(subject.agency).to eq('crossref')
|
551
613
|
end
|
552
614
|
|
553
|
-
it
|
554
|
-
input =
|
555
|
-
subject =
|
615
|
+
it 'vor with url' do
|
616
|
+
input = 'https://doi.org/10.1038/hdy.2013.26'
|
617
|
+
subject = described_class.new(input: input)
|
556
618
|
expect(subject.valid?).to be true
|
557
|
-
expect(subject.id).to eq(
|
558
|
-
expect(subject.url).to eq(
|
559
|
-
expect(subject.types).to eq(
|
619
|
+
expect(subject.id).to eq('https://doi.org/10.1038/hdy.2013.26')
|
620
|
+
expect(subject.url).to eq('http://www.nature.com/articles/hdy201326')
|
621
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
622
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
560
623
|
expect(subject.creators.length).to eq(2)
|
561
|
-
expect(subject.creators.first).to eq(
|
562
|
-
|
563
|
-
expect(subject.
|
564
|
-
expect(subject.
|
565
|
-
expect(subject.
|
624
|
+
expect(subject.creators.first).to eq('familyName' => 'Gross', 'givenName' => 'J B',
|
625
|
+
'name' => 'Gross, J B', 'nameType' => 'Personal')
|
626
|
+
expect(subject.titles).to eq([{ 'title' => 'Albinism in phylogenetically and geographically distinct populations of Astyanax cavefish arises through the same loss-of-function Oca2 allele' }])
|
627
|
+
expect(subject.dates).to include({ 'date' => '2013-04-10', 'dateType' => 'Issued' })
|
628
|
+
expect(subject.publication_year).to eq('2013')
|
629
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
566
630
|
expect(subject.related_identifiers.size).to eq(35)
|
567
|
-
expect(subject.related_identifiers.first).to eq(
|
568
|
-
|
569
|
-
expect(subject.
|
631
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '1365-2540',
|
632
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
633
|
+
expect(subject.container).to eq('firstPage' => '122', 'identifier' => '1365-2540',
|
634
|
+
'identifierType' => 'ISSN', 'issue' => '2', 'lastPage' => '130', 'title' => 'Heredity', 'type' => 'Journal', 'volume' => '111')
|
635
|
+
expect(subject.agency).to eq('crossref')
|
570
636
|
end
|
571
637
|
|
572
|
-
it
|
573
|
-
input =
|
574
|
-
subject =
|
638
|
+
it 'dataset' do
|
639
|
+
input = '10.2210/pdb4hhb/pdb'
|
640
|
+
subject = described_class.new(input: input)
|
575
641
|
expect(subject.valid?).to be true
|
576
|
-
expect(subject.id).to eq(
|
577
|
-
expect(subject.url).to eq(
|
578
|
-
expect(subject.types).to eq(
|
642
|
+
expect(subject.id).to eq('https://doi.org/10.2210/pdb4hhb/pdb')
|
643
|
+
expect(subject.url).to eq('https://www.wwpdb.org/pdb?id=pdb_00004hhb')
|
644
|
+
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal',
|
645
|
+
'resourceType' => 'SaComponent', 'resourceTypeGeneral' => 'Text', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
579
646
|
expect(subject.creators.length).to eq(2)
|
580
|
-
expect(subject.creators.first).to eq(
|
581
|
-
|
582
|
-
expect(subject.
|
583
|
-
expect(subject.
|
584
|
-
|
585
|
-
expect(subject.
|
586
|
-
expect(subject.
|
647
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Fermi, G.',
|
648
|
+
'givenName' => 'G.', 'familyName' => 'Fermi')
|
649
|
+
expect(subject.titles).to eq([{ 'title' => 'THE CRYSTAL STRUCTURE OF HUMAN DEOXYHAEMOGLOBIN AT 1.74 ANGSTROMS RESOLUTION' }])
|
650
|
+
expect(subject.descriptions).to eq([{ 'description' => 'x-ray diffraction structure',
|
651
|
+
'descriptionType' => 'Other' }])
|
652
|
+
expect(subject.dates).to include({ 'date' => '1984-07-17', 'dateType' => 'Issued' })
|
653
|
+
expect(subject.publication_year).to eq('1984')
|
654
|
+
expect(subject.publisher).to eq('Worldwide Protein Data Bank')
|
655
|
+
expect(subject.agency).to eq('crossref')
|
587
656
|
end
|
588
657
|
|
589
|
-
it
|
590
|
-
input =
|
591
|
-
subject =
|
658
|
+
it 'component' do
|
659
|
+
input = '10.1371/journal.pmed.0030277.g001'
|
660
|
+
subject = described_class.new(input: input)
|
592
661
|
expect(subject.valid?).to be true
|
593
|
-
expect(subject.id).to eq(
|
594
|
-
expect(subject.url).to eq(
|
595
|
-
expect(subject.types).to eq(
|
596
|
-
|
597
|
-
expect(subject.
|
598
|
-
expect(subject.
|
599
|
-
expect(subject.
|
600
|
-
expect(subject.
|
601
|
-
|
602
|
-
expect(subject.
|
662
|
+
expect(subject.id).to eq('https://doi.org/10.1371/journal.pmed.0030277.g001')
|
663
|
+
expect(subject.url).to eq('https://dx.plos.org/10.1371/journal.pmed.0030277.g001')
|
664
|
+
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal',
|
665
|
+
'resourceType' => 'SaComponent', 'resourceTypeGeneral' => 'Text', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
666
|
+
expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }])
|
667
|
+
expect(subject.titles).to eq([{ 'title' => ':(unav)' }])
|
668
|
+
expect(subject.descriptions.empty?).to be(true)
|
669
|
+
expect(subject.dates).to eq([{ 'date' => '2015-10-20', 'dateType' => 'Issued' },
|
670
|
+
{ 'date' => '2018-10-19T21:13:42Z', 'dateType' => 'Updated' }])
|
671
|
+
expect(subject.publication_year).to eq('2015')
|
672
|
+
expect(subject.publisher).to eq('Public Library of Science (PLoS)')
|
673
|
+
expect(subject.agency).to eq('crossref')
|
603
674
|
end
|
604
675
|
|
605
|
-
it
|
606
|
-
input =
|
607
|
-
subject =
|
608
|
-
#expect(subject.valid?).to be true
|
609
|
-
expect(subject.id).to eq(
|
610
|
-
expect(subject.url).to eq(
|
611
|
-
expect(subject.types).to eq(
|
676
|
+
it 'dataset usda' do
|
677
|
+
input = 'https://doi.org/10.2737/RDS-2018-0001'
|
678
|
+
subject = described_class.new(input: input)
|
679
|
+
# expect(subject.valid?).to be true
|
680
|
+
expect(subject.id).to eq('https://doi.org/10.2737/rds-2018-0001')
|
681
|
+
expect(subject.url).to eq('https://www.fs.usda.gov/rds/archive/Catalog/RDS-2018-0001')
|
682
|
+
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'dataset',
|
683
|
+
'resourceType' => 'Dataset', 'resourceTypeGeneral' => 'Dataset', 'ris' => 'DATA', 'schemaOrg' => 'Dataset')
|
612
684
|
expect(subject.creators.length).to eq(4)
|
613
|
-
expect(subject.creators.first).to eq(
|
614
|
-
|
615
|
-
expect(subject.
|
616
|
-
expect(subject.
|
617
|
-
expect(subject.
|
618
|
-
|
619
|
-
expect(subject.
|
685
|
+
expect(subject.creators.first).to eq('familyName' => 'Ribic', 'givenName' => 'Christine A.',
|
686
|
+
'name' => 'Ribic, Christine A.', 'affiliation' => [{ 'name' => 'U.S. Geological Survey' }], 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-2583-1778', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'nameType' => 'Personal')
|
687
|
+
expect(subject.titles).to eq([{ 'title' => 'Fledging times of grassland birds' }])
|
688
|
+
expect(subject.descriptions.empty?).to be(true)
|
689
|
+
expect(subject.dates).to eq([{ 'date' => '2017-08-09', 'dateType' => 'Issued' },
|
690
|
+
{ 'date' => '2021-07-01T22:10:21Z', 'dateType' => 'Updated' }])
|
691
|
+
expect(subject.publication_year).to eq('2017')
|
692
|
+
expect(subject.publisher).to eq('USDA Forest Service')
|
693
|
+
expect(subject.agency).to eq('crossref')
|
620
694
|
end
|
621
695
|
|
622
|
-
it
|
623
|
-
input =
|
624
|
-
subject =
|
696
|
+
it 'book chapter' do
|
697
|
+
input = 'https://doi.org/10.1007/978-3-662-46370-3_13'
|
698
|
+
subject = described_class.new(input: input)
|
625
699
|
expect(subject.valid?).to be true
|
626
|
-
expect(subject.id).to eq(
|
627
|
-
expect(subject.url).to eq(
|
628
|
-
expect(subject.types).to eq(
|
700
|
+
expect(subject.id).to eq('https://doi.org/10.1007/978-3-662-46370-3_13')
|
701
|
+
expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-662-46370-3_13')
|
702
|
+
expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter',
|
703
|
+
'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter')
|
629
704
|
expect(subject.creators.length).to eq(2)
|
630
|
-
expect(subject.creators.first).to eq(
|
631
|
-
|
632
|
-
expect(subject.
|
633
|
-
expect(subject.
|
634
|
-
|
635
|
-
expect(subject.
|
636
|
-
expect(subject.
|
637
|
-
expect(subject.
|
638
|
-
expect(subject.container[
|
639
|
-
expect(subject.container[
|
640
|
-
expect(subject.container[
|
705
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Diercks, Ronald L.',
|
706
|
+
'givenName' => 'Ronald L.', 'familyName' => 'Diercks')
|
707
|
+
expect(subject.titles).to eq([{ 'title' => 'Clinical Symptoms and Physical Examinations' }])
|
708
|
+
expect(subject.dates).to eq([{ 'date' => '2015', 'dateType' => 'Issued' },
|
709
|
+
{ 'date' => '2015-04-14T02:31:13Z', 'dateType' => 'Updated' }])
|
710
|
+
expect(subject.publication_year).to eq('2015')
|
711
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
712
|
+
expect(subject.agency).to eq('crossref')
|
713
|
+
expect(subject.container['type']).to eq('Book')
|
714
|
+
expect(subject.container['title']).to eq('Shoulder Stiffness')
|
715
|
+
expect(subject.container['firstPage']).to eq('155')
|
716
|
+
expect(subject.container['lastPage']).to eq('158')
|
717
|
+
expect(subject.container['identifiers']).to eq([{ 'identifier' => '978-3-662-46369-7',
|
718
|
+
'identifierType' => 'ISBN' }])
|
641
719
|
end
|
642
720
|
|
643
|
-
it
|
644
|
-
input =
|
645
|
-
subject =
|
721
|
+
it 'another book chapter' do
|
722
|
+
input = 'https://doi.org/10.1007/978-3-319-75889-3_1'
|
723
|
+
subject = described_class.new(input: input)
|
646
724
|
expect(subject.valid?).to be true
|
647
|
-
expect(subject.id).to eq(
|
648
|
-
expect(subject.url).to eq(
|
649
|
-
expect(subject.types).to eq(
|
650
|
-
|
651
|
-
expect(subject.
|
652
|
-
|
653
|
-
expect(subject.
|
654
|
-
expect(subject.
|
655
|
-
expect(subject.
|
656
|
-
expect(subject.
|
657
|
-
expect(subject.
|
658
|
-
expect(subject.container[
|
659
|
-
expect(subject.container[
|
725
|
+
expect(subject.id).to eq('https://doi.org/10.1007/978-3-319-75889-3_1')
|
726
|
+
expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-319-75889-3_1')
|
727
|
+
expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter',
|
728
|
+
'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter')
|
729
|
+
expect(subject.creators).to eq([{ 'familyName' => 'Jones', 'givenName' => 'Hunter M.',
|
730
|
+
'name' => 'Jones, Hunter M.', 'nameType' => 'Personal' }])
|
731
|
+
expect(subject.titles).to eq([{ 'title' => 'Climate Change and Increasing Risk of Extreme Heat' }])
|
732
|
+
expect(subject.dates).to include({ 'date' => '2018', 'dateType' => 'Issued' })
|
733
|
+
expect(subject.publication_year).to eq('2018')
|
734
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
735
|
+
expect(subject.agency).to eq('crossref')
|
736
|
+
expect(subject.container['type']).to eq('Book Series')
|
737
|
+
expect(subject.container['title']).to eq('SpringerBriefs in Medical Earth Sciences')
|
738
|
+
expect(subject.container['identifier']).to eq('2523-3629')
|
739
|
+
expect(subject.container['identifierType']).to eq('ISSN')
|
660
740
|
end
|
661
741
|
|
662
|
-
it
|
663
|
-
input =
|
664
|
-
subject =
|
742
|
+
it 'yet another book chapter' do
|
743
|
+
input = 'https://doi.org/10.4018/978-1-4666-1891-6.ch004'
|
744
|
+
subject = described_class.new(input: input)
|
665
745
|
expect(subject.valid?).to be true
|
666
|
-
expect(subject.id).to eq(
|
667
|
-
expect(subject.url).to eq(
|
668
|
-
expect(subject.types).to eq(
|
669
|
-
|
670
|
-
expect(subject.
|
671
|
-
|
672
|
-
expect(subject.
|
673
|
-
expect(subject.
|
674
|
-
|
675
|
-
expect(subject.
|
676
|
-
expect(subject.
|
677
|
-
expect(subject.
|
678
|
-
expect(subject.container[
|
679
|
-
expect(subject.container[
|
746
|
+
expect(subject.id).to eq('https://doi.org/10.4018/978-1-4666-1891-6.ch004')
|
747
|
+
expect(subject.url).to eq('http://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-1891-6.ch004')
|
748
|
+
expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter',
|
749
|
+
'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter')
|
750
|
+
expect(subject.creators).to eq([{ 'affiliation' => [{ 'name' => 'Universit?? de Lyon, France' }],
|
751
|
+
'familyName' => 'Bichot', 'givenName' => 'Charles-Edmond', 'name' => 'Bichot, Charles-Edmond', 'nameType' => 'Personal' }])
|
752
|
+
expect(subject.titles).to eq([{ 'title' => 'Unsupervised and Supervised Image Segmentation Using Graph Partitioning' }])
|
753
|
+
expect(subject.dates).to eq([{ 'date' => '2012-08-08', 'dateType' => 'Issued' },
|
754
|
+
{ 'date' => '2019-07-02T13:17:21Z', 'dateType' => 'Updated' }])
|
755
|
+
expect(subject.publication_year).to eq('2012')
|
756
|
+
expect(subject.publisher).to eq('IGI Global')
|
757
|
+
expect(subject.agency).to eq('crossref')
|
758
|
+
expect(subject.container['type']).to eq('Book')
|
759
|
+
expect(subject.container['title']).to eq('Graph-Based Methods in Computer Vision')
|
760
|
+
expect(subject.container['firstPage']).to eq('72')
|
761
|
+
expect(subject.container['lastPage']).to eq('94')
|
762
|
+
expect(subject.container['identifiers']).to eq([{ 'identifier' => '9781466618916',
|
763
|
+
'identifierType' => 'ISBN' }])
|
680
764
|
end
|
681
765
|
|
682
|
-
it
|
683
|
-
input =
|
684
|
-
subject =
|
766
|
+
it 'missing creator' do
|
767
|
+
input = 'https://doi.org/10.3390/publications6020015'
|
768
|
+
subject = described_class.new(input: input)
|
685
769
|
expect(subject.valid?).to be true
|
686
|
-
expect(subject.id).to eq(
|
687
|
-
expect(subject.url).to eq(
|
688
|
-
expect(subject.types).to eq(
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
expect(subject.
|
707
|
-
expect(subject.
|
708
|
-
|
709
|
-
expect(subject.
|
770
|
+
expect(subject.id).to eq('https://doi.org/10.3390/publications6020015')
|
771
|
+
expect(subject.url).to eq('https://www.mdpi.com/2304-6775/6/2/15')
|
772
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
773
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
774
|
+
expect(subject.creators).to eq([{ 'familyName' => 'Kohls',
|
775
|
+
'givenName' => 'Alexander',
|
776
|
+
'name' => 'Kohls, Alexander',
|
777
|
+
'nameIdentifiers' =>
|
778
|
+
[{ 'nameIdentifier' => 'https://orcid.org/0000-0002-3836-8885',
|
779
|
+
'nameIdentifierScheme' => 'ORCID',
|
780
|
+
'schemeUri' => 'https://orcid.org' }],
|
781
|
+
'nameType' => 'Personal' },
|
782
|
+
{ 'familyName' => 'Mele',
|
783
|
+
'givenName' => 'Salvatore',
|
784
|
+
'name' => 'Mele, Salvatore',
|
785
|
+
'nameIdentifiers' =>
|
786
|
+
[{ 'nameIdentifier' => 'https://orcid.org/0000-0003-0762-2235',
|
787
|
+
'nameIdentifierScheme' => 'ORCID',
|
788
|
+
'schemeUri' => 'https://orcid.org' }],
|
789
|
+
'nameType' => 'Personal' }])
|
790
|
+
expect(subject.titles).to eq([{ 'title' => 'Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics' }])
|
791
|
+
expect(subject.dates).to eq([{ 'date' => '2018-04-09', 'dateType' => 'Issued' },
|
792
|
+
{ 'date' => '2021-07-22T10:05:05Z', 'dateType' => 'Updated' }])
|
793
|
+
expect(subject.publication_year).to eq('2018')
|
794
|
+
expect(subject.publisher).to eq('MDPI AG')
|
795
|
+
expect(subject.agency).to eq('crossref')
|
710
796
|
end
|
711
797
|
|
712
|
-
it
|
713
|
-
input =
|
714
|
-
subject =
|
798
|
+
it 'book' do
|
799
|
+
input = 'https://doi.org/10.1017/9781108348843'
|
800
|
+
subject = described_class.new(input: input)
|
715
801
|
expect(subject.valid?).to be true
|
716
|
-
expect(subject.id).to eq(
|
717
|
-
expect(subject.identifiers).to eq([{
|
718
|
-
|
719
|
-
expect(subject.
|
720
|
-
expect(subject.
|
721
|
-
|
722
|
-
expect(subject.
|
723
|
-
|
724
|
-
expect(subject.
|
725
|
-
expect(subject.
|
726
|
-
|
802
|
+
expect(subject.id).to eq('https://doi.org/10.1017/9781108348843')
|
803
|
+
expect(subject.identifiers).to eq([{ 'identifier' => '9781108348843',
|
804
|
+
'identifierType' => 'ISBN' }])
|
805
|
+
expect(subject.url).to eq('https://www.cambridge.org/core/product/identifier/9781108348843/type/book')
|
806
|
+
expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book',
|
807
|
+
'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book')
|
808
|
+
expect(subject.creators).to eq([{ 'familyName' => 'Leung', 'givenName' => 'Vincent S.',
|
809
|
+
'name' => 'Leung, Vincent S.', 'nameType' => 'Personal' }])
|
810
|
+
expect(subject.titles).to eq([{ 'title' => 'The Politics of the Past in Early China' }])
|
811
|
+
expect(subject.dates).to eq([{ 'date' => '2019-07-01', 'dateType' => 'Issued' },
|
812
|
+
{ 'date' => '2021-01-08T19:18:57Z', 'dateType' => 'Updated' }])
|
813
|
+
expect(subject.publication_year).to eq('2019')
|
814
|
+
expect(subject.publisher).to eq('Cambridge University Press (CUP)')
|
815
|
+
expect(subject.agency).to eq('crossref')
|
816
|
+
expect(subject.date_registered).to eq('2019-07-06T10:19:22Z')
|
727
817
|
end
|
728
818
|
|
729
|
-
it
|
730
|
-
input =
|
731
|
-
subject =
|
819
|
+
it 'another book' do
|
820
|
+
input = 'https://doi.org/10.2973/odp.proc.ir.180.2000'
|
821
|
+
subject = described_class.new(input: input)
|
732
822
|
expect(subject.valid?).to be true
|
733
|
-
expect(subject.id).to eq(
|
734
|
-
expect(subject.url).to eq(
|
735
|
-
expect(subject.types).to eq(
|
736
|
-
|
823
|
+
expect(subject.id).to eq('https://doi.org/10.2973/odp.proc.ir.180.2000')
|
824
|
+
expect(subject.url).to eq('http://www-odp.tamu.edu/publications/180_IR/180TOC.HTM')
|
825
|
+
expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book',
|
826
|
+
'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book')
|
827
|
+
expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }])
|
737
828
|
expect(subject.contributors.size).to eq(4)
|
738
|
-
expect(subject.contributors.first).to eq(
|
739
|
-
|
740
|
-
expect(subject.
|
741
|
-
expect(subject.
|
742
|
-
|
743
|
-
expect(subject.
|
744
|
-
expect(subject.
|
829
|
+
expect(subject.contributors.first).to eq('contributorType' => 'Editor', 'familyName' => 'Taylor',
|
830
|
+
'givenName' => 'B.', 'name' => 'Taylor, B.', 'nameType' => 'Personal')
|
831
|
+
expect(subject.titles).to eq([{ 'title' => 'Proceedings of the Ocean Drilling Program, 180 Initial Reports' }])
|
832
|
+
expect(subject.dates).to eq([{ 'date' => '2000-02-04', 'dateType' => 'Issued' },
|
833
|
+
{ 'date' => '2009-02-02T21:19:43Z', 'dateType' => 'Updated' }])
|
834
|
+
expect(subject.publication_year).to eq('2000')
|
835
|
+
expect(subject.publisher).to eq('International Ocean Discovery Program (IODP)')
|
836
|
+
expect(subject.agency).to eq('crossref')
|
837
|
+
expect(subject.date_registered).to eq('2006-10-17T20:17:44Z')
|
745
838
|
end
|
746
839
|
|
747
|
-
it
|
748
|
-
input =
|
749
|
-
subject =
|
840
|
+
it 'yet another book' do
|
841
|
+
input = 'https://doi.org/10.1029/ar035'
|
842
|
+
subject = described_class.new(input: input)
|
750
843
|
expect(subject.valid?).to be true
|
751
|
-
expect(subject.id).to eq(
|
752
|
-
expect(subject.identifiers).to eq([{
|
753
|
-
|
754
|
-
expect(subject.
|
755
|
-
expect(subject.
|
756
|
-
|
757
|
-
expect(subject.
|
758
|
-
|
759
|
-
expect(subject.
|
844
|
+
expect(subject.id).to eq('https://doi.org/10.1029/ar035')
|
845
|
+
expect(subject.identifiers).to eq([{ 'identifier' => '0-87590-181-6',
|
846
|
+
'identifierType' => 'ISBN' }])
|
847
|
+
expect(subject.url).to eq('http://doi.wiley.com/10.1029/AR035')
|
848
|
+
expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book',
|
849
|
+
'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book')
|
850
|
+
expect(subject.creators).to eq([{ 'familyName' => 'McGinnis', 'givenName' => 'Richard Frank',
|
851
|
+
'name' => 'McGinnis, Richard Frank', 'nameType' => 'Personal' }])
|
852
|
+
expect(subject.titles).to eq([{ 'title' => 'Biogeography of Lanternfishes (Myctophidae) South of 30??S' }])
|
853
|
+
expect(subject.dates).to eq([{ 'date' => '1982', 'dateType' => 'Issued' },
|
854
|
+
{ 'date' => '2021-12-04T00:09:54Z', 'dateType' => 'Updated' }])
|
855
|
+
expect(subject.publication_year).to eq('1982')
|
856
|
+
expect(subject.publisher).to eq('Wiley')
|
760
857
|
expect(subject.related_identifiers.length).to eq(46)
|
761
|
-
expect(subject.related_identifiers.first).to eq(
|
762
|
-
|
763
|
-
|
764
|
-
expect(subject.
|
858
|
+
expect(subject.related_identifiers.first).to eq(
|
859
|
+
'relatedIdentifier' => '10.1016/0031-0182(70)90103-3', 'relatedIdentifierType' => 'DOI', 'relationType' => 'References'
|
860
|
+
)
|
861
|
+
expect(subject.container).to eq('identifier' => '0066-4634', 'identifierType' => 'ISSN',
|
862
|
+
'title' => 'Antarctic Research Series', 'type' => 'Book Series', 'volume' => '35')
|
863
|
+
expect(subject.agency).to eq('crossref')
|
864
|
+
expect(subject.date_registered.nil?).to be(true)
|
765
865
|
end
|
766
866
|
|
767
|
-
it
|
768
|
-
input =
|
769
|
-
subject =
|
867
|
+
it 'mEDRA' do
|
868
|
+
input = 'https://doi.org/10.3280/ecag2018-001005'
|
869
|
+
subject = described_class.new(input: input)
|
770
870
|
expect(subject.valid?).to be true
|
771
|
-
expect(subject.id).to eq(
|
772
|
-
expect(subject.identifiers).to eq([{
|
773
|
-
|
774
|
-
expect(subject.
|
871
|
+
expect(subject.id).to eq('https://doi.org/10.3280/ecag2018-001005')
|
872
|
+
expect(subject.identifiers).to eq([{ 'identifier' => '5',
|
873
|
+
'identifierType' => 'article_number' }])
|
874
|
+
expect(subject.url).to eq('http://www.francoangeli.it/riviste/Scheda_Riviste.asp?IDArticolo=61645')
|
875
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
876
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
775
877
|
expect(subject.creators.length).to eq(2)
|
776
|
-
expect(subject.creators.first).to eq(
|
777
|
-
|
778
|
-
expect(subject.
|
779
|
-
expect(subject.
|
780
|
-
expect(subject.
|
781
|
-
expect(subject.
|
878
|
+
expect(subject.creators.first).to eq('familyName' => 'Oh', 'givenName' => 'Sohae Eve',
|
879
|
+
'name' => 'Oh, Sohae Eve', 'nameType' => 'Personal')
|
880
|
+
expect(subject.titles).to eq([{ 'title' => 'Substitutability between organic and conventional poultry products and organic price premiums' }])
|
881
|
+
expect(subject.dates).to include({ 'date' => '2018-05', 'dateType' => 'Issued' })
|
882
|
+
expect(subject.publication_year).to eq('2018')
|
883
|
+
expect(subject.publisher).to eq('Franco Angeli')
|
884
|
+
expect(subject.agency).to eq('crossref')
|
782
885
|
end
|
783
886
|
|
784
|
-
it
|
785
|
-
input =
|
786
|
-
subject =
|
887
|
+
it 'KISTI' do
|
888
|
+
input = 'https://doi.org/10.5012/bkcs.2013.34.10.2889'
|
889
|
+
subject = described_class.new(input: input)
|
787
890
|
expect(subject.valid?).to be true
|
788
|
-
expect(subject.id).to eq(
|
789
|
-
expect(subject.identifiers).to eq([{
|
790
|
-
|
791
|
-
expect(subject.
|
891
|
+
expect(subject.id).to eq('https://doi.org/10.5012/bkcs.2013.34.10.2889')
|
892
|
+
expect(subject.identifiers).to eq([{ 'identifier' => 'JCGMCS_2013_v34n10_2889',
|
893
|
+
'identifierType' => 'Publisher ID' }])
|
894
|
+
expect(subject.url).to eq('http://koreascience.or.kr/journal/view.jsp?kj=JCGMCS&py=2013&vnc=v34n10&sp=2889')
|
895
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
896
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
792
897
|
expect(subject.creators.length).to eq(7)
|
793
|
-
expect(subject.creators.first).to eq(
|
794
|
-
|
795
|
-
expect(subject.
|
796
|
-
expect(subject.
|
797
|
-
|
798
|
-
expect(subject.
|
898
|
+
expect(subject.creators.first).to eq('familyName' => 'Huang', 'givenName' => 'Guimei',
|
899
|
+
'name' => 'Huang, Guimei', 'nameType' => 'Personal')
|
900
|
+
expect(subject.titles).to eq([{ 'title' => 'Synthesis, Crystal Structure and Theoretical Calculation of a Novel Nickel(II) Complex with Dibromotyrosine and 1,10-Phenanthroline' }])
|
901
|
+
expect(subject.dates).to eq([{ 'date' => '2013-10-20', 'dateType' => 'Issued' },
|
902
|
+
{ 'date' => '2016-12-14T21:40:52Z', 'dateType' => 'Updated' }])
|
903
|
+
expect(subject.publication_year).to eq('2013')
|
904
|
+
expect(subject.publisher).to eq('Korean Chemical Society')
|
905
|
+
expect(subject.agency).to eq('KISTI')
|
799
906
|
end
|
800
907
|
|
801
|
-
it
|
802
|
-
input =
|
803
|
-
subject =
|
908
|
+
it 'JaLC' do
|
909
|
+
input = 'https://doi.org/10.1241/johokanri.39.979'
|
910
|
+
subject = described_class.new(input: input)
|
804
911
|
expect(subject.valid?).to be true
|
805
|
-
expect(subject.id).to eq(
|
806
|
-
expect(subject.url).to eq(
|
807
|
-
expect(subject.types).to eq(
|
808
|
-
|
809
|
-
expect(subject.
|
810
|
-
|
811
|
-
expect(subject.
|
812
|
-
expect(subject.
|
813
|
-
|
912
|
+
expect(subject.id).to eq('https://doi.org/10.1241/johokanri.39.979')
|
913
|
+
expect(subject.url).to eq('http://joi.jlc.jst.go.jp/JST.JSTAGE/johokanri/39.979?from=CrossRef')
|
914
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
915
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
916
|
+
expect(subject.creators).to eq([{ 'familyName' => 'KUSUMOTO', 'givenName' => 'Hiroyuki',
|
917
|
+
'name' => 'KUSUMOTO, Hiroyuki', 'nameType' => 'Personal' }])
|
918
|
+
expect(subject.titles).to eq([{ 'title' => 'Utilizing the Internet. 12 Series. Future of the Internet.' }])
|
919
|
+
expect(subject.dates).to eq([{ 'date' => '1997', 'dateType' => 'Issued' },
|
920
|
+
{ 'date' => '2020-03-06T06:44:36Z', 'dateType' => 'Updated' }])
|
921
|
+
expect(subject.publication_year).to eq('1997')
|
922
|
+
expect(subject.publisher).to eq('Japan Science and Technology Agency (JST)')
|
923
|
+
expect(subject.agency).to eq('JaLC')
|
814
924
|
end
|
815
925
|
|
816
|
-
it
|
817
|
-
input =
|
818
|
-
subject =
|
926
|
+
it 'OP' do
|
927
|
+
input = 'https://doi.org/10.2903/j.efsa.2018.5239'
|
928
|
+
subject = described_class.new(input: input)
|
819
929
|
expect(subject.valid?).to be true
|
820
|
-
expect(subject.id).to eq(
|
821
|
-
expect(subject.url).to eq(
|
822
|
-
expect(subject.types).to eq(
|
930
|
+
expect(subject.id).to eq('https://doi.org/10.2903/j.efsa.2018.5239')
|
931
|
+
expect(subject.url).to eq('http://doi.wiley.com/10.2903/j.efsa.2018.5239')
|
932
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
933
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
823
934
|
expect(subject.creators.length).to eq(28)
|
824
|
-
expect(subject.creators.first).to eq(
|
825
|
-
|
826
|
-
expect(subject.
|
827
|
-
expect(subject.
|
828
|
-
expect(subject.
|
829
|
-
expect(subject.
|
935
|
+
expect(subject.creators.first).to eq('familyName' => 'Younes', 'givenName' => 'Maged',
|
936
|
+
'name' => 'Younes, Maged', 'nameType' => 'Personal')
|
937
|
+
expect(subject.titles).to eq([{ 'title' => 'Scientific opinion on the safety of green tea catechins' }])
|
938
|
+
expect(subject.dates).to include({ 'date' => '2018-04', 'dateType' => 'Issued' })
|
939
|
+
expect(subject.publication_year).to eq('2018')
|
940
|
+
expect(subject.publisher).to eq('Wiley')
|
941
|
+
expect(subject.agency).to eq('OP')
|
830
942
|
end
|
831
943
|
|
832
|
-
it
|
833
|
-
input =
|
834
|
-
subject =
|
944
|
+
it 'multiple titles' do
|
945
|
+
input = 'https://doi.org/10.4000/dms.865'
|
946
|
+
subject = described_class.new(input: input)
|
835
947
|
expect(subject.valid?).to be true
|
836
|
-
expect(subject.id).to eq(
|
837
|
-
expect(subject.url).to eq(
|
838
|
-
expect(subject.types).to eq(
|
839
|
-
|
840
|
-
expect(subject.
|
841
|
-
|
842
|
-
expect(subject.
|
843
|
-
|
844
|
-
|
845
|
-
expect(subject.
|
948
|
+
expect(subject.id).to eq('https://doi.org/10.4000/dms.865')
|
949
|
+
expect(subject.url).to eq('http://journals.openedition.org/dms/865')
|
950
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
951
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
952
|
+
expect(subject.creators).to eq([{ 'familyName' => 'Peraya', 'givenName' => 'Daniel',
|
953
|
+
'name' => 'Peraya, Daniel', 'nameType' => 'Personal' }])
|
954
|
+
expect(subject.titles).to eq([
|
955
|
+
{ 'title' => 'Distances, absence, proximit??s et pr??sences??: des concepts en d??placement' }, { 'title' => 'Distance(s), proximity and presence(s): evolving concepts' }
|
956
|
+
])
|
957
|
+
expect(subject.dates).to include({ 'date' => '2014-12-14', 'dateType' => 'Issued' })
|
958
|
+
expect(subject.publication_year).to eq('2014')
|
959
|
+
expect(subject.publisher).to eq('OpenEdition')
|
960
|
+
expect(subject.agency).to eq('crossref')
|
961
|
+
expect(subject.date_registered.nil?).to be(true)
|
846
962
|
end
|
847
963
|
|
848
|
-
it
|
849
|
-
input =
|
850
|
-
subject =
|
964
|
+
it 'multiple titles with missing' do
|
965
|
+
input = 'https://doi.org/10.1186/1471-2164-7-187'
|
966
|
+
subject = described_class.new(input: input)
|
851
967
|
expect(subject.valid?).to be true
|
852
|
-
expect(subject.id).to eq(
|
853
|
-
expect(subject.url).to eq(
|
854
|
-
expect(subject.types).to eq(
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
expect(subject.
|
877
|
-
expect(subject.
|
878
|
-
expect(subject.
|
879
|
-
expect(subject.
|
880
|
-
expect(subject.
|
968
|
+
expect(subject.id).to eq('https://doi.org/10.1186/1471-2164-7-187')
|
969
|
+
expect(subject.url).to eq('https://bmcgenomics.biomedcentral.com/articles/10.1186/1471-2164-7-187')
|
970
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
971
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
972
|
+
expect(subject.creators).to eq([{ 'familyName' => 'Myers',
|
973
|
+
'givenName' => 'Chad L',
|
974
|
+
'name' => 'Myers, Chad L',
|
975
|
+
'nameType' => 'Personal' },
|
976
|
+
{ 'familyName' => 'Barrett',
|
977
|
+
'givenName' => 'Daniel R',
|
978
|
+
'name' => 'Barrett, Daniel R',
|
979
|
+
'nameType' => 'Personal' },
|
980
|
+
{ 'familyName' => 'Hibbs',
|
981
|
+
'givenName' => 'Matthew A',
|
982
|
+
'name' => 'Hibbs, Matthew A',
|
983
|
+
'nameType' => 'Personal' },
|
984
|
+
{ 'familyName' => 'Huttenhower',
|
985
|
+
'givenName' => 'Curtis',
|
986
|
+
'name' => 'Huttenhower, Curtis',
|
987
|
+
'nameType' => 'Personal' },
|
988
|
+
{ 'familyName' => 'Troyanskaya',
|
989
|
+
'givenName' => 'Olga G',
|
990
|
+
'name' => 'Troyanskaya, Olga G',
|
991
|
+
'nameType' => 'Personal' }])
|
992
|
+
expect(subject.titles).to eq([{ 'title' => 'Finding function: evaluation methods for functional genomic data' }])
|
993
|
+
expect(subject.dates).to include({ 'date' => '2006-07-25', 'dateType' => 'Issued' })
|
994
|
+
expect(subject.publication_year).to eq('2006')
|
995
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
996
|
+
expect(subject.agency).to eq('crossref')
|
997
|
+
expect(subject.date_registered).to eq('2021-08-31T17:31:49Z')
|
881
998
|
end
|
882
999
|
|
883
|
-
it
|
884
|
-
input =
|
885
|
-
subject =
|
1000
|
+
it 'markup' do
|
1001
|
+
input = 'https://doi.org/10.1098/rspb.2017.0132'
|
1002
|
+
subject = described_class.new(input: input)
|
886
1003
|
expect(subject.valid?).to be true
|
887
|
-
expect(subject.id).to eq(
|
888
|
-
expect(subject.url).to eq(
|
889
|
-
expect(subject.types).to eq(
|
1004
|
+
expect(subject.id).to eq('https://doi.org/10.1098/rspb.2017.0132')
|
1005
|
+
expect(subject.url).to eq('https://royalsocietypublishing.org/doi/10.1098/rspb.2017.0132')
|
1006
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1007
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
890
1008
|
expect(subject.creators.size).to eq(6)
|
891
|
-
expect(subject.creators.first).to eq(
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
expect(subject.
|
897
|
-
expect(subject.
|
1009
|
+
expect(subject.creators.first).to eq(
|
1010
|
+
'affiliation' => [{ 'name' => 'School of Biological Sciences, Centre for Evolutionary Biology, University of Western Australia, Crawley, WA 6009, Australia' }], 'familyName' => 'Dougherty', 'givenName' => 'Liam R.', 'name' => 'Dougherty, Liam R.', 'nameIdentifiers' => [{
|
1011
|
+
'nameIdentifier' => 'https://orcid.org/0000-0003-1406-0680', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org'
|
1012
|
+
}], 'nameType' => 'Personal'
|
1013
|
+
)
|
1014
|
+
expect(subject.titles).to eq([{ 'title' => 'Sexual conflict and correlated evolution between male persistence and female resistance traits in the seed beetle <i>Callosobruchus maculatus</i>' }])
|
1015
|
+
expect(subject.dates).to include({ 'date' => '2017-05-24', 'dateType' => 'Issued' })
|
1016
|
+
expect(subject.publication_year).to eq('2017')
|
1017
|
+
expect(subject.publisher).to eq('The Royal Society')
|
1018
|
+
expect(subject.agency).to eq('crossref')
|
1019
|
+
expect(subject.date_registered).to eq('2021-02-14T10:36:45Z')
|
898
1020
|
end
|
899
1021
|
|
900
|
-
it
|
901
|
-
input =
|
902
|
-
subject =
|
1022
|
+
it 'empty given name' do
|
1023
|
+
input = 'https://doi.org/10.1111/J.1865-1682.2010.01171.X'
|
1024
|
+
subject = described_class.new(input: input)
|
903
1025
|
expect(subject.valid?).to be true
|
904
|
-
expect(subject.id).to eq(
|
905
|
-
expect(subject.url).to eq(
|
906
|
-
expect(subject.types).to eq(
|
1026
|
+
expect(subject.id).to eq('https://doi.org/10.1111/j.1865-1682.2010.01171.x')
|
1027
|
+
expect(subject.url).to eq('https://onlinelibrary.wiley.com/doi/10.1111/j.1865-1682.2010.01171.x')
|
1028
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1029
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
907
1030
|
expect(subject.creators.length).to eq(5)
|
908
|
-
expect(subject.creators[3]).to eq(
|
909
|
-
|
910
|
-
expect(subject.
|
911
|
-
expect(subject.
|
912
|
-
expect(subject.
|
913
|
-
|
1031
|
+
expect(subject.creators[3]).to eq('familyName' => 'Ehtisham-ul-Haq', 'givenName' => '???',
|
1032
|
+
'name' => 'Ehtisham-ul-Haq, ???', 'nameType' => 'Personal')
|
1033
|
+
expect(subject.titles).to eq([{ 'title' => 'Serological Evidence of Brucella abortus Prevalence in Punjab Province, Pakistan - A Cross-Sectional Study' }])
|
1034
|
+
expect(subject.rights_list).to eq([{ 'rightsUri' => 'http://doi.wiley.com/10.1002/tdm_license_1.1' }])
|
1035
|
+
expect(subject.dates).to eq([{ 'date' => '2010-12', 'dateType' => 'Issued' },
|
1036
|
+
{ 'date' => '2021-07-07T02:32:16Z', 'dateType' => 'Updated' }])
|
1037
|
+
expect(subject.publication_year).to eq('2010')
|
1038
|
+
expect(subject.publisher).to eq('Wiley')
|
914
1039
|
end
|
915
1040
|
|
916
|
-
it
|
917
|
-
input =
|
918
|
-
subject =
|
1041
|
+
it 'invalid date' do
|
1042
|
+
input = 'https://doi.org/10.1055/s-0039-1690894'
|
1043
|
+
subject = described_class.new(input: input)
|
919
1044
|
expect(subject.valid?).to be true
|
920
|
-
expect(subject.id).to eq(
|
921
|
-
expect(subject.identifiers).to eq([{
|
922
|
-
|
923
|
-
expect(subject.
|
1045
|
+
expect(subject.id).to eq('https://doi.org/10.1055/s-0039-1690894')
|
1046
|
+
expect(subject.identifiers).to eq([{ 'identifier' => 's-0039-1690894',
|
1047
|
+
'identifierType' => 'sequence-number' }])
|
1048
|
+
expect(subject.url).to eq('http://www.thieme-connect.de/DOI/DOI?10.1055/s-0039-1690894')
|
1049
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1050
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
924
1051
|
expect(subject.creators.length).to eq(4)
|
925
|
-
expect(subject.creators[3]).to eq(
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
expect(subject.
|
933
|
-
expect(subject.
|
934
|
-
|
1052
|
+
expect(subject.creators[3]).to eq('affiliation' => [{ 'name' => 'Department of Chemistry, Tianjin Key Laboratory of Molecular Optoelectronic Sciences, and Tianjin Collaborative Innovation Centre of Chemical Science and Engineering, Tianjin University' }, { 'name' => 'Joint School of National University of Singapore and Tianjin University, International Campus of Tianjin University' }],
|
1053
|
+
'familyName' => 'Ma',
|
1054
|
+
'givenName' => 'Jun-An',
|
1055
|
+
'name' => 'Ma, Jun-An',
|
1056
|
+
'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0002-3902-6799',
|
1057
|
+
'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }],
|
1058
|
+
'nameType' => 'Personal')
|
1059
|
+
expect(subject.titles).to eq([{ 'title' => 'Silver-Catalyzed [3+3] Annulation of Glycine Imino Esters with Seyferth???Gilbert Reagent To Access Tetrahydro-1,2,4-triazinecarboxylate Esters' }])
|
1060
|
+
expect(subject.dates).to eq([{ 'date' => '2020-04-08', 'dateType' => 'Issued' },
|
1061
|
+
{ 'date' => '2020-06-16T23:13:36Z', 'dateType' => 'Updated' }])
|
1062
|
+
expect(subject.publication_year).to eq('2020')
|
1063
|
+
expect(subject.publisher).to eq('Georg Thieme Verlag KG')
|
935
1064
|
end
|
936
1065
|
|
937
|
-
it
|
938
|
-
input =
|
939
|
-
subject =
|
1066
|
+
it 'journal article with' do
|
1067
|
+
input = 'https://doi.org/10.1111/nph.14619'
|
1068
|
+
subject = described_class.new(input: input)
|
940
1069
|
expect(subject.valid?).to be true
|
941
|
-
expect(subject.id).to eq(
|
942
|
-
expect(subject.url).to eq(
|
943
|
-
expect(subject.types).to eq(
|
1070
|
+
expect(subject.id).to eq('https://doi.org/10.1111/nph.14619')
|
1071
|
+
expect(subject.url).to eq('https://onlinelibrary.wiley.com/doi/10.1111/nph.14619')
|
1072
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1073
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
944
1074
|
expect(subject.creators.length).to eq(3)
|
945
|
-
expect(subject.creators.first).to eq(
|
946
|
-
|
947
|
-
expect(subject.
|
948
|
-
expect(subject.
|
949
|
-
|
950
|
-
|
1075
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal',
|
1076
|
+
'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0002-4156-3761', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Dissmeyer, Nico', 'givenName' => 'Nico', 'familyName' => 'Dissmeyer', 'affiliation' => [{ 'name' => 'Independent Junior Research Group on Protein Recognition and Degradation; Leibniz Institute of Plant Biochemistry (IPB); Weinberg 3 Halle (Saale) D-06120 Germany' }, { 'name' => 'ScienceCampus Halle - Plant-based Bioeconomy; Betty-Heimann-Strasse 3 Halle (Saale) D-06120 Germany' }])
|
1077
|
+
expect(subject.titles).to eq([{ 'title' => 'Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway' }])
|
1078
|
+
expect(subject.rights_list).to eq([
|
1079
|
+
{ 'rightsUri' => 'http://doi.wiley.com/10.1002/tdm_license_1.1' }, { 'rightsUri' => 'http://onlinelibrary.wiley.com/termsAndConditions#vor' }
|
1080
|
+
])
|
1081
|
+
expect(subject.dates).to include({ 'date' => '2018-05', 'dateType' => 'Issued' })
|
1082
|
+
expect(subject.publication_year).to eq('2018')
|
1083
|
+
expect(subject.publisher).to eq('Wiley')
|
951
1084
|
expect(subject.related_identifiers.length).to eq(49)
|
952
|
-
expect(subject.related_identifiers.first).to eq(
|
953
|
-
|
954
|
-
expect(subject.
|
955
|
-
|
956
|
-
expect(subject.
|
1085
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '0028-646X',
|
1086
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
1087
|
+
expect(subject.related_identifiers.last).to eq('relatedIdentifier' => '10.1002/pmic.201400530',
|
1088
|
+
'relatedIdentifierType' => 'DOI', 'relationType' => 'References')
|
1089
|
+
expect(subject.container).to eq('firstPage' => '929', 'identifier' => '0028-646X',
|
1090
|
+
'identifierType' => 'ISSN', 'issue' => '3', 'lastPage' => '935', 'title' => 'New Phytologist', 'type' => 'Journal', 'volume' => '218')
|
1091
|
+
expect(subject.agency).to eq('crossref')
|
1092
|
+
expect(subject.date_registered).to eq('2018-08-03T11:45:49Z')
|
957
1093
|
end
|
958
1094
|
|
959
|
-
it
|
960
|
-
input =
|
961
|
-
subject =
|
1095
|
+
it 'author literal' do
|
1096
|
+
input = 'https://doi.org/10.1038/ng.3834'
|
1097
|
+
subject = described_class.new(input: input)
|
962
1098
|
expect(subject.valid?).to be true
|
963
|
-
expect(subject.id).to eq(
|
964
|
-
expect(subject.url).to eq(
|
965
|
-
expect(subject.types).to eq(
|
1099
|
+
expect(subject.id).to eq('https://doi.org/10.1038/ng.3834')
|
1100
|
+
expect(subject.url).to eq('http://www.nature.com/articles/ng.3834')
|
1101
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1102
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
966
1103
|
expect(subject.creators.length).to eq(14)
|
967
|
-
expect(subject.creators.last).to eq(
|
968
|
-
|
969
|
-
expect(subject.
|
970
|
-
expect(subject.
|
971
|
-
expect(subject.
|
972
|
-
expect(subject.
|
973
|
-
expect(subject.
|
1104
|
+
expect(subject.creators.last).to eq('name' => 'GTEx Consortium',
|
1105
|
+
'nameType' => 'Organizational')
|
1106
|
+
expect(subject.titles).to eq([{ 'title' => 'The impact of structural variation on human gene expression' }])
|
1107
|
+
expect(subject.dates).to include({ 'date' => '2017-04-03', 'dateType' => 'Issued' })
|
1108
|
+
expect(subject.publication_year).to eq('2017')
|
1109
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
1110
|
+
expect(subject.agency).to eq('crossref')
|
1111
|
+
expect(subject.date_registered).to eq('2019-11-02T09:30:06Z')
|
974
1112
|
end
|
975
1113
|
|
976
|
-
it
|
977
|
-
input =
|
978
|
-
subject =
|
1114
|
+
it 'affiliation is space' do
|
1115
|
+
input = 'https://doi.org/10.1177/0042098011428175'
|
1116
|
+
subject = described_class.new(input: input)
|
979
1117
|
expect(subject.valid?).to be true
|
980
|
-
expect(subject.id).to eq(
|
981
|
-
expect(subject.url).to eq(
|
982
|
-
expect(subject.types).to eq(
|
1118
|
+
expect(subject.id).to eq('https://doi.org/10.1177/0042098011428175')
|
1119
|
+
expect(subject.url).to eq('http://journals.sagepub.com/doi/10.1177/0042098011428175')
|
1120
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1121
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
983
1122
|
expect(subject.creators.length).to eq(1)
|
984
|
-
expect(subject.creators.first).to eq(
|
985
|
-
|
986
|
-
expect(subject.
|
987
|
-
expect(subject.
|
988
|
-
expect(subject.
|
989
|
-
expect(subject.
|
990
|
-
expect(subject.
|
1123
|
+
expect(subject.creators.first).to eq('affiliation' => [{ 'name' => '??' }],
|
1124
|
+
'familyName' => 'Petrovici', 'givenName' => 'Norbert', 'name' => 'Petrovici, Norbert', 'nameType' => 'Personal')
|
1125
|
+
expect(subject.titles).to eq([{ 'title' => 'Workers and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation' }])
|
1126
|
+
expect(subject.dates).to include({ 'date' => '2011-12-22', 'dateType' => 'Issued' })
|
1127
|
+
expect(subject.publication_year).to eq('2011')
|
1128
|
+
expect(subject.publisher).to eq('SAGE Publications')
|
1129
|
+
expect(subject.agency).to eq('crossref')
|
1130
|
+
expect(subject.date_registered).to eq('2021-05-16T02:02:38Z')
|
991
1131
|
end
|
992
1132
|
|
993
|
-
it
|
994
|
-
input =
|
995
|
-
subject =
|
1133
|
+
it 'multiple issn' do
|
1134
|
+
input = 'https://doi.org/10.1007/978-3-642-34922-5_19'
|
1135
|
+
subject = described_class.new(input: input)
|
996
1136
|
expect(subject.valid?).to be true
|
997
|
-
expect(subject.id).to eq(
|
998
|
-
expect(subject.url).to eq(
|
999
|
-
expect(subject.types).to eq(
|
1137
|
+
expect(subject.id).to eq('https://doi.org/10.1007/978-3-642-34922-5_19')
|
1138
|
+
expect(subject.url).to eq('http://link.springer.com/10.1007/978-3-642-34922-5_19')
|
1139
|
+
expect(subject.types).to eq('bibtex' => 'inbook', 'citeproc' => 'chapter',
|
1140
|
+
'resourceType' => 'BookChapter', 'resourceTypeGeneral' => 'BookChapter', 'ris' => 'CHAP', 'schemaOrg' => 'Chapter')
|
1000
1141
|
expect(subject.creators.length).to eq(3)
|
1001
|
-
expect(subject.creators.first).to eq(
|
1002
|
-
|
1003
|
-
expect(subject.
|
1004
|
-
expect(subject.
|
1005
|
-
expect(subject.
|
1006
|
-
expect(subject.
|
1007
|
-
expect(subject.
|
1008
|
-
|
1142
|
+
expect(subject.creators.first).to eq('familyName' => 'Razib', 'givenName' => 'Ali',
|
1143
|
+
'name' => 'Razib, Ali', 'nameType' => 'Personal')
|
1144
|
+
expect(subject.titles).to eq([{ 'title' => 'Log-Domain Arithmetic for High-Speed Fuzzy Control on a Field-Programmable Gate Array' }])
|
1145
|
+
expect(subject.dates).to include({ 'date' => '2013', 'dateType' => 'Issued' })
|
1146
|
+
expect(subject.publication_year).to eq('2013')
|
1147
|
+
expect(subject.publisher).to eq('Springer Science and Business Media LLC')
|
1148
|
+
expect(subject.container).to eq('identifier' => '1860-0808', 'identifierType' => 'ISSN',
|
1149
|
+
'title' => 'Studies in Fuzziness and Soft Computing', 'type' => 'Book Series')
|
1150
|
+
expect(subject.agency).to eq('crossref')
|
1151
|
+
expect(subject.date_registered).to eq('2012-10-31T16:15:44Z')
|
1009
1152
|
end
|
1010
1153
|
|
1011
|
-
it
|
1012
|
-
input =
|
1013
|
-
subject =
|
1154
|
+
it 'article id as page number' do
|
1155
|
+
input = 'https://doi.org/10.1103/physrevlett.120.117701'
|
1156
|
+
subject = described_class.new(input: input)
|
1014
1157
|
expect(subject.valid?).to be true
|
1015
|
-
expect(subject.id).to eq(
|
1016
|
-
expect(subject.url).to eq(
|
1017
|
-
expect(subject.types).to eq(
|
1158
|
+
expect(subject.id).to eq('https://doi.org/10.1103/physrevlett.120.117701')
|
1159
|
+
expect(subject.url).to eq('https://link.aps.org/doi/10.1103/PhysRevLett.120.117701')
|
1160
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1161
|
+
'resourceType' => 'JournalArticle', 'resourceTypeGeneral' => 'JournalArticle', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
1018
1162
|
expect(subject.creators.length).to eq(5)
|
1019
|
-
expect(subject.creators.first).to eq(
|
1020
|
-
|
1021
|
-
expect(subject.
|
1022
|
-
expect(subject.
|
1023
|
-
expect(subject.
|
1024
|
-
expect(subject.
|
1025
|
-
expect(subject.
|
1026
|
-
|
1163
|
+
expect(subject.creators.first).to eq('familyName' => 'Marrazzo', 'givenName' => 'Antimo',
|
1164
|
+
'name' => 'Marrazzo, Antimo', 'nameType' => 'Personal')
|
1165
|
+
expect(subject.titles).to eq([{ 'title' => 'Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator' }])
|
1166
|
+
expect(subject.dates).to include({ 'date' => '2018-03-13', 'dateType' => 'Issued' })
|
1167
|
+
expect(subject.publication_year).to eq('2018')
|
1168
|
+
expect(subject.publisher).to eq('American Physical Society (APS)')
|
1169
|
+
expect(subject.container).to eq('firstPage' => '117701', 'identifier' => '1079-7114',
|
1170
|
+
'identifierType' => 'ISSN', 'issue' => '11', 'title' => 'Physical Review Letters', 'type' => 'Journal', 'volume' => '120')
|
1171
|
+
expect(subject.agency).to eq('crossref')
|
1172
|
+
expect(subject.date_registered).to eq('2018-03-13T15:18:48Z')
|
1027
1173
|
end
|
1028
1174
|
|
1029
|
-
it
|
1030
|
-
input =
|
1031
|
-
subject =
|
1175
|
+
it 'posted content copernicus' do
|
1176
|
+
input = 'https://doi.org/10.5194/CP-2020-95'
|
1177
|
+
subject = described_class.new(input: input)
|
1032
1178
|
expect(subject.valid?).to be true
|
1033
|
-
expect(subject.url).to eq(
|
1034
|
-
expect(subject.types).to eq(
|
1179
|
+
expect(subject.url).to eq('https://cp.copernicus.org/preprints/cp-2020-95/cp-2020-95.pdf')
|
1180
|
+
expect(subject.types).to eq('bibtex' => 'article', 'citeproc' => 'article-journal',
|
1181
|
+
'resourceType' => 'PostedContent', 'resourceTypeGeneral' => 'Preprint', 'ris' => 'JOUR', 'schemaOrg' => 'ScholarlyArticle')
|
1035
1182
|
expect(subject.creators.count).to eq(6)
|
1036
|
-
expect(subject.creators.first).to eq(
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
expect(subject.titles).to eq([{
|
1041
|
-
expect(subject.id).to eq(
|
1042
|
-
expect(subject.identifiers).to
|
1043
|
-
expect(subject.descriptions.first[
|
1044
|
-
expect(subject.dates).to include({
|
1045
|
-
expect(subject.publication_year).to eq(
|
1046
|
-
expect(subject.publisher).to eq(
|
1047
|
-
expect(subject.agency).to eq(
|
1183
|
+
expect(subject.creators.first).to eq('nameType' => 'Personal', 'familyName' => 'Shao',
|
1184
|
+
'givenName' => 'Jun',
|
1185
|
+
'name' => 'Shao, Jun',
|
1186
|
+
'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0001-6130-6474', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }])
|
1187
|
+
expect(subject.titles).to eq([{ 'title' => 'The Atmospheric Bridge Communicated the ??<sup>13</sup>C Decline during the Last Deglaciation to the Global Upper Ocean' }])
|
1188
|
+
expect(subject.id).to eq('https://doi.org/10.5194/cp-2020-95')
|
1189
|
+
expect(subject.identifiers.empty?).to be(true)
|
1190
|
+
expect(subject.descriptions.first['description']).to start_with('Abstract. During the early last glacial termination')
|
1191
|
+
expect(subject.dates).to include({ 'date' => '2020-07-28', 'dateType' => 'Issued' })
|
1192
|
+
expect(subject.publication_year).to eq('2020')
|
1193
|
+
expect(subject.publisher).to eq('Copernicus GmbH')
|
1194
|
+
expect(subject.agency).to eq('crossref')
|
1048
1195
|
end
|
1049
1196
|
|
1050
|
-
it
|
1051
|
-
input =
|
1052
|
-
subject =
|
1197
|
+
it 'book oup' do
|
1198
|
+
input = '10.1093/oxfordhb/9780198746140.013.5'
|
1199
|
+
subject = described_class.new(input: input)
|
1053
1200
|
expect(subject.valid?).to be true
|
1054
|
-
expect(subject.url).to eq(
|
1055
|
-
expect(subject.types).to eq(
|
1201
|
+
expect(subject.url).to eq('https://academic.oup.com/edited-volume/28081/chapter/212116415')
|
1202
|
+
expect(subject.types).to eq('bibtex' => 'book', 'citeproc' => 'book', 'resourceType' => 'Book',
|
1203
|
+
'resourceTypeGeneral' => 'Book', 'ris' => 'BOOK', 'schemaOrg' => 'Book')
|
1056
1204
|
expect(subject.creators.count).to eq(1)
|
1057
|
-
expect(subject.creators.first).to eq(
|
1205
|
+
expect(subject.creators.first).to eq('familyName' => 'Clayton', 'givenName' => 'Barbra R.',
|
1206
|
+
'name' => 'Clayton, Barbra R.', 'nameType' => 'Personal')
|
1058
1207
|
expect(subject.contributors.count).to eq(2)
|
1059
|
-
expect(subject.contributors.first).to eq(
|
1060
|
-
|
1061
|
-
expect(subject.
|
1062
|
-
expect(subject.
|
1063
|
-
expect(subject.
|
1064
|
-
expect(subject.
|
1065
|
-
expect(subject.
|
1066
|
-
expect(subject.
|
1067
|
-
expect(subject.
|
1208
|
+
expect(subject.contributors.first).to eq('contributorType' => 'Editor', 'familyName' => 'Cozort',
|
1209
|
+
'givenName' => 'Daniel', 'name' => 'Cozort, Daniel', 'nameType' => 'Personal')
|
1210
|
+
expect(subject.titles).to eq([{ 'title' => 'The Changing Way of the Bodhisattva' }])
|
1211
|
+
expect(subject.id).to eq('https://doi.org/10.1093/oxfordhb/9780198746140.013.5')
|
1212
|
+
expect(subject.identifiers.empty?).to be(true)
|
1213
|
+
expect(subject.descriptions.first['description']).to start_with('This chapter explores the nature of the connections')
|
1214
|
+
expect(subject.dates).to include({ 'date' => '2018-04-05', 'dateType' => 'Issued' })
|
1215
|
+
expect(subject.publication_year).to eq('2018')
|
1216
|
+
expect(subject.publisher).to eq('Oxford University Press (OUP)')
|
1217
|
+
expect(subject.agency).to eq('crossref')
|
1068
1218
|
end
|
1069
1219
|
|
1070
|
-
it
|
1071
|
-
input =
|
1072
|
-
subject =
|
1220
|
+
it 'report osti' do
|
1221
|
+
input = '10.2172/972169'
|
1222
|
+
subject = described_class.new(input: input)
|
1073
1223
|
expect(subject.valid?).to be true
|
1074
|
-
expect(subject.url).to eq(
|
1075
|
-
expect(subject.types).to eq(
|
1224
|
+
expect(subject.url).to eq('http://www.osti.gov/servlets/purl/972169-1QXROM/')
|
1225
|
+
expect(subject.types).to eq('bibtex' => 'techreport', 'citeproc' => 'report',
|
1226
|
+
'resourceType' => 'Report', 'resourceTypeGeneral' => 'Report', 'ris' => 'RPRT', 'schemaOrg' => 'Report')
|
1076
1227
|
expect(subject.creators.count).to eq(4)
|
1077
|
-
expect(subject.creators.first).to eq(
|
1228
|
+
expect(subject.creators.first).to eq('familyName' => 'Denholm', 'givenName' => 'P.',
|
1229
|
+
'name' => 'Denholm, P.', 'nameType' => 'Personal')
|
1078
1230
|
expect(subject.contributors.count).to eq(0)
|
1079
|
-
expect(subject.titles).to eq([{
|
1080
|
-
expect(subject.id).to eq(
|
1081
|
-
expect(subject.identifiers).to eq(
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
expect(subject.
|
1086
|
-
expect(subject.
|
1231
|
+
expect(subject.titles).to eq([{ 'title' => 'Role of Energy Storage with Renewable Electricity Generation' }])
|
1232
|
+
expect(subject.id).to eq('https://doi.org/10.2172/972169')
|
1233
|
+
expect(subject.identifiers).to eq([
|
1234
|
+
{ 'identifier' => 'NREL/TP-6A2-47187',
|
1235
|
+
'identifierType' => 'report-number' }, { 'identifier' => '972169', 'identifierType' => 'sequence-number' }
|
1236
|
+
])
|
1237
|
+
expect(subject.descriptions.empty?).to be(true)
|
1238
|
+
expect(subject.dates).to include({ 'date' => '2010-01-01', 'dateType' => 'Issued' })
|
1239
|
+
expect(subject.publication_year).to eq('2010')
|
1240
|
+
expect(subject.publisher).to eq('Office of Scientific and Technical Information (OSTI)')
|
1241
|
+
expect(subject.agency).to eq('crossref')
|
1087
1242
|
end
|
1088
1243
|
|
1089
|
-
it
|
1090
|
-
input =
|
1091
|
-
subject =
|
1244
|
+
it 'journal issue' do
|
1245
|
+
input = 'https://doi.org/10.6002/ect.2015.0371'
|
1246
|
+
subject = described_class.new(input: input)
|
1092
1247
|
expect(subject.valid?).to be true
|
1093
|
-
expect(subject.id).to eq(
|
1094
|
-
expect(subject.url).to eq(
|
1095
|
-
expect(subject.types).to eq(
|
1096
|
-
|
1097
|
-
expect(subject.
|
1098
|
-
expect(subject.
|
1099
|
-
expect(subject.
|
1100
|
-
|
1248
|
+
expect(subject.id).to eq('https://doi.org/10.6002/ect.2015.0371')
|
1249
|
+
expect(subject.url).to eq('http://ectrx.org/forms/ectrxcontentshow.php?doi_id=10.6002/ect.2015.0371')
|
1250
|
+
expect(subject.types).to eq('bibtex' => 'misc', 'citeproc' => 'article-journal',
|
1251
|
+
'resourceType' => 'JournalIssue', 'resourceTypeGeneral' => 'Text', 'ris' => 'JOUR', 'schemaOrg' => 'PublicationIssue')
|
1252
|
+
expect(subject.creators).to eq([{ 'name' => ':(unav)', 'nameType' => 'Organizational' }])
|
1253
|
+
expect(subject.titles).to eq([{ 'title' => ':(unav)' }])
|
1254
|
+
expect(subject.dates).to eq([{ 'date' => '2018-10', 'dateType' => 'Issued' },
|
1255
|
+
{ 'date' => '2018-10-03T12:09:12Z', 'dateType' => 'Updated' }])
|
1256
|
+
expect(subject.publication_year).to eq('2018')
|
1257
|
+
expect(subject.publisher).to eq('Baskent University')
|
1101
1258
|
expect(subject.related_identifiers.length).to eq(2)
|
1102
|
-
expect(subject.related_identifiers.first).to eq(
|
1103
|
-
|
1104
|
-
expect(subject.
|
1259
|
+
expect(subject.related_identifiers.first).to eq('relatedIdentifier' => '2146-8427',
|
1260
|
+
'relatedIdentifierType' => 'ISSN', 'relationType' => 'IsPartOf', 'resourceTypeGeneral' => 'Collection')
|
1261
|
+
expect(subject.container).to eq('identifier' => '2146-8427', 'identifierType' => 'ISSN',
|
1262
|
+
'issue' => '5', 'title' => 'Experimental and Clinical Transplantation', 'type' => 'Journal', 'volume' => '16')
|
1263
|
+
expect(subject.agency).to eq('crossref')
|
1105
1264
|
end
|
1106
1265
|
|
1107
|
-
it
|
1108
|
-
input =
|
1109
|
-
subject =
|
1266
|
+
it 'not found error' do
|
1267
|
+
input = 'https://doi.org/10.7554/elife.01567x'
|
1268
|
+
subject = described_class.new(input: input)
|
1110
1269
|
expect(subject.valid?).to be false
|
1111
|
-
expect(subject.id).to eq(
|
1112
|
-
expect(subject.doi).to eq(
|
1113
|
-
expect(subject.agency).to eq(
|
1114
|
-
expect(subject.state).to eq(
|
1270
|
+
expect(subject.id).to eq('https://doi.org/10.7554/elife.01567x')
|
1271
|
+
expect(subject.doi).to eq('10.7554/elife.01567x')
|
1272
|
+
expect(subject.agency).to eq('crossref')
|
1273
|
+
expect(subject.state).to eq('not_found')
|
1115
1274
|
end
|
1116
1275
|
end
|
1117
1276
|
end
|