briard 2.4.2 → 2.6.1

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 (83) 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/.gitignore +1 -0
  5. data/.rubocop.yml +144 -620
  6. data/.rubocop_todo.yml +76 -0
  7. data/CHANGELOG.md +18 -0
  8. data/Gemfile +2 -0
  9. data/Gemfile.lock +43 -9
  10. data/Rakefile +1 -1
  11. data/{bolognese.gemspec → briard.gemspec} +46 -39
  12. data/lib/briard/array.rb +2 -2
  13. data/lib/briard/author_utils.rb +79 -71
  14. data/lib/briard/cli.rb +12 -13
  15. data/lib/briard/crossref_utils.rb +73 -61
  16. data/lib/briard/datacite_utils.rb +132 -106
  17. data/lib/briard/doi_utils.rb +10 -10
  18. data/lib/briard/metadata.rb +96 -106
  19. data/lib/briard/metadata_utils.rb +87 -78
  20. data/lib/briard/readers/bibtex_reader.rb +65 -65
  21. data/lib/briard/readers/cff_reader.rb +88 -70
  22. data/lib/briard/readers/citeproc_reader.rb +90 -84
  23. data/lib/briard/readers/codemeta_reader.rb +68 -50
  24. data/lib/briard/readers/crosscite_reader.rb +2 -2
  25. data/lib/briard/readers/crossref_reader.rb +249 -210
  26. data/lib/briard/readers/datacite_json_reader.rb +3 -3
  27. data/lib/briard/readers/datacite_reader.rb +225 -189
  28. data/lib/briard/readers/npm_reader.rb +49 -42
  29. data/lib/briard/readers/ris_reader.rb +82 -80
  30. data/lib/briard/readers/schema_org_reader.rb +182 -159
  31. data/lib/briard/string.rb +1 -1
  32. data/lib/briard/utils.rb +4 -4
  33. data/lib/briard/version.rb +3 -1
  34. data/lib/briard/whitelist_scrubber.rb +11 -4
  35. data/lib/briard/writers/bibtex_writer.rb +14 -8
  36. data/lib/briard/writers/cff_writer.rb +33 -26
  37. data/lib/briard/writers/codemeta_writer.rb +19 -15
  38. data/lib/briard/writers/csv_writer.rb +6 -4
  39. data/lib/briard/writers/datacite_json_writer.rb +8 -2
  40. data/lib/briard/writers/jats_writer.rb +33 -28
  41. data/lib/briard/writers/rdf_xml_writer.rb +1 -1
  42. data/lib/briard/writers/ris_writer.rb +30 -18
  43. data/lib/briard/writers/turtle_writer.rb +1 -1
  44. data/lib/briard.rb +6 -6
  45. data/rubocop.sarif +0 -0
  46. data/spec/array_spec.rb +5 -5
  47. data/spec/author_utils_spec.rb +151 -132
  48. data/spec/datacite_utils_spec.rb +135 -83
  49. data/spec/doi_utils_spec.rb +168 -164
  50. data/spec/find_from_format_spec.rb +69 -69
  51. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/onlies_keep_specific_tags.yml +65 -0
  52. data/spec/fixtures/vcr_cassettes/Briard_Metadata/sanitize/removes_a_tags.yml +65 -0
  53. data/spec/metadata_spec.rb +91 -90
  54. data/spec/readers/bibtex_reader_spec.rb +43 -38
  55. data/spec/readers/cff_reader_spec.rb +165 -153
  56. data/spec/readers/citeproc_reader_spec.rb +45 -40
  57. data/spec/readers/codemeta_reader_spec.rb +128 -115
  58. data/spec/readers/crosscite_reader_spec.rb +34 -24
  59. data/spec/readers/crossref_reader_spec.rb +1098 -939
  60. data/spec/readers/datacite_json_reader_spec.rb +53 -40
  61. data/spec/readers/datacite_reader_spec.rb +1541 -1337
  62. data/spec/readers/npm_reader_spec.rb +48 -43
  63. data/spec/readers/ris_reader_spec.rb +53 -47
  64. data/spec/readers/schema_org_reader_spec.rb +329 -267
  65. data/spec/spec_helper.rb +6 -5
  66. data/spec/utils_spec.rb +371 -347
  67. data/spec/writers/bibtex_writer_spec.rb +143 -143
  68. data/spec/writers/cff_writer_spec.rb +96 -90
  69. data/spec/writers/citation_writer_spec.rb +34 -33
  70. data/spec/writers/citeproc_writer_spec.rb +226 -224
  71. data/spec/writers/codemeta_writer_spec.rb +18 -16
  72. data/spec/writers/crosscite_writer_spec.rb +91 -73
  73. data/spec/writers/crossref_writer_spec.rb +99 -91
  74. data/spec/writers/csv_writer_spec.rb +70 -70
  75. data/spec/writers/datacite_json_writer_spec.rb +78 -68
  76. data/spec/writers/datacite_writer_spec.rb +417 -322
  77. data/spec/writers/jats_writer_spec.rb +177 -161
  78. data/spec/writers/rdf_xml_writer_spec.rb +68 -63
  79. data/spec/writers/ris_writer_spec.rb +162 -162
  80. data/spec/writers/schema_org_writer_spec.rb +329 -294
  81. data/spec/writers/turtle_writer_spec.rb +47 -47
  82. metadata +242 -166
  83. data/.github/workflows/release.yml +0 -47
@@ -3,188 +3,207 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Briard::Metadata, vcr: true do
6
- let(:input) { "https://doi.org/10.1101/097196" }
6
+ subject { described_class.new(input: input, from: 'crossref') }
7
7
 
8
- subject { Briard::Metadata.new(input: input, from: "crossref") }
8
+ let(:input) { 'https://doi.org/10.1101/097196' }
9
9
 
10
- context "is_personal_name?" do
11
- it "has type organization" do
12
- author = {"email"=>"info@ucop.edu", "name"=>"University of California, Santa Barbara", "role"=>{"namespace"=>"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode", "roleCode"=>"copyrightHolder"}, "nameType"=>"Organizational" }
10
+ context 'is_personal_name?' do
11
+ it 'has type organization' do
12
+ author = { 'email' => 'info@ucop.edu', 'name' => 'University of California, Santa Barbara',
13
+ 'role' => { 'namespace' => 'http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode', 'roleCode' => 'copyrightHolder' }, 'nameType' => 'Organizational' }
13
14
  expect(subject.is_personal_name?(author)).to be false
14
15
  end
15
16
 
16
- it "has id" do
17
- author = {"id"=>"http://orcid.org/0000-0003-1419-2405", "givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner" }
17
+ it 'has id' do
18
+ author = { 'id' => 'http://orcid.org/0000-0003-1419-2405', 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' }
18
19
  expect(subject.is_personal_name?(author)).to be true
19
20
  end
20
21
 
21
- it "has orcid id" do
22
- author = { "creatorName"=>"Fenner, Martin", "givenName"=>"Martin", "familyName"=>"Fenner", "nameIdentifier"=>{"schemeURI"=>"http://orcid.org/", "nameIdentifierScheme"=>"ORCID", "__content__"=>"0000-0003-1419-2405"}}
22
+ it 'has orcid id' do
23
+ author = { 'creatorName' => 'Fenner, Martin', 'givenName' => 'Martin', 'familyName' => 'Fenner',
24
+ 'nameIdentifier' => { 'schemeURI' => 'http://orcid.org/', 'nameIdentifierScheme' => 'ORCID', '__content__' => '0000-0003-1419-2405' } }
23
25
  expect(subject.is_personal_name?(author)).to be true
24
26
  end
25
- it "has family name" do
26
- author = {"givenName"=>"Martin", "familyName"=>"Fenner", "name"=>"Martin Fenner" }
27
+
28
+ it 'has family name' do
29
+ author = { 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' }
27
30
  expect(subject.is_personal_name?(author)).to be true
28
31
  end
29
32
 
30
- it "has comma" do
31
- author = {"name"=>"Fenner, Martin" }
33
+ it 'has comma' do
34
+ author = { 'name' => 'Fenner, Martin' }
32
35
  expect(subject.is_personal_name?(author)).to be true
33
36
  end
34
37
 
35
- it "has known given name" do
36
- author = {"name"=>"Martin Fenner" }
38
+ it 'has known given name' do
39
+ author = { 'name' => 'Martin Fenner' }
37
40
  expect(subject.is_personal_name?(author)).to be true
38
41
  end
39
42
 
40
- it "has no info" do
41
- author = {"name"=>"M Fenner" }
43
+ it 'has no info' do
44
+ author = { 'name' => 'M Fenner' }
42
45
  expect(subject.is_personal_name?(author)).to be false
43
46
  end
44
47
  end
45
48
 
46
- context "get_one_author" do
47
- it "has familyName" do
48
- input = "https://doi.org/10.5438/4K3M-NYVG"
49
- subject = Briard::Metadata.new(input: input, from: "datacite")
50
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
51
- response = subject.get_one_author(meta.dig("creators", "creator"))
52
- expect(response).to eq("nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1419-2405", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Fenner, Martin", "givenName"=>"Martin", "familyName"=>"Fenner")
53
- end
54
-
55
- it "has name in sort-order" do
56
- input = "https://doi.org/10.5061/dryad.8515"
57
- subject = Briard::Metadata.new(input: input, from: "datacite")
58
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
59
- response = subject.get_one_author(meta.dig("creators", "creator").first)
60
- expect(response).to eq("nameType"=>"Personal", "name"=>"Ollomo, Benjamin", "givenName"=>"Benjamin", "familyName"=>"Ollomo", "nameIdentifiers" => [], "affiliation" => [{"affiliationIdentifier"=>"https://ror.org/01wyqb997", "affiliationIdentifierScheme"=>"ROR", "name"=>"Centre International de Recherches Médicales de Franceville"}])
61
- end
62
-
63
- it "has name in display-order" do
64
- input = "https://doi.org/10.5281/ZENODO.48440"
65
- subject = Briard::Metadata.new(input: input, from: "datacite")
66
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
67
- response = subject.get_one_author(meta.dig("creators", "creator"))
68
- expect(response).to eq("nameType"=>"Personal", "name"=>"Garza, Kristian", "givenName"=>"Kristian", "familyName"=>"Garza", "nameIdentifiers" => [], "affiliation" => [])
69
- end
70
-
71
- it "has name in display-order with ORCID" do
72
- input = "https://doi.org/10.6084/M9.FIGSHARE.4700788"
73
- subject = Briard::Metadata.new(input: input, from: "datacite")
74
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
75
- response = subject.get_one_author(meta.dig("creators", "creator"))
76
- expect(response).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-4881-1606", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Bedini, Andrea", "givenName"=>"Andrea", "familyName"=>"Bedini", "affiliation" => [])
77
- end
78
-
79
- it "has name in Thai" do
80
- input = "https://doi.org/10.14457/KMITL.res.2006.17"
81
- subject = Briard::Metadata.new(input: input, from: "datacite")
82
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
83
- response = subject.get_one_author(meta.dig("creators", "creator"))
84
- expect(response).to eq("name"=>"กัญจนา แซ่เตียว", "nameIdentifiers" => [], "affiliation" => [])
85
- end
86
-
87
- it "multiple author names in one field" do
88
- input = "https://doi.org/10.7910/dvn/eqtqyo"
89
- subject = Briard::Metadata.new(input: input, from: "datacite")
90
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
91
- response = subject.get_authors(meta.dig("creators", "creator"))
92
- expect(response).to eq([{"name" => "Enos, Ryan (Harvard University); Fowler, Anthony (University Of Chicago); Vavreck, Lynn (UCLA)", "nameIdentifiers" => [], "affiliation" => []}])
93
- end
94
-
95
- it "hyper-authorship" do
96
- input = "https://doi.org/10.17182/HEPDATA.77274.V1"
97
- subject = Briard::Metadata.new(input: input, from: "datacite")
98
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
99
- response = subject.get_authors(meta.dig("creators", "creator"))
100
- expect(response).to eq( [{"affiliation"=>[], "name"=>"ALICE Collaboration", "nameIdentifiers"=>[], "nameType"=>"Organizational"}])
101
- end
102
-
103
- it "is organization" do
104
- author = {"email"=>"info@ucop.edu", "creatorName"=> { "__content__" => "University of California, Santa Barbara", "nameType" => "Organizational" }, "role"=>{"namespace"=>"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode", "roleCode"=>"copyrightHolder"} }
49
+ context 'get_one_author' do
50
+ it 'has familyName' do
51
+ input = 'https://doi.org/10.5438/4K3M-NYVG'
52
+ subject = described_class.new(input: input, from: 'datacite')
53
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
54
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
55
+ expect(response).to eq(
56
+ 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-1419-2405',
57
+ 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Fenner, Martin', 'givenName' => 'Martin', 'familyName' => 'Fenner'
58
+ )
59
+ end
60
+
61
+ it 'has name in sort-order' do
62
+ input = 'https://doi.org/10.5061/dryad.8515'
63
+ subject = described_class.new(input: input, from: 'datacite')
64
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
65
+ response = subject.get_one_author(meta.dig('creators', 'creator').first)
66
+ expect(response).to eq('nameType' => 'Personal', 'name' => 'Ollomo, Benjamin',
67
+ 'givenName' => 'Benjamin', 'familyName' => 'Ollomo', 'nameIdentifiers' => [], 'affiliation' => [{ 'affiliationIdentifier' => 'https://ror.org/01wyqb997', 'affiliationIdentifierScheme' => 'ROR', 'name' => 'Centre International de Recherches Médicales de Franceville' }])
68
+ end
69
+
70
+ it 'has name in display-order' do
71
+ input = 'https://doi.org/10.5281/ZENODO.48440'
72
+ subject = described_class.new(input: input, from: 'datacite')
73
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
74
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
75
+ expect(response).to eq('nameType' => 'Personal', 'name' => 'Garza, Kristian',
76
+ 'givenName' => 'Kristian', 'familyName' => 'Garza', 'nameIdentifiers' => [], 'affiliation' => [])
77
+ end
78
+
79
+ it 'has name in display-order with ORCID' do
80
+ input = 'https://doi.org/10.6084/M9.FIGSHARE.4700788'
81
+ subject = described_class.new(input: input, from: 'datacite')
82
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
83
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
84
+ expect(response).to eq('nameType' => 'Personal',
85
+ 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-4881-1606', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'name' => 'Bedini, Andrea', 'givenName' => 'Andrea', 'familyName' => 'Bedini', 'affiliation' => [])
86
+ end
87
+
88
+ it 'has name in Thai' do
89
+ input = 'https://doi.org/10.14457/KMITL.res.2006.17'
90
+ subject = described_class.new(input: input, from: 'datacite')
91
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
92
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
93
+ expect(response).to eq('name' => 'กัญจนา แซ่เตียว', 'nameIdentifiers' => [],
94
+ 'affiliation' => [])
95
+ end
96
+
97
+ it 'multiple author names in one field' do
98
+ input = 'https://doi.org/10.7910/dvn/eqtqyo'
99
+ subject = described_class.new(input: input, from: 'datacite')
100
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
101
+ response = subject.get_authors(meta.dig('creators', 'creator'))
102
+ expect(response).to eq([{
103
+ 'name' => 'Enos, Ryan (Harvard University); Fowler, Anthony (University Of Chicago); Vavreck, Lynn (UCLA)', 'nameIdentifiers' => [], 'affiliation' => []
104
+ }])
105
+ end
106
+
107
+ it 'hyper-authorship' do
108
+ input = 'https://doi.org/10.17182/HEPDATA.77274.V1'
109
+ subject = described_class.new(input: input, from: 'datacite')
110
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
111
+ response = subject.get_authors(meta.dig('creators', 'creator'))
112
+ expect(response).to eq([{ 'affiliation' => [], 'name' => 'ALICE Collaboration',
113
+ 'nameIdentifiers' => [], 'nameType' => 'Organizational' }])
114
+ end
115
+
116
+ it 'is organization' do
117
+ author = { 'email' => 'info@ucop.edu',
118
+ 'creatorName' => { '__content__' => 'University of California, Santa Barbara', 'nameType' => 'Organizational' }, 'role' => { 'namespace' => 'http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode', 'roleCode' => 'copyrightHolder' } }
105
119
  response = subject.get_one_author(author)
106
- expect(response).to eq("nameType"=>"Organizational", "name"=>"University Of California, Santa Barbara", "nameIdentifiers" => [], "affiliation" => [])
120
+ expect(response).to eq('nameType' => 'Organizational',
121
+ 'name' => 'University Of California, Santa Barbara', 'nameIdentifiers' => [], 'affiliation' => [])
107
122
  end
108
123
 
109
- it "name with affiliation" do
110
- input = "10.11588/DIGLIT.6130"
111
- subject = Briard::Metadata.new(input: input, from: "datacite")
112
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
113
- response = subject.get_one_author(meta.dig("creators", "creator"))
114
- expect(response).to eq("nameType"=>"Organizational", "name"=>"Dr. Störi, Kunstsalon", "nameIdentifiers" => [], "affiliation" => [])
124
+ it 'name with affiliation' do
125
+ input = '10.11588/DIGLIT.6130'
126
+ subject = described_class.new(input: input, from: 'datacite')
127
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
128
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
129
+ expect(response).to eq('nameType' => 'Organizational', 'name' => 'Dr. Störi, Kunstsalon',
130
+ 'nameIdentifiers' => [], 'affiliation' => [])
115
131
  end
116
132
 
117
- it "name with affiliation and country" do
118
- input = "10.16910/jemr.9.1.2"
119
- subject = Briard::Metadata.new(input: input, from: "crossref")
133
+ it 'name with affiliation and country' do
134
+ input = '10.16910/jemr.9.1.2'
135
+ subject = described_class.new(input: input, from: 'crossref')
120
136
  response = subject.get_one_author(subject.creators.first)
121
- expect(response).to eq("familyName" => "Eraslan",
122
- "givenName" => "Sukru",
123
- "name" => "Eraslan, Sukru")
137
+ expect(response).to eq('familyName' => 'Eraslan',
138
+ 'givenName' => 'Sukru',
139
+ 'name' => 'Eraslan, Sukru')
124
140
  end
125
141
 
126
- it "name with role" do
127
- input = "10.14463/GBV:873056442"
128
- subject = Briard::Metadata.new(input: input, from: "datacite")
129
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
130
- response = subject.get_one_author(meta.dig("creators", "creator"))
131
- expect(response).to eq("affiliation" => [],
132
- "name" => "Unknown",
133
- "nameIdentifiers" => [])
142
+ it 'name with role' do
143
+ input = '10.14463/GBV:873056442'
144
+ subject = described_class.new(input: input, from: 'datacite')
145
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
146
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
147
+ expect(response).to eq('affiliation' => [], 'name' => 'Unknown', 'nameIdentifiers' => [])
134
148
  end
135
149
 
136
- it "multiple name_identifier" do
137
- input = "10.24350/CIRM.V.19028803"
138
- subject = Briard::Metadata.new(input: input, from: "datacite")
139
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
140
- response = subject.get_one_author(meta.dig("creators", "creator"))
141
- expect(response).to eq("nameType"=>"Personal", "name"=>"Dubos, Thomas", "givenName"=>"Thomas", "familyName"=>"Dubos", "affiliation" => [{"name"=>"École Polytechnique Laboratoire de Météorologie Dynamique"}], "nameIdentifiers" => [{"nameIdentifier"=>"http://isni.org/isni/0000 0003 5752 6882", "nameIdentifierScheme"=>"ISNI", "schemeUri"=>"http://isni.org/isni/"}, {"nameIdentifier"=>"https://orcid.org/0000-0003-4514-4211", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}])
150
+ it 'multiple name_identifier' do
151
+ input = '10.24350/CIRM.V.19028803'
152
+ subject = described_class.new(input: input, from: 'datacite')
153
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
154
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
155
+ expect(response).to eq('nameType' => 'Personal', 'name' => 'Dubos, Thomas',
156
+ 'givenName' => 'Thomas', 'familyName' => 'Dubos', 'affiliation' => [{ 'name' => 'École Polytechnique Laboratoire de Météorologie Dynamique' }], 'nameIdentifiers' => [{ 'nameIdentifier' => 'http://isni.org/isni/0000 0003 5752 6882', 'nameIdentifierScheme' => 'ISNI', 'schemeUri' => 'http://isni.org/isni/' }, { 'nameIdentifier' => 'https://orcid.org/0000-0003-4514-4211', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }])
142
157
  end
143
158
 
144
- it "nameType organizational" do
145
- input = fixture_path + 'gtex.xml'
146
- subject = Briard::Metadata.new(input: input, from: "datacite")
147
- meta = Maremma.from_xml(subject.raw).fetch("resource", {})
148
- response = subject.get_one_author(meta.dig("creators", "creator"))
149
- expect(response).to eq("nameType"=>"Organizational", "name"=>"The GTEx Consortium", "nameIdentifiers" => [], "affiliation" => [])
159
+ it 'nameType organizational' do
160
+ input = "#{fixture_path}gtex.xml"
161
+ subject = described_class.new(input: input, from: 'datacite')
162
+ meta = Maremma.from_xml(subject.raw).fetch('resource', {})
163
+ response = subject.get_one_author(meta.dig('creators', 'creator'))
164
+ expect(response).to eq('nameType' => 'Organizational', 'name' => 'The GTEx Consortium',
165
+ 'nameIdentifiers' => [], 'affiliation' => [])
150
166
  end
151
167
 
152
- it "only familyName and givenName" do
153
- input = "https://doi.pangaea.de/10.1594/PANGAEA.836178"
154
- subject = Briard::Metadata.new(input: input, from: "schema_org")
155
- expect(subject.creators.first).to eq("nameType" => "Personal", "name"=>"Johansson, Emma", "givenName"=>"Emma", "familyName"=>"Johansson")
168
+ it 'only familyName and givenName' do
169
+ input = 'https://doi.pangaea.de/10.1594/PANGAEA.836178'
170
+ subject = described_class.new(input: input, from: 'schema_org')
171
+ expect(subject.creators.first).to eq('nameType' => 'Personal', 'name' => 'Johansson, Emma',
172
+ 'givenName' => 'Emma', 'familyName' => 'Johansson')
156
173
  end
157
174
  end
158
175
 
159
- context "authors_as_string" do
160
- let(:author_with_organization) { [{"type"=>"Person",
161
- "id"=>"http://orcid.org/0000-0003-0077-4738",
162
- "name"=>"Matt Jones"},
163
- {"type"=>"Person",
164
- "id"=>"http://orcid.org/0000-0002-2192-403X",
165
- "name"=>"Peter Slaughter"},
166
- {"type"=>"Organization",
167
- "id"=>"http://orcid.org/0000-0002-3957-2474",
168
- "name"=>"University of California, Santa Barbara"}] }
169
-
170
- it "author" do
176
+ context 'authors_as_string' do
177
+ let(:author_with_organization) do
178
+ [{ 'type' => 'Person',
179
+ 'id' => 'http://orcid.org/0000-0003-0077-4738',
180
+ 'name' => 'Matt Jones' },
181
+ { 'type' => 'Person',
182
+ 'id' => 'http://orcid.org/0000-0002-2192-403X',
183
+ 'name' => 'Peter Slaughter' },
184
+ { 'type' => 'Organization',
185
+ 'id' => 'http://orcid.org/0000-0002-3957-2474',
186
+ 'name' => 'University of California, Santa Barbara' }]
187
+ end
188
+
189
+ it 'author' do
171
190
  response = subject.authors_as_string(subject.creators)
172
- expect(response).to eq("Fenner, Martin and Crosas, Merc?? and Grethe, Jeffrey and Kennedy, David and Hermjakob, Henning and Rocca-Serra, Philippe and Durand, Gustavo and Berjon, Robin and Karcher, Sebastian and Martone, Maryann and Clark, Timothy")
191
+ expect(response).to eq('Fenner, Martin and Crosas, Merc?? and Grethe, Jeffrey and Kennedy, David and Hermjakob, Henning and Rocca-Serra, Philippe and Durand, Gustavo and Berjon, Robin and Karcher, Sebastian and Martone, Maryann and Clark, Timothy')
173
192
  end
174
193
 
175
- it "single author" do
194
+ it 'single author' do
176
195
  response = subject.authors_as_string(subject.creators.first)
177
- expect(response).to eq("Fenner, Martin")
196
+ expect(response).to eq('Fenner, Martin')
178
197
  end
179
198
 
180
- it "no author" do
199
+ it 'no author' do
181
200
  response = subject.authors_as_string(nil)
182
- expect(response).to be_nil
201
+ expect(response.nil?).to be(true)
183
202
  end
184
203
 
185
- it "with organization" do
204
+ it 'with organization' do
186
205
  response = subject.authors_as_string(author_with_organization)
187
- expect(response).to eq("Matt Jones and Peter Slaughter and {University of California, Santa Barbara}")
206
+ expect(response).to eq('Matt Jones and Peter Slaughter and {University of California, Santa Barbara}')
188
207
  end
189
208
  end
190
209
  end