briard 2.4.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +72 -0
  3. data/.github/workflows/rubocop.yml +50 -0
  4. data/.rubocop.yml +144 -620
  5. data/.rubocop_todo.yml +76 -0
  6. data/CHANGELOG.md +22 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +43 -6
  9. data/Rakefile +1 -1
  10. data/{bolognese.gemspec → briard.gemspec} +46 -38
  11. data/lib/briard/array.rb +2 -2
  12. data/lib/briard/author_utils.rb +79 -71
  13. data/lib/briard/cli.rb +12 -13
  14. data/lib/briard/crossref_utils.rb +73 -61
  15. data/lib/briard/datacite_utils.rb +132 -106
  16. data/lib/briard/doi_utils.rb +10 -10
  17. data/lib/briard/metadata.rb +96 -106
  18. data/lib/briard/metadata_utils.rb +87 -78
  19. data/lib/briard/readers/bibtex_reader.rb +65 -65
  20. data/lib/briard/readers/cff_reader.rb +88 -70
  21. data/lib/briard/readers/citeproc_reader.rb +90 -84
  22. data/lib/briard/readers/codemeta_reader.rb +68 -50
  23. data/lib/briard/readers/crosscite_reader.rb +2 -2
  24. data/lib/briard/readers/crossref_reader.rb +249 -210
  25. data/lib/briard/readers/datacite_json_reader.rb +3 -3
  26. data/lib/briard/readers/datacite_reader.rb +225 -189
  27. data/lib/briard/readers/npm_reader.rb +49 -42
  28. data/lib/briard/readers/ris_reader.rb +82 -80
  29. data/lib/briard/readers/schema_org_reader.rb +182 -159
  30. data/lib/briard/string.rb +1 -1
  31. data/lib/briard/utils.rb +4 -4
  32. data/lib/briard/version.rb +3 -1
  33. data/lib/briard/whitelist_scrubber.rb +11 -4
  34. data/lib/briard/writers/bibtex_writer.rb +14 -8
  35. data/lib/briard/writers/cff_writer.rb +33 -26
  36. data/lib/briard/writers/codemeta_writer.rb +19 -15
  37. data/lib/briard/writers/csv_writer.rb +6 -4
  38. data/lib/briard/writers/datacite_json_writer.rb +8 -2
  39. data/lib/briard/writers/jats_writer.rb +33 -28
  40. data/lib/briard/writers/rdf_xml_writer.rb +1 -1
  41. data/lib/briard/writers/ris_writer.rb +30 -18
  42. data/lib/briard/writers/turtle_writer.rb +1 -1
  43. data/lib/briard.rb +6 -6
  44. data/rubocop.sarif +0 -0
  45. data/spec/array_spec.rb +5 -5
  46. data/spec/author_utils_spec.rb +151 -132
  47. data/spec/datacite_utils_spec.rb +135 -83
  48. data/spec/doi_utils_spec.rb +168 -164
  49. data/spec/find_from_format_spec.rb +69 -69
  50. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/onlies_keep_specific_tags.yml +65 -0
  51. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/removes_a_tags.yml +65 -0
  52. data/spec/metadata_spec.rb +91 -90
  53. data/spec/readers/bibtex_reader_spec.rb +43 -38
  54. data/spec/readers/cff_reader_spec.rb +165 -153
  55. data/spec/readers/citeproc_reader_spec.rb +45 -40
  56. data/spec/readers/codemeta_reader_spec.rb +128 -115
  57. data/spec/readers/crosscite_reader_spec.rb +34 -24
  58. data/spec/readers/crossref_reader_spec.rb +1098 -939
  59. data/spec/readers/datacite_json_reader_spec.rb +53 -40
  60. data/spec/readers/datacite_reader_spec.rb +1541 -1337
  61. data/spec/readers/npm_reader_spec.rb +48 -43
  62. data/spec/readers/ris_reader_spec.rb +53 -47
  63. data/spec/readers/schema_org_reader_spec.rb +329 -267
  64. data/spec/spec_helper.rb +6 -5
  65. data/spec/utils_spec.rb +371 -347
  66. data/spec/writers/bibtex_writer_spec.rb +143 -143
  67. data/spec/writers/cff_writer_spec.rb +96 -90
  68. data/spec/writers/citation_writer_spec.rb +34 -33
  69. data/spec/writers/citeproc_writer_spec.rb +226 -224
  70. data/spec/writers/codemeta_writer_spec.rb +18 -16
  71. data/spec/writers/crosscite_writer_spec.rb +91 -73
  72. data/spec/writers/crossref_writer_spec.rb +99 -91
  73. data/spec/writers/csv_writer_spec.rb +70 -70
  74. data/spec/writers/datacite_json_writer_spec.rb +78 -68
  75. data/spec/writers/datacite_writer_spec.rb +417 -322
  76. data/spec/writers/jats_writer_spec.rb +177 -161
  77. data/spec/writers/rdf_xml_writer_spec.rb +68 -63
  78. data/spec/writers/ris_writer_spec.rb +162 -162
  79. data/spec/writers/turtle_writer_spec.rb +47 -47
  80. metadata +250 -160
  81. 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
- let(:input) { "10.7554/eLife.01567" }
6
+ subject { described_class.new(input: input) }
7
7
 
8
- subject { Briard::Metadata.new(input: input) }
8
+ let(:input) { '10.7554/eLife.01567' }
9
9
 
10
- context "get crossref raw" do
11
- it "journal article" do
12
- input = fixture_path + 'crossref.xml'
13
- subject = Briard::Metadata.new(input: input)
14
- expect(subject.raw).to eq(IO.read(input).strip)
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 "get crossref metadata" do
19
- it "DOI with data citation" do
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("https://doi.org/10.7554/elife.01567")
22
- expect(subject.identifiers).to eq([{"identifier"=>"e01567", "identifierType"=>"article_number"}])
23
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
24
- expect(subject.url).to eq("https://elifesciences.org/articles/01567")
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("nameType"=>"Personal", "name"=>"Sankar, Martial", "givenName"=>"Martial", "familyName"=>"Sankar", "affiliation" => [{"name"=>"Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"}])
27
- expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
28
- "rightsIdentifier"=>"cc-by-3.0",
29
- "rightsIdentifierScheme"=>"SPDX",
30
- "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
31
- "schemeUri"=>"https://spdx.org/licenses/"}])
32
- expect(subject.titles).to eq([{"title"=>"Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"}])
33
- expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2022-03-26T09:21:50Z", "dateType"=>"Updated"}])
34
- expect(subject.publication_year).to eq("2014")
35
- expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
36
- expect(subject.container).to eq("firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
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("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
39
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1038/ncb2764", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
40
- expect(subject.funding_references).to eq([{"funderName"=>"SystemsX"},
41
- {"funderIdentifier"=>"https://doi.org/10.13039/501100003043",
42
- "funderIdentifierType"=>"Crossref Funder ID",
43
- "funderName"=>"EMBO"},
44
- {"funderIdentifier"=>"https://doi.org/10.13039/501100001711",
45
- "funderIdentifierType"=>"Crossref Funder ID",
46
- "funderName"=>"Swiss National Science Foundation"},
47
- {"funderIdentifier"=>"https://doi.org/10.13039/501100006390",
48
- "funderIdentifierType"=>"Crossref Funder ID",
49
- "funderName"=>"University of Lausanne"}])
50
- expect(subject.agency).to eq("crossref")
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 "journal article" do
54
- input = "https://doi.org/10.1371/journal.pone.0000030"
55
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1371/journal.pone.0000030")
58
- expect(subject.identifiers).to eq([{"identifier"=>"10.1371/journal.pone.0000030", "identifierType"=>"Publisher ID"}])
59
- expect(subject.url).to eq("https://dx.plos.org/10.1371/journal.pone.0000030")
60
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType"=>"Personal", "name"=>"Ralser, Markus", "givenName"=>"Markus", "familyName"=>"Ralser")
63
- expect(subject.contributors).to eq([{"contributorType"=>"Editor", "familyName"=>"Janbon", "givenName"=>"Guilhem", "name"=>"Janbon, Guilhem", "nameType"=>"Personal"}])
64
- expect(subject.titles).to eq([{"title"=>"Triose Phosphate Isomerase Deficiency Is Caused by Altered Dimerization???Not Catalytic Inactivity???of the Mutant Enzymes"}])
65
- expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International",
66
- "rightsIdentifier"=>"cc-by-4.0",
67
- "rightsIdentifierScheme"=>"SPDX",
68
- "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode",
69
- "schemeUri"=>"https://spdx.org/licenses/"}])
70
- expect(subject.dates).to eq([{"date"=>"2006-12-20", "dateType"=>"Issued"}, {"date"=>"2021-08-06T23:49:55Z", "dateType"=>"Updated"}])
71
- expect(subject.publication_year).to eq("2006")
72
- expect(subject.publisher).to eq("Public Library of Science (PLoS)")
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("relatedIdentifier"=>"1932-6203", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
75
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1056/nejm199109123251104", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
76
- expect(subject.container).to eq("firstPage"=>"e30", "identifier"=>"1932-6203", "identifierType"=>"ISSN", "issue"=>"1", "title"=>"PLoS ONE", "type"=>"Journal", "volume"=>"1")
77
- expect(subject.agency).to eq("crossref")
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 "journal article with funding" do
81
- input = "https://doi.org/10.3389/fpls.2019.00816"
82
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.3389/fpls.2019.00816")
85
- expect(subject.identifiers).to eq([{"identifier"=>"816", "identifierType"=>"article_number"}])
86
- expect(subject.url).to eq("https://www.frontiersin.org/article/10.3389/fpls.2019.00816/full")
87
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Fortes", "givenName"=>"Ana Margarida", "name"=>"Fortes, Ana Margarida", "nameType"=>"Personal")
90
- expect(subject.titles).to eq([{"title"=>"Transcriptional Modulation of Polyamine Metabolism in Fruit Species Under Abiotic and Biotic Stress"}])
91
- expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 4.0 International",
92
- "rightsIdentifier"=>"cc-by-4.0",
93
- "rightsIdentifierScheme"=>"SPDX",
94
- "rightsUri"=>"https://creativecommons.org/licenses/by/4.0/legalcode",
95
- "schemeUri"=>"https://spdx.org/licenses/"}])
96
- expect(subject.dates).to eq([{"date"=>"2019-07-02", "dateType"=>"Issued"}, {"date"=>"2019-09-22T02:40:23Z", "dateType"=>"Updated"}])
97
- expect(subject.publication_year).to eq("2019")
98
- expect(subject.publisher).to eq("Frontiers Media SA")
99
- expect(subject.funding_references).to eq([{"awardNumber"=>"CA17111", "funderIdentifier"=>"https://doi.org/10.13039/501100000921", "funderIdentifierType"=>"Crossref Funder ID", "funderName"=>"COST (European Cooperation in Science and Technology)"}])
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("relatedIdentifier"=>"1664-462X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
102
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.17660/actahortic.2004.632.41", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
103
- expect(subject.container).to eq("firstPage" => "816", "identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
104
- expect(subject.agency).to eq("crossref")
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 "journal article original language title" do
108
- input = "https://doi.org/10.7600/jspfsm.56.60"
109
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.7600/jspfsm.56.60")
112
- expect(subject.url).to eq("https://www.jstage.jst.go.jp/article/jspfsm/56/1/56_1_60/_article/-char/ja/")
113
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
114
- expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
115
- expect(subject.titles).to eq([{"lang"=>"ja", "title"=>"??????????????????????????????"}])
116
- expect(subject.dates).to include({"date"=>"2007", "dateType"=>"Issued"})
117
- expect(subject.publication_year).to eq("2007")
118
- expect(subject.publisher).to eq("The Japanese Society of Physical Fitness and Sports Medicine")
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("relatedIdentifier"=>"1881-4751", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
121
- expect(subject.container).to eq("firstPage"=>"60", "identifier"=>"1881-4751", "identifierType"=>"ISSN", "issue"=>"1", "lastPage"=>"60", "title"=>"Japanese Journal of Physical Fitness and Sports Medicine", "type"=>"Journal", "volume"=>"56")
122
- expect(subject.agency).to eq("crossref")
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 "journal article with RDF for container" do
126
- input = "https://doi.org/10.1163/1937240X-00002096"
127
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1163/1937240x-00002096")
130
- expect(subject.url).to eq("https://academic.oup.com/jcb/article-lookup/doi/10.1163/1937240X-00002096")
131
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Mesquita-Joanes", "givenName"=>"Francesc", "name"=>"Mesquita-Joanes, Francesc", "nameType"=>"Personal")
134
- expect(subject.titles).to eq([{"title"=>"Global distribution of Fabaeformiscandona subacuta: an??exotic??invasive Ostracoda on the Iberian Peninsula?"}])
135
- expect(subject.dates).to include({"date"=>"2012-01-01", "dateType"=>"Issued"})
136
- expect(subject.publication_year).to eq("2012")
137
- expect(subject.publisher).to eq("Oxford University Press (OUP)")
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("relatedIdentifier"=>"1937-240X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
140
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1002/aqc.1122", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
141
- expect(subject.container).to eq("firstPage"=>"949", "identifier"=>"1937-240X", "identifierType"=>"ISSN", "issue"=>"6", "lastPage"=>"961", "title"=>"Journal of Crustacean Biology", "type"=>"Journal", "volume"=>"32")
142
- expect(subject.agency).to eq("crossref")
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 "book chapter with RDF for container" do
146
- input = "10.1007/978-3-642-33191-6_49"
147
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1007/978-3-642-33191-6_49")
150
- expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-33191-6_49")
151
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
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("familyName"=>"Chen", "givenName"=>"Lili", "name"=>"Chen, Lili", "nameType"=>"Personal")
154
- expect(subject.titles).to eq([{"title"=>"Human Body Orientation Estimation in Multiview Scenarios"}])
155
- expect(subject.dates).to eq([{"date"=>"2012", "dateType"=>"Issued"}, {"date"=>"2020-11-24T03:11:32Z", "dateType"=>"Updated"}])
156
- expect(subject.publication_year).to eq("2012")
157
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
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("relatedIdentifier"=>"10.1007/978-3-540-24670-1_3", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
160
- expect(subject.container).to eq("identifier"=>"1611-3349", "identifierType"=>"ISSN", "title"=>"Lecture Notes in Computer Science", "type"=>"Book Series")
161
- expect(subject.agency).to eq("crossref")
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 "posted_content" do
165
- input = "https://doi.org/10.1101/097196"
166
- subject = Briard::Metadata.new(input: input)
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("http://biorxiv.org/lookup/doi/10.1101/097196")
169
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Preprint", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-4060-7360", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Clark, Timothy", "givenName"=>"Timothy", "familyName"=>"Clark")
172
- expect(subject.titles).to eq([{"title"=>"A Data Citation Roadmap for Scholarly Data Repositories"}])
173
- expect(subject.id).to eq("https://doi.org/10.1101/097196")
174
- expect(subject.identifiers).to eq([{"identifier"=>"biorxiv;097196v2", "identifierType"=>"pisa"}])
175
- expect(subject.descriptions.first["description"]).to start_with("This article presents a practical roadmap")
176
- expect(subject.dates).to include({"date"=>"2017-10-09", "dateType"=>"Issued"})
177
- expect(subject.publication_year).to eq("2017")
178
- expect(subject.publisher).to eq("Cold Spring Harbor Laboratory")
179
- expect(subject.agency).to eq("crossref")
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 "peer review" do
183
- input = "https://doi.org/10.7554/elife.55167.sa2"
184
- subject = Briard::Metadata.new(input: input)
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("https://elifesciences.org/articles/55167#sa2")
187
- expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"PeerReview", "resourceTypeGeneral"=>"PeerReview", "ris"=>"JOUR", "schemaOrg"=>"Review")
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("affiliation" => [{"name"=>"Center for Computational Mathematics, Flatiron Institute, New York, United States"}],
190
- "familyName" => "Barnett",
191
- "givenName" => "Alex H",
192
- "name" => "Barnett, Alex H",
193
- "nameType" => "Personal")
194
- expect(subject.titles).to eq([{"title"=>"Author response: SpikeForest, reproducible web-facing ground-truth validation of automated neural spike sorters"}])
195
- expect(subject.id).to eq("https://doi.org/10.7554/elife.55167.sa2")
196
- expect(subject.identifiers).to be_empty
197
- expect(subject.descriptions).to be_empty
198
- expect(subject.dates).to include({"date"=>"2020-05-19", "dateType"=>"Issued"})
199
- expect(subject.publication_year).to eq("2020")
200
- expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
201
- expect(subject.agency).to eq("crossref")
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 "dissertation" do
205
- input = "https://doi.org/10.14264/uql.2020.791"
206
- subject = Briard::Metadata.new(input: input)
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("http://espace.library.uq.edu.au/view/UQ:23a1e74")
209
- expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceType"=>"Dissertation", "resourceTypeGeneral"=>"Dissertation", "ris"=>"THES", "schemaOrg"=>"Thesis")
210
- expect(subject.creators).to eq([{"familyName"=>"Collingwood",
211
- "givenName"=>"Patricia Maree",
212
- "name"=>"Collingwood, Patricia Maree",
213
- "nameIdentifiers"=>
214
- [{"nameIdentifier"=>"https://orcid.org/0000-0003-3086-4443",
215
- "nameIdentifierScheme"=>"ORCID",
216
- "schemeUri"=>"https://orcid.org"}],
217
- "nameType"=>"Personal"}])
218
- 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"}])
219
- expect(subject.id).to eq("https://doi.org/10.14264/uql.2020.791")
220
- expect(subject.identifiers).to be_empty
221
- expect(subject.descriptions).to be_empty
222
- expect(subject.dates).to include({"date"=>"2020-06-08", "dateType"=>"Issued"})
223
- expect(subject.publication_year).to eq("2020")
224
- expect(subject.publisher).to eq("University of Queensland Library")
225
- expect(subject.agency).to eq("crossref")
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 "DOI with SICI DOI" do
229
- input = "https://doi.org/10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2"
230
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1890/0012-9658(2006)87%255b2832:tiopma%255d2.0.co;2")
233
- expect(subject.url).to eq("http://doi.wiley.com/10.1890/0012-9658(2006)87[2832:TIOPMA]2.0.CO;2")
234
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
235
- expect(subject.creators).to eq([{"nameType"=>"Personal", "name"=>"Fenton, A.", "givenName"=>"A.", "familyName"=>"Fenton"}, {"nameType"=>"Personal", "name"=>"Rands, S. A.", "givenName"=>"S. A.", "familyName"=>"Rands"}])
236
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}])
237
- expect(subject.titles).to eq([{"title"=>"THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR???PREY COMMUNITIES"}])
238
- expect(subject.dates).to eq([{"date"=>"2006-11", "dateType"=>"Issued"}, {"date"=>"2019-04-28T13:51:50Z", "dateType"=>"Updated"}])
239
- expect(subject.publication_year).to eq("2006")
240
- expect(subject.publisher).to eq("Wiley")
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("relatedIdentifier"=>"0012-9658", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
243
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1098/rspb.2002.2213", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
244
- expect(subject.container).to eq("firstPage"=>"2832", "identifier"=>"0012-9658", "identifierType"=>"ISSN", "issue"=>"11", "lastPage"=>"2841", "title"=>"Ecology", "type"=>"Journal", "volume"=>"87")
245
- expect(subject.agency).to eq("crossref")
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 "DOI with ORCID ID" do
249
- input = "https://doi.org/10.1155/2012/291294"
250
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1155/2012/291294")
253
- expect(subject.url).to eq("http://www.hindawi.com/journals/pm/2012/291294/")
254
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType"=>"Personal", "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"}])
257
- expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
258
- "rightsIdentifier"=>"cc-by-3.0",
259
- "rightsIdentifierScheme"=>"SPDX",
260
- "rightsUri"=>"https://creativecommons.org/licenses/by/3.0/legalcode",
261
- "schemeUri"=>"https://spdx.org/licenses/"}])
262
- 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"}])
263
- expect(subject.dates).to include({"date"=>"2012", "dateType"=>"Issued"})
264
- expect(subject.publication_year).to eq("2012")
265
- expect(subject.publisher).to eq("Hindawi Limited")
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("relatedIdentifier"=>"2090-1844", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
268
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1378/chest.12-0045", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
269
- expect(subject.container).to eq("firstPage"=>"1", "identifier"=>"2090-1844", "identifierType"=>"ISSN", "lastPage"=>"7", "title"=>"Pulmonary Medicine", "type"=>"Journal", "volume"=>"2012")
270
- expect(subject.agency).to eq("crossref")
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 "date in future" do
274
- input = "https://doi.org/10.1016/j.ejphar.2015.03.018"
275
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1016/j.ejphar.2015.03.018")
278
- expect(subject.identifiers).to eq([{"identifier"=>"S0014299915002332", "identifierType"=>"sequence-number"}])
279
- expect(subject.url).to eq("https://linkinghub.elsevier.com/retrieve/pii/S0014299915002332")
280
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType"=>"Personal", "name"=>"Beck, Sarah E.", "givenName"=>"Sarah E.", "familyName"=>"Beck")
283
- expect(subject.titles).to eq([{"title"=>"Paving the path to HIV neurotherapy: Predicting SIV CNS disease"}])
284
- expect(subject.dates).to include({"date"=>"2015-07", "dateType"=>"Issued"})
285
- expect(subject.publication_year).to eq("2015")
286
- expect(subject.publisher).to eq("Elsevier BV")
287
- expect(subject.related_identifiers).to eq([{"relatedIdentifier"=>"0014-2999", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection"},
288
- {"relatedIdentifier"=>"10.1212/01.wnl.0000287431.88658.8b",
289
- "relatedIdentifierType"=>"DOI",
290
- "relationType"=>"References"},
291
- {"relatedIdentifier"=>"10.1182/blood-2010-09-308684",
292
- "relatedIdentifierType"=>"DOI",
293
- "relationType"=>"References"},
294
- {"relatedIdentifier"=>"10.1007/s13365-015-0313-7",
295
- "relatedIdentifierType"=>"DOI",
296
- "relationType"=>"References"},
297
- {"relatedIdentifier"=>"10.1016/j.jneuroim.2006.04.017",
298
- "relatedIdentifierType"=>"DOI",
299
- "relationType"=>"References"},
300
- {"relatedIdentifier"=>"10.1086/514001",
301
- "relatedIdentifierType"=>"DOI",
302
- "relationType"=>"References"},
303
- {"relatedIdentifier"=>"10.1002/ana.410310403",
304
- "relatedIdentifierType"=>"DOI",
305
- "relationType"=>"References"},
306
- {"relatedIdentifier"=>"10.1093/infdis/jir214",
307
- "relatedIdentifierType"=>"DOI",
308
- "relationType"=>"References"},
309
- {"relatedIdentifier"=>"10.1097/qad.0b013e32836010bd",
310
- "relatedIdentifierType"=>"DOI",
311
- "relationType"=>"References"},
312
- {"relatedIdentifier"=>"10.1261/rna.036863.112",
313
- "relatedIdentifierType"=>"DOI",
314
- "relationType"=>"References"},
315
- {"relatedIdentifier"=>"10.4103/0019-5359.107389",
316
- "relatedIdentifierType"=>"DOI",
317
- "relationType"=>"References"},
318
- {"relatedIdentifier"=>"10.3233/jad-2008-14103",
319
- "relatedIdentifierType"=>"DOI",
320
- "relationType"=>"References"},
321
- {"relatedIdentifier"=>"10.1126/science.287.5455.959",
322
- "relatedIdentifierType"=>"DOI",
323
- "relationType"=>"References"},
324
- {"relatedIdentifier"=>"10.1097/01.qai.0000165799.59322.f5",
325
- "relatedIdentifierType"=>"DOI",
326
- "relationType"=>"References"},
327
- {"relatedIdentifier"=>"10.1002/ana.410420503",
328
- "relatedIdentifierType"=>"DOI",
329
- "relationType"=>"References"},
330
- {"relatedIdentifier"=>"10.1089/ars.2012.4834",
331
- "relatedIdentifierType"=>"DOI",
332
- "relationType"=>"References"},
333
- {"relatedIdentifier"=>"10.1111/j.1600-0404.1987.tb05458.x",
334
- "relatedIdentifierType"=>"DOI",
335
- "relationType"=>"References"},
336
- {"relatedIdentifier"=>"10.1097/00002030-198905000-00006",
337
- "relatedIdentifierType"=>"DOI",
338
- "relationType"=>"References"},
339
- {"relatedIdentifier"=>"10.1002/ana.410200304",
340
- "relatedIdentifierType"=>"DOI",
341
- "relationType"=>"References"},
342
- {"relatedIdentifier"=>"10.1186/1742-6405-2-6",
343
- "relatedIdentifierType"=>"DOI",
344
- "relationType"=>"References"},
345
- {"relatedIdentifier"=>"10.1111/j.1600-0684.1993.tb00649.x",
346
- "relatedIdentifierType"=>"DOI",
347
- "relationType"=>"References"},
348
- {"relatedIdentifier"=>"10.1186/1742-6405-7-15",
349
- "relatedIdentifierType"=>"DOI",
350
- "relationType"=>"References"},
351
- {"relatedIdentifier"=>"10.1212/wnl.0b013e318200d727",
352
- "relatedIdentifierType"=>"DOI",
353
- "relationType"=>"References"},
354
- {"relatedIdentifier"=>"10.1089/aid.2006.0292",
355
- "relatedIdentifierType"=>"DOI",
356
- "relationType"=>"References"},
357
- {"relatedIdentifier"=>"10.1126/science.3646751",
358
- "relatedIdentifierType"=>"DOI",
359
- "relationType"=>"References"},
360
- {"relatedIdentifier"=>"10.1002/ajmg.b.32071",
361
- "relatedIdentifierType"=>"DOI",
362
- "relationType"=>"References"},
363
- {"relatedIdentifier"=>"10.1186/1756-6606-6-40",
364
- "relatedIdentifierType"=>"DOI",
365
- "relationType"=>"References"},
366
- {"relatedIdentifier"=>"10.1086/344938",
367
- "relatedIdentifierType"=>"DOI",
368
- "relationType"=>"References"},
369
- {"relatedIdentifier"=>"10.1128/jvi.71.8.6055-6060.1997",
370
- "relatedIdentifierType"=>"DOI",
371
- "relationType"=>"References"},
372
- {"relatedIdentifier"=>"10.1016/j.jneuroim.2004.08.031",
373
- "relatedIdentifierType"=>"DOI",
374
- "relationType"=>"References"},
375
- {"relatedIdentifier"=>"10.1371/journal.pone.0003603",
376
- "relatedIdentifierType"=>"DOI",
377
- "relationType"=>"References"},
378
- {"relatedIdentifier"=>"10.1093/jnen/61.1.85",
379
- "relatedIdentifierType"=>"DOI",
380
- "relationType"=>"References"},
381
- {"relatedIdentifier"=>"10.1097/qad.0b013e32832c4af0",
382
- "relatedIdentifierType"=>"DOI",
383
- "relationType"=>"References"},
384
- {"relatedIdentifier"=>"10.3389/fgene.2013.00083",
385
- "relatedIdentifierType"=>"DOI",
386
- "relationType"=>"References"},
387
- {"relatedIdentifier"=>"10.1080/13550280390194109",
388
- "relatedIdentifierType"=>"DOI",
389
- "relationType"=>"References"},
390
- {"relatedIdentifier"=>"10.1002/ana.410420504",
391
- "relatedIdentifierType"=>"DOI",
392
- "relationType"=>"References"},
393
- {"relatedIdentifier"=>"10.1001/archneur.61.11.1687",
394
- "relatedIdentifierType"=>"DOI",
395
- "relationType"=>"References"},
396
- {"relatedIdentifier"=>"10.1212/01.wnl.0000277635.05973.55",
397
- "relatedIdentifierType"=>"DOI",
398
- "relationType"=>"References"},
399
- {"relatedIdentifier"=>"10.1038/nmeth.3014",
400
- "relatedIdentifierType"=>"DOI",
401
- "relationType"=>"References"},
402
- {"relatedIdentifier"=>"10.1097/qai.0000000000000048",
403
- "relatedIdentifierType"=>"DOI",
404
- "relationType"=>"References"},
405
- {"relatedIdentifier"=>"10.1093/infdis/jit278",
406
- "relatedIdentifierType"=>"DOI",
407
- "relationType"=>"References"},
408
- {"relatedIdentifier"=>"10.1007/s13365-014-0283-1",
409
- "relatedIdentifierType"=>"DOI",
410
- "relationType"=>"References"},
411
- {"relatedIdentifier"=>"10.1097/00002030-199905280-00010",
412
- "relatedIdentifierType"=>"DOI",
413
- "relationType"=>"References"},
414
- {"relatedIdentifier"=>"10.1097/qco.0b013e32834ef586",
415
- "relatedIdentifierType"=>"DOI",
416
- "relationType"=>"References"},
417
- {"relatedIdentifier"=>"10.4049/jimmunol.169.6.3438",
418
- "relatedIdentifierType"=>"DOI",
419
- "relationType"=>"References"},
420
- {"relatedIdentifier"=>"10.2174/1389200024605082",
421
- "relatedIdentifierType"=>"DOI",
422
- "relationType"=>"References"},
423
- {"relatedIdentifier"=>"10.1126/science.1546323",
424
- "relatedIdentifierType"=>"DOI",
425
- "relationType"=>"References"},
426
- {"relatedIdentifier"=>"10.1016/s1474-4422(14)70137-1",
427
- "relatedIdentifierType"=>"DOI",
428
- "relationType"=>"References"},
429
- {"relatedIdentifier"=>"10.1016/j.jns.2009.06.043",
430
- "relatedIdentifierType"=>"DOI",
431
- "relationType"=>"References"},
432
- {"relatedIdentifier"=>"10.1128/jvi.77.16.9029-9040.2003",
433
- "relatedIdentifierType"=>"DOI",
434
- "relationType"=>"References"},
435
- {"relatedIdentifier"=>"10.1002/jcp.24254",
436
- "relatedIdentifierType"=>"DOI",
437
- "relationType"=>"References"},
438
- {"relatedIdentifier"=>"10.1128/jvi.76.1.292-302.2002",
439
- "relatedIdentifierType"=>"DOI",
440
- "relationType"=>"References"},
441
- {"relatedIdentifier"=>"10.1182/blood-2012-03-414706",
442
- "relatedIdentifierType"=>"DOI",
443
- "relationType"=>"References"},
444
- {"relatedIdentifier"=>"10.1016/j.jneuroim.2013.11.004",
445
- "relatedIdentifierType"=>"DOI",
446
- "relationType"=>"References"},
447
- {"relatedIdentifier"=>"10.1038/nrg3198",
448
- "relatedIdentifierType"=>"DOI",
449
- "relationType"=>"References"},
450
- {"relatedIdentifier"=>"10.1016/s0140-6736(96)10178-1",
451
- "relatedIdentifierType"=>"DOI",
452
- "relationType"=>"References"},
453
- {"relatedIdentifier"=>"10.1128/jvi.00366-11",
454
- "relatedIdentifierType"=>"DOI",
455
- "relationType"=>"References"},
456
- {"relatedIdentifier"=>"10.1007/s13365-011-0053-2",
457
- "relatedIdentifierType"=>"DOI",
458
- "relationType"=>"References"},
459
- {"relatedIdentifier"=>"10.1083/jcb.201211138",
460
- "relatedIdentifierType"=>"DOI",
461
- "relationType"=>"References"},
462
- {"relatedIdentifier"=>"10.1111/j.1600-0684.2011.00475.x",
463
- "relatedIdentifierType"=>"DOI",
464
- "relationType"=>"References"},
465
- {"relatedIdentifier"=>"10.1038/srep05915",
466
- "relatedIdentifierType"=>"DOI",
467
- "relationType"=>"References"},
468
- {"relatedIdentifier"=>"10.1096/fj.09-143503",
469
- "relatedIdentifierType"=>"DOI",
470
- "relationType"=>"References"},
471
- {"relatedIdentifier"=>"10.1542/peds.111.2.e168",
472
- "relatedIdentifierType"=>"DOI",
473
- "relationType"=>"References"},
474
- {"relatedIdentifier"=>"10.2174/1566524013363555",
475
- "relatedIdentifierType"=>"DOI",
476
- "relationType"=>"References"},
477
- {"relatedIdentifier"=>"10.1126/science.283.5403.857",
478
- "relatedIdentifierType"=>"DOI",
479
- "relationType"=>"References"},
480
- {"relatedIdentifier"=>"10.1212/01.wnl.0000145763.68284.15",
481
- "relatedIdentifierType"=>"DOI",
482
- "relationType"=>"References"},
483
- {"relatedIdentifier"=>"10.1002/ana.410230727",
484
- "relatedIdentifierType"=>"DOI",
485
- "relationType"=>"References"},
486
- {"relatedIdentifier"=>"10.1186/1742-4690-10-95",
487
- "relatedIdentifierType"=>"DOI",
488
- "relationType"=>"References"},
489
- {"relatedIdentifier"=>"10.1128/jvi.79.2.684-695.2005",
490
- "relatedIdentifierType"=>"DOI",
491
- "relationType"=>"References"},
492
- {"relatedIdentifier"=>"10.1111/j.1600-0684.2005.00126.x",
493
- "relatedIdentifierType"=>"DOI",
494
- "relationType"=>"References"},
495
- {"relatedIdentifier"=>"10.1186/1756-8722-6-6",
496
- "relatedIdentifierType"=>"DOI",
497
- "relationType"=>"References"},
498
- {"relatedIdentifier"=>"10.1016/j.jmb.2013.12.017",
499
- "relatedIdentifierType"=>"DOI",
500
- "relationType"=>"References"},
501
- {"relatedIdentifier"=>"10.1590/s0037-86822012000600002",
502
- "relatedIdentifierType"=>"DOI",
503
- "relationType"=>"References"},
504
- {"relatedIdentifier"=>"10.1080/13550280390218715",
505
- "relatedIdentifierType"=>"DOI",
506
- "relationType"=>"References"},
507
- {"relatedIdentifier"=>"10.1111/j.1468-1331.2012.03777.x",
508
- "relatedIdentifierType"=>"DOI",
509
- "relationType"=>"References"},
510
- {"relatedIdentifier"=>"10.3233/jad-2010-090649",
511
- "relatedIdentifierType"=>"DOI",
512
- "relationType"=>"References"},
513
- {"relatedIdentifier"=>"10.1080/13550280500516484",
514
- "relatedIdentifierType"=>"DOI",
515
- "relationType"=>"References"},
516
- {"relatedIdentifier"=>"10.1080/13550280390218751",
517
- "relatedIdentifierType"=>"DOI",
518
- "relationType"=>"References"},
519
- {"relatedIdentifier"=>"10.1189/jlb.0811394",
520
- "relatedIdentifierType"=>"DOI",
521
- "relationType"=>"References"},
522
- {"relatedIdentifier"=>"10.1007/s11481-011-9330-3",
523
- "relatedIdentifierType"=>"DOI",
524
- "relationType"=>"References"},
525
- {"relatedIdentifier"=>"10.1080/13550280802074539",
526
- "relatedIdentifierType"=>"DOI",
527
- "relationType"=>"References"},
528
- {"relatedIdentifier"=>"10.1086/650743",
529
- "relatedIdentifierType"=>"DOI",
530
- "relationType"=>"References"},
531
- {"relatedIdentifier"=>"10.1371/journal.pone.0008129",
532
- "relatedIdentifierType"=>"DOI",
533
- "relationType"=>"References"},
534
- {"relatedIdentifier"=>"10.1128/jvi.80.10.5074-5077.2006",
535
- "relatedIdentifierType"=>"DOI",
536
- "relationType"=>"References"},
537
- {"relatedIdentifier"=>"10.1186/1742-2094-10-62",
538
- "relatedIdentifierType"=>"DOI",
539
- "relationType"=>"References"},
540
- {"relatedIdentifier"=>"10.1086/323478",
541
- "relatedIdentifierType"=>"DOI",
542
- "relationType"=>"References"},
543
- {"relatedIdentifier"=>"10.1128/jvi.73.12.10480-10488.1999",
544
- "relatedIdentifierType"=>"DOI",
545
- "relationType"=>"References"},
546
- {"relatedIdentifier"=>"10.1111/hiv.12134",
547
- "relatedIdentifierType"=>"DOI",
548
- "relationType"=>"References"}])
549
- expect(subject.container).to eq("firstPage"=>"303", "identifier"=>"0014-2999", "identifierType"=>"ISSN", "lastPage"=>"312", "title"=>"European Journal of Pharmacology", "type"=>"Journal", "volume"=>"759")
550
- expect(subject.agency).to eq("crossref")
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 "vor with url" do
554
- input = "https://doi.org/10.1038/hdy.2013.26"
555
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1038/hdy.2013.26")
558
- expect(subject.url).to eq("http://www.nature.com/articles/hdy201326")
559
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Gross", "givenName"=>"J B", "name"=>"Gross, J B", "nameType"=>"Personal")
562
- 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"}])
563
- expect(subject.dates).to include({"date"=>"2013-04-10", "dateType"=>"Issued"})
564
- expect(subject.publication_year).to eq("2013")
565
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
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("relatedIdentifier"=>"1365-2540", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
568
- expect(subject.container).to eq("firstPage"=>"122", "identifier"=>"1365-2540", "identifierType"=>"ISSN", "issue"=>"2", "lastPage"=>"130", "title"=>"Heredity", "type"=>"Journal", "volume"=>"111")
569
- expect(subject.agency).to eq("crossref")
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 "dataset" do
573
- input = "10.2210/pdb4hhb/pdb"
574
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.2210/pdb4hhb/pdb")
577
- expect(subject.url).to eq("https://www.wwpdb.org/pdb?id=pdb_00004hhb")
578
- expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"SaComponent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType"=>"Personal", "name"=>"Fermi, G.", "givenName"=>"G.", "familyName"=>"Fermi")
581
- expect(subject.titles).to eq([{"title"=>"THE CRYSTAL STRUCTURE OF HUMAN DEOXYHAEMOGLOBIN AT 1.74 ANGSTROMS RESOLUTION"}])
582
- expect(subject.descriptions).to eq([{"description"=>"x-ray diffraction structure", "descriptionType"=>"Other"}])
583
- expect(subject.dates).to include({"date"=>"1984-07-17", "dateType"=>"Issued"})
584
- expect(subject.publication_year).to eq("1984")
585
- expect(subject.publisher).to eq("Worldwide Protein Data Bank")
586
- expect(subject.agency).to eq("crossref")
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 "component" do
590
- input = "10.1371/journal.pmed.0030277.g001"
591
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1371/journal.pmed.0030277.g001")
594
- expect(subject.url).to eq("https://dx.plos.org/10.1371/journal.pmed.0030277.g001")
595
- expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"SaComponent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
596
- expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
597
- expect(subject.titles).to eq([{"title"=>":(unav)"}])
598
- expect(subject.descriptions).to be_empty
599
- expect(subject.dates).to eq([{"date"=>"2015-10-20", "dateType"=>"Issued"}, {"date"=>"2018-10-19T21:13:42Z", "dateType"=>"Updated"}])
600
- expect(subject.publication_year).to eq("2015")
601
- expect(subject.publisher).to eq("Public Library of Science (PLoS)")
602
- expect(subject.agency).to eq("crossref")
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 "dataset usda" do
606
- input = "https://doi.org/10.2737/RDS-2018-0001"
607
- subject = Briard::Metadata.new(input: input)
608
- #expect(subject.valid?).to be true
609
- expect(subject.id).to eq("https://doi.org/10.2737/rds-2018-0001")
610
- expect(subject.url).to eq("https://www.fs.usda.gov/rds/archive/Catalog/RDS-2018-0001")
611
- expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"dataset", "resourceType"=>"Dataset", "resourceTypeGeneral"=>"Dataset", "ris"=>"DATA", "schemaOrg"=>"Dataset")
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("familyName" => "Ribic","givenName" => "Christine A.","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")
614
- expect(subject.titles).to eq([{"title"=>"Fledging times of grassland birds"}])
615
- expect(subject.descriptions).to be_empty
616
- expect(subject.dates).to eq([{"date"=>"2017-08-09", "dateType"=>"Issued"}, {"date"=>"2021-07-01T22:10:21Z", "dateType"=>"Updated"}])
617
- expect(subject.publication_year).to eq("2017")
618
- expect(subject.publisher).to eq("USDA Forest Service")
619
- expect(subject.agency).to eq("crossref")
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 "book chapter" do
623
- input = "https://doi.org/10.1007/978-3-662-46370-3_13"
624
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1007/978-3-662-46370-3_13")
627
- expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-662-46370-3_13")
628
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
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("nameType"=>"Personal", "name"=>"Diercks, Ronald L.", "givenName"=>"Ronald L.", "familyName"=>"Diercks")
631
- expect(subject.titles).to eq([{"title"=>"Clinical Symptoms and Physical Examinations"}])
632
- expect(subject.dates).to eq([{"date"=>"2015", "dateType"=>"Issued"}, {"date"=>"2015-04-14T02:31:13Z", "dateType"=>"Updated"}])
633
- expect(subject.publication_year).to eq("2015")
634
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
635
- expect(subject.agency).to eq("crossref")
636
- expect(subject.container["type"]).to eq("Book")
637
- expect(subject.container["title"]).to eq("Shoulder Stiffness")
638
- expect(subject.container["firstPage"]).to eq("155")
639
- expect(subject.container["lastPage"]).to eq("158")
640
- expect(subject.container["identifiers"]).to eq([{"identifier"=>"978-3-662-46369-7", "identifierType"=>"ISBN"}])
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 "another book chapter" do
644
- input = "https://doi.org/10.1007/978-3-319-75889-3_1"
645
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1007/978-3-319-75889-3_1")
648
- expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-319-75889-3_1")
649
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
650
- expect(subject.creators).to eq([{"familyName"=>"Jones", "givenName"=>"Hunter M.", "name"=>"Jones, Hunter M.", "nameType"=>"Personal"}])
651
- expect(subject.titles).to eq([{"title"=>"Climate Change and Increasing Risk of Extreme Heat"}])
652
- expect(subject.dates).to include({"date"=>"2018", "dateType"=>"Issued"})
653
- expect(subject.publication_year).to eq("2018")
654
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
655
- expect(subject.agency).to eq("crossref")
656
- expect(subject.container["type"]).to eq("Book Series")
657
- expect(subject.container["title"]).to eq("SpringerBriefs in Medical Earth Sciences")
658
- expect(subject.container["identifier"]).to eq("2523-3629")
659
- expect(subject.container["identifierType"]).to eq("ISSN")
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 "yet another book chapter" do
663
- input = "https://doi.org/10.4018/978-1-4666-1891-6.ch004"
664
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.4018/978-1-4666-1891-6.ch004")
667
- expect(subject.url).to eq("http://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-1891-6.ch004")
668
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
669
- expect(subject.creators).to eq([{"affiliation"=>[{"name"=>"Universit?? de Lyon, France"}], "familyName"=>"Bichot", "givenName"=>"Charles-Edmond", "name"=>"Bichot, Charles-Edmond", "nameType"=>"Personal"}])
670
- expect(subject.titles).to eq([{"title"=>"Unsupervised and Supervised Image Segmentation Using Graph Partitioning"}])
671
- expect(subject.dates).to eq([{"date"=>"2012-08-08", "dateType"=>"Issued"}, {"date"=>"2019-07-02T13:17:21Z", "dateType"=>"Updated"}])
672
- expect(subject.publication_year).to eq("2012")
673
- expect(subject.publisher).to eq("IGI Global")
674
- expect(subject.agency).to eq("crossref")
675
- expect(subject.container["type"]).to eq("Book")
676
- expect(subject.container["title"]).to eq("Graph-Based Methods in Computer Vision")
677
- expect(subject.container["firstPage"]).to eq("72")
678
- expect(subject.container["lastPage"]).to eq("94")
679
- expect(subject.container["identifiers"]).to eq([{"identifier"=>"9781466618916", "identifierType"=>"ISBN"}])
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 "missing creator" do
683
- input = "https://doi.org/10.3390/publications6020015"
684
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.3390/publications6020015")
687
- expect(subject.url).to eq("https://www.mdpi.com/2304-6775/6/2/15")
688
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
689
- expect(subject.creators).to eq([{"familyName"=>"Kohls",
690
- "givenName"=>"Alexander",
691
- "name"=>"Kohls, Alexander",
692
- "nameIdentifiers"=>
693
- [{"nameIdentifier"=>"https://orcid.org/0000-0002-3836-8885",
694
- "nameIdentifierScheme"=>"ORCID",
695
- "schemeUri"=>"https://orcid.org"}],
696
- "nameType"=>"Personal"},
697
- {"familyName"=>"Mele",
698
- "givenName"=>"Salvatore",
699
- "name"=>"Mele, Salvatore",
700
- "nameIdentifiers"=>
701
- [{"nameIdentifier"=>"https://orcid.org/0000-0003-0762-2235",
702
- "nameIdentifierScheme"=>"ORCID",
703
- "schemeUri"=>"https://orcid.org"}],
704
- "nameType"=>"Personal"}])
705
- 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"}])
706
- expect(subject.dates).to eq([{"date"=>"2018-04-09", "dateType"=>"Issued"}, {"date"=>"2021-07-22T10:05:05Z", "dateType"=>"Updated"}])
707
- expect(subject.publication_year).to eq("2018")
708
- expect(subject.publisher).to eq("MDPI AG")
709
- expect(subject.agency).to eq("crossref")
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 "book" do
713
- input = "https://doi.org/10.1017/9781108348843"
714
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1017/9781108348843")
717
- expect(subject.identifiers).to eq([{"identifier"=>"9781108348843", "identifierType"=>"ISBN"}])
718
- expect(subject.url).to eq("https://www.cambridge.org/core/product/identifier/9781108348843/type/book")
719
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
720
- expect(subject.creators).to eq([{"familyName"=>"Leung", "givenName"=>"Vincent S.", "name"=>"Leung, Vincent S.", "nameType"=>"Personal"}])
721
- expect(subject.titles).to eq([{"title"=>"The Politics of the Past in Early China"}])
722
- expect(subject.dates).to eq([{"date"=>"2019-07-01", "dateType"=>"Issued"}, {"date"=>"2021-01-08T19:18:57Z", "dateType"=>"Updated"}])
723
- expect(subject.publication_year).to eq("2019")
724
- expect(subject.publisher).to eq("Cambridge University Press (CUP)")
725
- expect(subject.agency).to eq("crossref")
726
- expect(subject.date_registered).to eq("2019-07-06T10:19:22Z")
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 "another book" do
730
- input = "https://doi.org/10.2973/odp.proc.ir.180.2000"
731
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.2973/odp.proc.ir.180.2000")
734
- expect(subject.url).to eq("http://www-odp.tamu.edu/publications/180_IR/180TOC.HTM")
735
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
736
- expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
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("contributorType"=>"Editor", "familyName"=>"Taylor", "givenName"=>"B.", "name"=>"Taylor, B.", "nameType"=>"Personal")
739
- expect(subject.titles).to eq([{"title"=>"Proceedings of the Ocean Drilling Program, 180 Initial Reports"}])
740
- expect(subject.dates).to eq([{"date"=>"2000-02-04", "dateType"=>"Issued"}, {"date"=>"2009-02-02T21:19:43Z", "dateType"=>"Updated"}])
741
- expect(subject.publication_year).to eq("2000")
742
- expect(subject.publisher).to eq("International Ocean Discovery Program (IODP)")
743
- expect(subject.agency).to eq("crossref")
744
- expect(subject.date_registered).to eq("2006-10-17T20:17:44Z")
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 "yet another book" do
748
- input = "https://doi.org/10.1029/ar035"
749
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1029/ar035")
752
- expect(subject.identifiers).to eq([{"identifier"=>"0-87590-181-6", "identifierType"=>"ISBN"}])
753
- expect(subject.url).to eq("http://doi.wiley.com/10.1029/AR035")
754
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
755
- expect(subject.creators).to eq([{"familyName"=>"McGinnis", "givenName"=>"Richard Frank", "name"=>"McGinnis, Richard Frank", "nameType"=>"Personal"}])
756
- expect(subject.titles).to eq([{"title"=>"Biogeography of Lanternfishes (Myctophidae) South of 30??S"}])
757
- expect(subject.dates).to eq([{"date"=>"1982", "dateType"=>"Issued"}, {"date"=>"2021-12-04T00:09:54Z", "dateType"=>"Updated"}])
758
- expect(subject.publication_year).to eq("1982")
759
- expect(subject.publisher).to eq("Wiley")
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("relatedIdentifier"=>"10.1016/0031-0182(70)90103-3", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
762
- expect(subject.container).to eq("identifier"=>"0066-4634", "identifierType"=>"ISSN", "title"=>"Antarctic Research Series", "type"=>"Book Series", "volume"=>"35")
763
- expect(subject.agency).to eq("crossref")
764
- expect(subject.date_registered).to be_nil
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 "mEDRA" do
768
- input = "https://doi.org/10.3280/ecag2018-001005"
769
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.3280/ecag2018-001005")
772
- expect(subject.identifiers).to eq([{"identifier"=>"5", "identifierType"=>"article_number"}])
773
- expect(subject.url).to eq("http://www.francoangeli.it/riviste/Scheda_Riviste.asp?IDArticolo=61645")
774
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Oh", "givenName"=>"Sohae Eve", "name"=>"Oh, Sohae Eve", "nameType"=>"Personal")
777
- expect(subject.titles).to eq([{"title"=>"Substitutability between organic and conventional poultry products and organic price premiums"}])
778
- expect(subject.dates).to include({"date"=>"2018-05", "dateType"=>"Issued"})
779
- expect(subject.publication_year).to eq("2018")
780
- expect(subject.publisher).to eq("Franco Angeli")
781
- expect(subject.agency).to eq("crossref")
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 "KISTI" do
785
- input = "https://doi.org/10.5012/bkcs.2013.34.10.2889"
786
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.5012/bkcs.2013.34.10.2889")
789
- expect(subject.identifiers).to eq([{"identifier"=>"JCGMCS_2013_v34n10_2889", "identifierType"=>"Publisher ID"}])
790
- expect(subject.url).to eq("http://koreascience.or.kr/journal/view.jsp?kj=JCGMCS&py=2013&vnc=v34n10&sp=2889")
791
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Huang", "givenName"=>"Guimei", "name"=>"Huang, Guimei", "nameType"=>"Personal")
794
- expect(subject.titles).to eq([{"title"=>"Synthesis, Crystal Structure and Theoretical Calculation of a Novel Nickel(II) Complex with Dibromotyrosine and 1,10-Phenanthroline"}])
795
- expect(subject.dates).to eq([{"date"=>"2013-10-20", "dateType"=>"Issued"}, {"date"=>"2016-12-14T21:40:52Z", "dateType"=>"Updated"}])
796
- expect(subject.publication_year).to eq("2013")
797
- expect(subject.publisher).to eq("Korean Chemical Society")
798
- expect(subject.agency).to eq("KISTI")
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 "JaLC" do
802
- input = "https://doi.org/10.1241/johokanri.39.979"
803
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1241/johokanri.39.979")
806
- expect(subject.url).to eq("http://joi.jlc.jst.go.jp/JST.JSTAGE/johokanri/39.979?from=CrossRef")
807
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
808
- expect(subject.creators).to eq([{"familyName"=>"KUSUMOTO", "givenName"=>"Hiroyuki", "name"=>"KUSUMOTO, Hiroyuki", "nameType"=>"Personal"}])
809
- expect(subject.titles).to eq([{"title"=>"Utilizing the Internet. 12 Series. Future of the Internet."}])
810
- expect(subject.dates).to eq([{"date"=>"1997", "dateType"=>"Issued"}, {"date"=>"2020-03-06T06:44:36Z", "dateType"=>"Updated"}])
811
- expect(subject.publication_year).to eq("1997")
812
- expect(subject.publisher).to eq("Japan Science and Technology Agency (JST)")
813
- expect(subject.agency).to eq("JaLC")
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 "OP" do
817
- input = "https://doi.org/10.2903/j.efsa.2018.5239"
818
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.2903/j.efsa.2018.5239")
821
- expect(subject.url).to eq("http://doi.wiley.com/10.2903/j.efsa.2018.5239")
822
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Younes", "givenName"=>"Maged", "name"=>"Younes, Maged", "nameType"=>"Personal")
825
- expect(subject.titles).to eq([{"title"=>"Scientific opinion on the safety of green tea catechins"}])
826
- expect(subject.dates).to include({"date"=>"2018-04", "dateType"=>"Issued"})
827
- expect(subject.publication_year).to eq("2018")
828
- expect(subject.publisher).to eq("Wiley")
829
- expect(subject.agency).to eq("OP")
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 "multiple titles" do
833
- input = "https://doi.org/10.4000/dms.865"
834
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.4000/dms.865")
837
- expect(subject.url).to eq("http://journals.openedition.org/dms/865")
838
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
839
- expect(subject.creators).to eq([{"familyName"=>"Peraya", "givenName"=>"Daniel", "name"=>"Peraya, Daniel", "nameType"=>"Personal"}])
840
- expect(subject.titles).to eq([{"title"=>"Distances, absence, proximit??s et pr??sences??: des concepts en d??placement"}, {"title"=>"Distance(s), proximity and presence(s): evolving concepts"}])
841
- expect(subject.dates).to include({"date"=>"2014-12-14", "dateType"=>"Issued"})
842
- expect(subject.publication_year).to eq("2014")
843
- expect(subject.publisher).to eq("OpenEdition")
844
- expect(subject.agency).to eq("crossref")
845
- expect(subject.date_registered).to be_nil
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 "multiple titles with missing" do
849
- input = "https://doi.org/10.1186/1471-2164-7-187"
850
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1186/1471-2164-7-187")
853
- expect(subject.url).to eq("https://bmcgenomics.biomedcentral.com/articles/10.1186/1471-2164-7-187")
854
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
855
- expect(subject.creators).to eq([{"familyName"=>"Myers",
856
- "givenName"=>"Chad L",
857
- "name"=>"Myers, Chad L",
858
- "nameType"=>"Personal"},
859
- {"familyName"=>"Barrett",
860
- "givenName"=>"Daniel R",
861
- "name"=>"Barrett, Daniel R",
862
- "nameType"=>"Personal"},
863
- {"familyName"=>"Hibbs",
864
- "givenName"=>"Matthew A",
865
- "name"=>"Hibbs, Matthew A",
866
- "nameType"=>"Personal"},
867
- {"familyName"=>"Huttenhower",
868
- "givenName"=>"Curtis",
869
- "name"=>"Huttenhower, Curtis",
870
- "nameType"=>"Personal"},
871
- {"familyName"=>"Troyanskaya",
872
- "givenName"=>"Olga G",
873
- "name"=>"Troyanskaya, Olga G",
874
- "nameType"=>"Personal"}])
875
- expect(subject.titles).to eq([{"title"=>"Finding function: evaluation methods for functional genomic data"}])
876
- expect(subject.dates).to include({"date"=>"2006-07-25", "dateType"=>"Issued"})
877
- expect(subject.publication_year).to eq("2006")
878
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
879
- expect(subject.agency).to eq("crossref")
880
- expect(subject.date_registered).to eq("2021-08-31T17:31:49Z")
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 "markup" do
884
- input = "https://doi.org/10.1098/rspb.2017.0132"
885
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1098/rspb.2017.0132")
888
- expect(subject.url).to eq("https://royalsocietypublishing.org/doi/10.1098/rspb.2017.0132")
889
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("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" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1406-0680", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],"nameType"=>"Personal")
892
- 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>"}])
893
- expect(subject.dates).to include({"date"=>"2017-05-24", "dateType"=>"Issued"})
894
- expect(subject.publication_year).to eq("2017")
895
- expect(subject.publisher).to eq("The Royal Society")
896
- expect(subject.agency).to eq("crossref")
897
- expect(subject.date_registered).to eq("2021-02-14T10:36:45Z")
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 "empty given name" do
901
- input = "https://doi.org/10.1111/J.1865-1682.2010.01171.X"
902
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1111/j.1865-1682.2010.01171.x")
905
- expect(subject.url).to eq("https://onlinelibrary.wiley.com/doi/10.1111/j.1865-1682.2010.01171.x")
906
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Ehtisham-ul-Haq", "givenName"=>"???", "name"=>"Ehtisham-ul-Haq, ???", "nameType"=>"Personal")
909
- expect(subject.titles).to eq([{"title"=>"Serological Evidence of Brucella abortus Prevalence in Punjab Province, Pakistan - A Cross-Sectional Study"}])
910
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}])
911
- expect(subject.dates).to eq([{"date"=>"2010-12", "dateType"=>"Issued"}, {"date"=>"2021-07-07T02:32:16Z", "dateType"=>"Updated"}])
912
- expect(subject.publication_year).to eq("2010")
913
- expect(subject.publisher).to eq("Wiley")
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 "invalid date" do
917
- input = "https://doi.org/10.1055/s-0039-1690894"
918
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1055/s-0039-1690894")
921
- expect(subject.identifiers).to eq([{"identifier"=>"s-0039-1690894", "identifierType"=>"sequence-number"}])
922
- expect(subject.url).to eq("http://www.thieme-connect.de/DOI/DOI?10.1055/s-0039-1690894")
923
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("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"}],
926
- "familyName" => "Ma",
927
- "givenName" => "Jun-An",
928
- "name" => "Ma, Jun-An",
929
- "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-3902-6799", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],
930
- "nameType" => "Personal")
931
- 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"}])
932
- expect(subject.dates).to eq([{"date"=>"2020-04-08", "dateType"=>"Issued"}, {"date"=>"2020-06-16T23:13:36Z", "dateType"=>"Updated"}])
933
- expect(subject.publication_year).to eq("2020")
934
- expect(subject.publisher).to eq("Georg Thieme Verlag KG")
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 "journal article with" do
938
- input = "https://doi.org/10.1111/nph.14619"
939
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1111/nph.14619")
942
- expect(subject.url).to eq("https://onlinelibrary.wiley.com/doi/10.1111/nph.14619")
943
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType"=>"Personal", "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"}])
946
- expect(subject.titles).to eq([{"title"=>"Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway"}])
947
- expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}, {"rightsUri"=>"http://onlinelibrary.wiley.com/termsAndConditions#vor"}])
948
- expect(subject.dates).to include({"date"=>"2018-05", "dateType"=>"Issued"})
949
- expect(subject.publication_year).to eq("2018")
950
- expect(subject.publisher).to eq("Wiley")
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("relatedIdentifier"=>"0028-646X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
953
- expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1002/pmic.201400530", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
954
- expect(subject.container).to eq("firstPage"=>"929", "identifier"=>"0028-646X", "identifierType"=>"ISSN", "issue"=>"3", "lastPage"=>"935", "title"=>"New Phytologist", "type"=>"Journal", "volume"=>"218")
955
- expect(subject.agency).to eq("crossref")
956
- expect(subject.date_registered).to eq("2018-08-03T11:45:49Z")
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 "author literal" do
960
- input = "https://doi.org/10.1038/ng.3834"
961
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1038/ng.3834")
964
- expect(subject.url).to eq("http://www.nature.com/articles/ng.3834")
965
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("name"=>"GTEx Consortium", "nameType"=>"Organizational")
968
- expect(subject.titles).to eq([{"title"=>"The impact of structural variation on human gene expression"}])
969
- expect(subject.dates).to include({"date"=>"2017-04-03", "dateType"=>"Issued"})
970
- expect(subject.publication_year).to eq("2017")
971
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
972
- expect(subject.agency).to eq("crossref")
973
- expect(subject.date_registered).to eq("2019-11-02T09:30:06Z")
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 "affiliation is space" do
977
- input = "https://doi.org/10.1177/0042098011428175"
978
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1177/0042098011428175")
981
- expect(subject.url).to eq("http://journals.sagepub.com/doi/10.1177/0042098011428175")
982
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("affiliation"=>[{"name"=>"??"}], "familyName"=>"Petrovici", "givenName"=>"Norbert", "name"=>"Petrovici, Norbert", "nameType"=>"Personal")
985
- expect(subject.titles).to eq([{"title"=>"Workers and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation"}])
986
- expect(subject.dates).to include({"date"=>"2011-12-22", "dateType"=>"Issued"})
987
- expect(subject.publication_year).to eq("2011")
988
- expect(subject.publisher).to eq("SAGE Publications")
989
- expect(subject.agency).to eq("crossref")
990
- expect(subject.date_registered).to eq("2021-05-16T02:02:38Z")
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 "multiple issn" do
994
- input = "https://doi.org/10.1007/978-3-642-34922-5_19"
995
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1007/978-3-642-34922-5_19")
998
- expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-34922-5_19")
999
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
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("familyName"=>"Razib", "givenName"=>"Ali", "name"=>"Razib, Ali", "nameType"=>"Personal")
1002
- expect(subject.titles).to eq([{"title"=>"Log-Domain Arithmetic for High-Speed Fuzzy Control on a Field-Programmable Gate Array"}])
1003
- expect(subject.dates).to include({"date"=>"2013", "dateType"=>"Issued"})
1004
- expect(subject.publication_year).to eq("2013")
1005
- expect(subject.publisher).to eq("Springer Science and Business Media LLC")
1006
- expect(subject.container).to eq("identifier"=>"1860-0808", "identifierType"=>"ISSN", "title"=>"Studies in Fuzziness and Soft Computing", "type"=>"Book Series")
1007
- expect(subject.agency).to eq("crossref")
1008
- expect(subject.date_registered).to eq("2012-10-31T16:15:44Z")
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 "article id as page number" do
1012
- input = "https://doi.org/10.1103/physrevlett.120.117701"
1013
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.1103/physrevlett.120.117701")
1016
- expect(subject.url).to eq("https://link.aps.org/doi/10.1103/PhysRevLett.120.117701")
1017
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("familyName"=>"Marrazzo", "givenName"=>"Antimo", "name"=>"Marrazzo, Antimo", "nameType"=>"Personal")
1020
- expect(subject.titles).to eq([{"title"=>"Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator"}])
1021
- expect(subject.dates).to include({"date"=>"2018-03-13", "dateType"=>"Issued"})
1022
- expect(subject.publication_year).to eq("2018")
1023
- expect(subject.publisher).to eq("American Physical Society (APS)")
1024
- expect(subject.container).to eq("firstPage" => "117701", "identifier"=>"1079-7114", "identifierType"=>"ISSN", "issue"=>"11", "title"=>"Physical Review Letters", "type"=>"Journal", "volume"=>"120")
1025
- expect(subject.agency).to eq("crossref")
1026
- expect(subject.date_registered).to eq("2018-03-13T15:18:48Z")
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 "posted content copernicus" do
1030
- input = "https://doi.org/10.5194/CP-2020-95"
1031
- subject = Briard::Metadata.new(input: input)
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("https://cp.copernicus.org/preprints/cp-2020-95/cp-2020-95.pdf")
1034
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Preprint", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
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("nameType" => "Personal", "familyName" => "Shao",
1037
- "givenName" => "Jun",
1038
- "name" => "Shao, Jun",
1039
- "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0001-6130-6474", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}])
1040
- expect(subject.titles).to eq([{"title"=>"The Atmospheric Bridge Communicated the ??&lt;sup&gt;13&lt;/sup&gt;C Decline during the Last Deglaciation to the Global Upper Ocean"}])
1041
- expect(subject.id).to eq("https://doi.org/10.5194/cp-2020-95")
1042
- expect(subject.identifiers).to be_empty
1043
- expect(subject.descriptions.first["description"]).to start_with("Abstract. During the early last glacial termination")
1044
- expect(subject.dates).to include({"date"=>"2020-07-28", "dateType"=>"Issued"})
1045
- expect(subject.publication_year).to eq("2020")
1046
- expect(subject.publisher).to eq("Copernicus GmbH")
1047
- expect(subject.agency).to eq("crossref")
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 ??&lt;sup&gt;13&lt;/sup&gt;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 "book oup" do
1051
- input = "10.1093/oxfordhb/9780198746140.013.5"
1052
- subject = Briard::Metadata.new(input: input)
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("https://academic.oup.com/edited-volume/28081/chapter/212116415")
1055
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
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("familyName"=>"Clayton", "givenName"=>"Barbra R.", "name"=>"Clayton, Barbra R.", "nameType"=>"Personal")
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("contributorType"=>"Editor", "familyName"=>"Cozort", "givenName"=>"Daniel", "name"=>"Cozort, Daniel", "nameType"=>"Personal")
1060
- expect(subject.titles).to eq([{"title"=>"The Changing Way of the Bodhisattva"}])
1061
- expect(subject.id).to eq("https://doi.org/10.1093/oxfordhb/9780198746140.013.5")
1062
- expect(subject.identifiers).to be_empty
1063
- expect(subject.descriptions.first["description"]).to start_with("This chapter explores the nature of the connections")
1064
- expect(subject.dates).to include({"date"=>"2018-04-05", "dateType"=>"Issued"})
1065
- expect(subject.publication_year).to eq("2018")
1066
- expect(subject.publisher).to eq("Oxford University Press (OUP)")
1067
- expect(subject.agency).to eq("crossref")
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 "report osti" do
1071
- input = "10.2172/972169"
1072
- subject = Briard::Metadata.new(input: input)
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("http://www.osti.gov/servlets/purl/972169-1QXROM/")
1075
- expect(subject.types).to eq("bibtex"=>"techreport", "citeproc"=>"report", "resourceType"=>"Report", "resourceTypeGeneral"=>"Report", "ris"=>"RPRT", "schemaOrg"=>"Report")
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("familyName"=>"Denholm", "givenName"=>"P.", "name"=>"Denholm, P.", "nameType"=>"Personal")
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([{"title"=>"Role of Energy Storage with Renewable Electricity Generation"}])
1080
- expect(subject.id).to eq("https://doi.org/10.2172/972169")
1081
- expect(subject.identifiers).to eq( [{"identifier"=>"NREL/TP-6A2-47187", "identifierType"=>"report-number"}, {"identifier"=>"972169", "identifierType"=>"sequence-number"}])
1082
- expect(subject.descriptions).to be_empty
1083
- expect(subject.dates).to include({"date"=>"2010-01-01", "dateType"=>"Issued"})
1084
- expect(subject.publication_year).to eq("2010")
1085
- expect(subject.publisher).to eq("Office of Scientific and Technical Information (OSTI)")
1086
- expect(subject.agency).to eq("crossref")
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 "journal issue" do
1090
- input = "https://doi.org/10.6002/ect.2015.0371"
1091
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.6002/ect.2015.0371")
1094
- expect(subject.url).to eq("http://ectrx.org/forms/ectrxcontentshow.php?doi_id=10.6002/ect.2015.0371")
1095
- expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"JournalIssue", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"PublicationIssue")
1096
- expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
1097
- expect(subject.titles).to eq([{"title"=>":(unav)"}])
1098
- expect(subject.dates).to eq([{"date"=>"2018-10", "dateType"=>"Issued"}, {"date"=>"2018-10-03T12:09:12Z", "dateType"=>"Updated"}])
1099
- expect(subject.publication_year).to eq("2018")
1100
- expect(subject.publisher).to eq("Baskent University")
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("relatedIdentifier"=>"2146-8427", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
1103
- expect(subject.container).to eq("identifier"=>"2146-8427", "identifierType"=>"ISSN", "issue"=>"5", "title"=>"Experimental and Clinical Transplantation", "type"=>"Journal", "volume"=>"16")
1104
- expect(subject.agency).to eq("crossref")
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 "not found error" do
1108
- input = "https://doi.org/10.7554/elife.01567x"
1109
- subject = Briard::Metadata.new(input: input)
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("https://doi.org/10.7554/elife.01567x")
1112
- expect(subject.doi).to eq("10.7554/elife.01567x")
1113
- expect(subject.agency).to eq("crossref")
1114
- expect(subject.state).to eq("not_found")
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