briard 2.4.2 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
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 +18 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +40 -6
  9. data/Rakefile +1 -1
  10. data/{bolognese.gemspec → briard.gemspec} +46 -39
  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 +242 -166
  81. data/.github/workflows/release.yml +0 -47
@@ -3,312 +3,316 @@
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 "doi resolver" do
11
- it "doi" do
12
- doi = "10.5061/DRYAD.8515"
10
+ context 'doi resolver' do
11
+ it 'doi' do
12
+ doi = '10.5061/DRYAD.8515'
13
13
  response = subject.doi_resolver(doi)
14
- expect(response).to eq("https://doi.org/")
14
+ expect(response).to eq('https://doi.org/')
15
15
  end
16
16
 
17
- it "doi with protocol" do
18
- doi = "doi:10.5061/DRYAD.8515"
17
+ it 'doi with protocol' do
18
+ doi = 'doi:10.5061/DRYAD.8515'
19
19
  response = subject.doi_resolver(doi)
20
- expect(response).to eq("https://doi.org/")
20
+ expect(response).to eq('https://doi.org/')
21
21
  end
22
22
 
23
- it "https url" do
24
- doi = "https://doi.org/10.5061/dryad.8515"
23
+ it 'https url' do
24
+ doi = 'https://doi.org/10.5061/dryad.8515'
25
25
  response = subject.doi_resolver(doi)
26
- expect(response).to eq("https://doi.org/")
26
+ expect(response).to eq('https://doi.org/')
27
27
  end
28
28
 
29
- it "dx.doi.org url" do
30
- doi = "http://dx.doi.org/10.5061/dryad.8515"
29
+ it 'dx.doi.org url' do
30
+ doi = 'http://dx.doi.org/10.5061/dryad.8515'
31
31
  response = subject.doi_resolver(doi)
32
- expect(response).to eq("https://doi.org/")
32
+ expect(response).to eq('https://doi.org/')
33
33
  end
34
34
 
35
- it "stage resolver" do
36
- doi = "https://handle.stage.datacite.org/10.5061/dryad.8515"
35
+ it 'stage resolver' do
36
+ doi = 'https://handle.stage.datacite.org/10.5061/dryad.8515'
37
37
  response = subject.doi_resolver(doi)
38
- expect(response).to eq("https://handle.stage.datacite.org/")
38
+ expect(response).to eq('https://handle.stage.datacite.org/')
39
39
  end
40
40
 
41
- it "stage resolver http" do
42
- doi = "http://handle.stage.datacite.org/10.5061/dryad.8515"
41
+ it 'stage resolver http' do
42
+ doi = 'http://handle.stage.datacite.org/10.5061/dryad.8515'
43
43
  response = subject.doi_resolver(doi)
44
- expect(response).to eq("https://handle.stage.datacite.org/")
44
+ expect(response).to eq('https://handle.stage.datacite.org/')
45
45
  end
46
46
 
47
- it "force stage resolver" do
48
- doi = "https://doi.org/10.5061/dryad.8515"
47
+ it 'force stage resolver' do
48
+ doi = 'https://doi.org/10.5061/dryad.8515'
49
49
  response = subject.doi_resolver(doi, sandbox: true)
50
- expect(response).to eq("https://handle.stage.datacite.org/")
50
+ expect(response).to eq('https://handle.stage.datacite.org/')
51
51
  end
52
52
  end
53
53
 
54
- context "doi_api_url" do
55
- it "doi" do
56
- doi = "10.5061/DRYAD.8515"
54
+ context 'doi_api_url' do
55
+ it 'doi' do
56
+ doi = '10.5061/DRYAD.8515'
57
57
  response = subject.doi_api_url(doi)
58
- expect(response).to eq("https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client")
58
+ expect(response).to eq('https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client')
59
59
  end
60
60
 
61
- it "doi with protocol" do
62
- doi = "doi:10.5061/DRYAD.8515"
61
+ it 'doi with protocol' do
62
+ doi = 'doi:10.5061/DRYAD.8515'
63
63
  response = subject.doi_api_url(doi)
64
- expect(response).to eq("https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client")
64
+ expect(response).to eq('https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client')
65
65
  end
66
66
 
67
- it "https url" do
68
- doi = "https://doi.org/10.5061/dryad.8515"
67
+ it 'https url' do
68
+ doi = 'https://doi.org/10.5061/dryad.8515'
69
69
  response = subject.doi_api_url(doi)
70
- expect(response).to eq("https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client")
70
+ expect(response).to eq('https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client')
71
71
  end
72
72
 
73
- it "dx.doi.org url" do
74
- doi = "http://dx.doi.org/10.5061/dryad.8515"
73
+ it 'dx.doi.org url' do
74
+ doi = 'http://dx.doi.org/10.5061/dryad.8515'
75
75
  response = subject.doi_api_url(doi)
76
- expect(response).to eq("https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client")
76
+ expect(response).to eq('https://api.datacite.org/dois/10.5061/dryad.8515?include=media,client')
77
77
  end
78
78
 
79
- it "test resolver" do
80
- doi = "https://handle.stage.datacite.org/10.5061/dryad.8515"
79
+ it 'test resolver' do
80
+ doi = 'https://handle.stage.datacite.org/10.5061/dryad.8515'
81
81
  response = subject.doi_api_url(doi)
82
- expect(response).to eq("https://api.stage.datacite.org/dois/10.5061/dryad.8515?include=media,client")
82
+ expect(response).to eq('https://api.stage.datacite.org/dois/10.5061/dryad.8515?include=media,client')
83
83
  end
84
84
 
85
- it "test resolver http" do
86
- doi = "http://handle.stage.datacite.org/10.5061/dryad.8515"
85
+ it 'test resolver http' do
86
+ doi = 'http://handle.stage.datacite.org/10.5061/dryad.8515'
87
87
  response = subject.doi_api_url(doi)
88
- expect(response).to eq("https://api.stage.datacite.org/dois/10.5061/dryad.8515?include=media,client")
88
+ expect(response).to eq('https://api.stage.datacite.org/dois/10.5061/dryad.8515?include=media,client')
89
89
  end
90
90
 
91
- it "force test resolver" do
92
- doi = "https://doi.org/10.5061/dryad.8515"
91
+ it 'force test resolver' do
92
+ doi = 'https://doi.org/10.5061/dryad.8515'
93
93
  response = subject.doi_api_url(doi, sandbox: true)
94
- expect(response).to eq("https://api.stage.datacite.org/dois/10.5061/dryad.8515?include=media,client")
94
+ expect(response).to eq('https://api.stage.datacite.org/dois/10.5061/dryad.8515?include=media,client')
95
95
  end
96
96
  end
97
97
 
98
- context "normalize doi" do
99
- it "doi" do
100
- doi = "10.5061/DRYAD.8515"
98
+ context 'normalize doi' do
99
+ it 'doi' do
100
+ doi = '10.5061/DRYAD.8515'
101
101
  response = subject.normalize_doi(doi)
102
- expect(response).to eq("https://doi.org/10.5061/dryad.8515")
102
+ expect(response).to eq('https://doi.org/10.5061/dryad.8515')
103
103
  end
104
104
 
105
- it "doi with protocol" do
106
- doi = "doi:10.5061/DRYAD.8515"
105
+ it 'doi with protocol' do
106
+ doi = 'doi:10.5061/DRYAD.8515'
107
107
  response = subject.normalize_doi(doi)
108
- expect(response).to eq("https://doi.org/10.5061/dryad.8515")
108
+ expect(response).to eq('https://doi.org/10.5061/dryad.8515')
109
109
  end
110
110
 
111
- it "SICI doi" do
112
- doi = "10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2"
111
+ it 'SICI doi' do
112
+ doi = '10.1890/0012-9658(2006)87[2832:tiopma]2.0.co;2'
113
113
  response = subject.normalize_doi(doi)
114
- expect(response).to eq("https://doi.org/10.1890/0012-9658(2006)87%5B2832:tiopma%5D2.0.co;2")
114
+ expect(response).to eq('https://doi.org/10.1890/0012-9658(2006)87%5B2832:tiopma%5D2.0.co;2')
115
115
  end
116
116
 
117
- it "https url" do
118
- doi = "https://doi.org/10.5061/dryad.8515"
117
+ it 'https url' do
118
+ doi = 'https://doi.org/10.5061/dryad.8515'
119
119
  response = subject.normalize_doi(doi)
120
- expect(response).to eq("https://doi.org/10.5061/dryad.8515")
120
+ expect(response).to eq('https://doi.org/10.5061/dryad.8515')
121
121
  end
122
122
 
123
- it "dx.doi.org url" do
124
- doi = "http://dx.doi.org/10.5061/dryad.8515"
123
+ it 'dx.doi.org url' do
124
+ doi = 'http://dx.doi.org/10.5061/dryad.8515'
125
125
  response = subject.normalize_doi(doi)
126
- expect(response).to eq("https://doi.org/10.5061/dryad.8515")
126
+ expect(response).to eq('https://doi.org/10.5061/dryad.8515')
127
127
  end
128
128
 
129
- it "not valid doi prefix" do
130
- doi = "https://doi.org/20.5061/dryad.8515"
129
+ it 'not valid doi prefix' do
130
+ doi = 'https://doi.org/20.5061/dryad.8515'
131
131
  response = subject.normalize_doi(doi)
132
- expect(response).to be_nil
132
+ expect(response.nil?).to be(true)
133
133
  end
134
134
 
135
- it "doi prefix with string" do
136
- doi = "https://doi.org/10.506X/dryad.8515"
135
+ it 'doi prefix with string' do
136
+ doi = 'https://doi.org/10.506X/dryad.8515'
137
137
  response = subject.normalize_doi(doi)
138
- expect(response).to be_nil
138
+ expect(response.nil?).to be(true)
139
139
  end
140
140
 
141
- it "doi prefix too long" do
142
- doi = "https://doi.org/10.506123/dryad.8515"
141
+ it 'doi prefix too long' do
142
+ doi = 'https://doi.org/10.506123/dryad.8515'
143
143
  response = subject.normalize_doi(doi)
144
- expect(response).to be_nil
144
+ expect(response.nil?).to be(true)
145
145
  end
146
146
 
147
- it "doi from url without doi proxy" do
148
- doi = "https://handle.net/10.5061/dryad.8515"
147
+ it 'doi from url without doi proxy' do
148
+ doi = 'https://handle.net/10.5061/dryad.8515'
149
149
  response = subject.normalize_doi(doi)
150
- expect(response).to be_nil
150
+ expect(response.nil?).to be(true)
151
151
  end
152
152
 
153
- it "url with one slash" do
154
- doi = "https:/doi.org/10.5061/dryad.8515"
153
+ it 'url with one slash' do
154
+ doi = 'https:/doi.org/10.5061/dryad.8515'
155
155
  response = subject.normalize_doi(doi)
156
- expect(response).to eq("https://doi.org/10.5061/dryad.8515")
156
+ expect(response).to eq('https://doi.org/10.5061/dryad.8515')
157
157
  end
158
158
 
159
- it "doi from datacite sandbox" do
160
- doi = "https://handle.stage.datacite.org/10.5438/55e5-t5c0"
159
+ it 'doi from datacite sandbox' do
160
+ doi = 'https://handle.stage.datacite.org/10.5438/55e5-t5c0'
161
161
  response = subject.normalize_doi(doi)
162
- expect(response).to eq("https://handle.stage.datacite.org/10.5438/55e5-t5c0")
162
+ expect(response).to eq('https://handle.stage.datacite.org/10.5438/55e5-t5c0')
163
163
  end
164
164
 
165
- it "doi force datacite sandbox" do
166
- doi = "10.5438/55e5-t5c0"
165
+ it 'doi force datacite sandbox' do
166
+ doi = '10.5438/55e5-t5c0'
167
167
  response = subject.normalize_doi(doi, sandbox: true)
168
- expect(response).to eq("https://handle.stage.datacite.org/10.5438/55e5-t5c0")
168
+ expect(response).to eq('https://handle.stage.datacite.org/10.5438/55e5-t5c0')
169
169
  end
170
170
  end
171
171
 
172
- context "doi_from_url" do
173
- it "url" do
174
- doi = subject.doi_from_url("https://doi.org/10.5061/dryad.8515")
175
- expect(doi).to eq("10.5061/dryad.8515")
172
+ context 'doi_from_url' do
173
+ it 'url' do
174
+ doi = subject.doi_from_url('https://doi.org/10.5061/dryad.8515')
175
+ expect(doi).to eq('10.5061/dryad.8515')
176
176
  end
177
177
 
178
- it "doi" do
179
- doi = subject.doi_from_url("10.5061/dryad.8515")
180
- expect(doi).to eq("10.5061/dryad.8515")
178
+ it 'doi' do
179
+ doi = subject.doi_from_url('10.5061/dryad.8515')
180
+ expect(doi).to eq('10.5061/dryad.8515')
181
181
  end
182
182
 
183
- it "doi with special characters" do
184
- doi = subject.doi_from_url("10.5067/terra+aqua/ceres/cldtyphist_l3.004")
185
- expect(doi).to eq("10.5067/terra+aqua/ceres/cldtyphist_l3.004")
183
+ it 'doi with special characters' do
184
+ doi = subject.doi_from_url('10.5067/terra+aqua/ceres/cldtyphist_l3.004')
185
+ expect(doi).to eq('10.5067/terra+aqua/ceres/cldtyphist_l3.004')
186
186
  end
187
187
 
188
- it "not a doi" do
189
- doi = subject.doi_from_url("https://doi.org/10.5061")
190
- expect(doi).to be nil
188
+ it 'not a doi' do
189
+ doi = subject.doi_from_url('https://doi.org/10.5061')
190
+ expect(doi.nil?).to be(true)
191
191
  end
192
192
 
193
- it "sandbox url" do
194
- doi = subject.doi_from_url("https://handle.stage.datacite.org/10.5438/55e5-t5c0")
195
- expect(doi).to eq("10.5438/55e5-t5c0")
193
+ it 'sandbox url' do
194
+ doi = subject.doi_from_url('https://handle.stage.datacite.org/10.5438/55e5-t5c0')
195
+ expect(doi).to eq('10.5438/55e5-t5c0')
196
196
  end
197
197
  end
198
198
 
199
- context "doi registration agency" do
200
- it "datacite" do
201
- doi = "https://doi.org/10.5061/dryad.8515"
199
+ context 'doi registration agency' do
200
+ it 'datacite' do
201
+ doi = 'https://doi.org/10.5061/dryad.8515'
202
202
  response = subject.get_doi_ra(doi)
203
- expect(response).to eq("DataCite")
203
+ expect(response).to eq('DataCite')
204
204
  end
205
205
 
206
- it "crossref" do
207
- doi = "10.1371/journal.pone.0000030"
206
+ it 'crossref' do
207
+ doi = '10.1371/journal.pone.0000030'
208
208
  response = subject.get_doi_ra(doi)
209
- expect(response).to eq("Crossref")
209
+ expect(response).to eq('Crossref')
210
210
  end
211
211
 
212
- it "medra" do
213
- doi = "https://doi.org/10.1392/roma081203"
212
+ it 'medra' do
213
+ doi = 'https://doi.org/10.1392/roma081203'
214
214
  response = subject.get_doi_ra(doi)
215
- expect(response).to eq("mEDRA")
215
+ expect(response).to eq('mEDRA')
216
216
  end
217
217
 
218
- it "kisti" do
219
- doi = "https://doi.org/10.5012/bkcs.2013.34.10.2889"
218
+ it 'kisti' do
219
+ doi = 'https://doi.org/10.5012/bkcs.2013.34.10.2889'
220
220
  response = subject.get_doi_ra(doi)
221
- expect(response).to eq("KISTI")
221
+ expect(response).to eq('KISTI')
222
222
  end
223
223
 
224
- it "jalc" do
225
- doi = "https://doi.org/10.11367/grsj1979.12.283"
224
+ it 'jalc' do
225
+ doi = 'https://doi.org/10.11367/grsj1979.12.283'
226
226
  response = subject.get_doi_ra(doi)
227
- expect(response).to eq("JaLC")
227
+ expect(response).to eq('JaLC')
228
228
  end
229
229
 
230
- it "op" do
231
- doi = "https://doi.org/10.2791/81962"
230
+ it 'op' do
231
+ doi = 'https://doi.org/10.2791/81962'
232
232
  response = subject.get_doi_ra(doi)
233
- expect(response).to eq("OP")
233
+ expect(response).to eq('OP')
234
234
  end
235
235
 
236
- it "not a valid prefix" do
237
- doi = "https://doi.org/10.a/dryad.8515x"
236
+ it 'not a valid prefix' do
237
+ doi = 'https://doi.org/10.a/dryad.8515x'
238
238
  response = subject.get_doi_ra(doi)
239
- expect(response).to be_nil
239
+ expect(response.nil?).to be(true)
240
240
  end
241
241
 
242
- it "not found" do
243
- doi = "https://doi.org/10.99999/dryad.8515x"
242
+ it 'not found' do
243
+ doi = 'https://doi.org/10.99999/dryad.8515x'
244
244
  response = subject.get_doi_ra(doi)
245
- expect(response).to be_nil
245
+ expect(response.nil?).to be(true)
246
246
  end
247
247
  end
248
248
 
249
- context "validate doi" do
250
- it "doi" do
251
- doi = "10.5061/dryad.8515"
249
+ context 'validate doi' do
250
+ it 'doi' do
251
+ doi = '10.5061/dryad.8515'
252
252
  response = subject.validate_doi(doi)
253
- expect(response).to eq("10.5061/dryad.8515")
253
+ expect(response).to eq('10.5061/dryad.8515')
254
254
  end
255
255
  end
256
256
 
257
- context "validate funder doi" do
258
- it "funder doi" do
259
- doi = "10.13039/501100001711"
257
+ context 'validate funder doi' do
258
+ it 'funder doi' do
259
+ doi = '10.13039/501100001711'
260
260
  response = subject.validate_funder_doi(doi)
261
- expect(response).to eq("https://doi.org/10.13039/501100001711")
261
+ expect(response).to eq('https://doi.org/10.13039/501100001711')
262
262
  end
263
263
 
264
- it "funder doi without prefix" do
265
- doi = "501100001711"
264
+ it 'funder doi without prefix' do
265
+ doi = '501100001711'
266
266
  response = subject.validate_funder_doi(doi)
267
- expect(response).to eq("https://doi.org/10.13039/501100001711")
267
+ expect(response).to eq('https://doi.org/10.13039/501100001711')
268
268
  end
269
269
 
270
- it "non-funder doi" do
271
- doi = "10.5061/dryad.8515"
270
+ it 'non-funder doi' do
271
+ doi = '10.5061/dryad.8515'
272
272
  response = subject.validate_funder_doi(doi)
273
- expect(response).to be_nil
274
- end
275
-
276
- it { expect(subject.validate_funder_doi("10.13039/100000050")).to eq "https://doi.org/10.13039/100000050" }
277
- it { expect(subject.validate_funder_doi("10.13039/100006492")).to eq "https://doi.org/10.13039/100006492" }
278
- it { expect(subject.validate_funder_doi('http://handle.test.datacite.org/10.13039/100000080')).to eq "https://doi.org/10.13039/100000080" }
279
- it { expect(subject.validate_funder_doi('https://doi.org/10.13039/100000001')).to eq "https://doi.org/10.13039/100000001" }
280
- it { expect(subject.validate_funder_doi('http://doi.org/10.13039/501100001711')).to eq "https://doi.org/10.13039/501100001711" }
281
- it { expect(subject.validate_funder_doi('https://dx.doi.org/10.13039/501100001711')).to eq "https://doi.org/10.13039/501100001711" }
282
- it { expect(subject.validate_funder_doi('doi:10.13039/501100001711')).to eq "https://doi.org/10.13039/501100001711" }
283
- it { expect(subject.validate_funder_doi('10.13039/501100001711')).to eq "https://doi.org/10.13039/501100001711" }
284
- it { expect(subject.validate_funder_doi('501100001711')).to eq "https://doi.org/10.13039/501100001711" }
285
- it { expect(subject.validate_funder_doi("https://doi.org/10.13039/5monkeymonkey")).to be_nil }
286
- it { expect(subject.validate_funder_doi('10.13039/5monkeymonkey')).to be_nil }
273
+ expect(response.nil?).to be(true)
274
+ end
275
+
276
+ it { expect(subject.validate_funder_doi('10.13039/100000050')).to eq 'https://doi.org/10.13039/100000050' }
277
+ it { expect(subject.validate_funder_doi('10.13039/100006492')).to eq 'https://doi.org/10.13039/100006492' }
278
+
279
+ it {
280
+ expect(subject.validate_funder_doi('http://handle.test.datacite.org/10.13039/100000080')).to eq 'https://doi.org/10.13039/100000080'
281
+ }
282
+
283
+ it { expect(subject.validate_funder_doi('https://doi.org/10.13039/100000001')).to eq 'https://doi.org/10.13039/100000001' }
284
+ it { expect(subject.validate_funder_doi('http://doi.org/10.13039/501100001711')).to eq 'https://doi.org/10.13039/501100001711' }
285
+ it { expect(subject.validate_funder_doi('https://dx.doi.org/10.13039/501100001711')).to eq 'https://doi.org/10.13039/501100001711' }
286
+ it { expect(subject.validate_funder_doi('doi:10.13039/501100001711')).to eq 'https://doi.org/10.13039/501100001711' }
287
+ it { expect(subject.validate_funder_doi('10.13039/501100001711')).to eq 'https://doi.org/10.13039/501100001711' }
288
+ it { expect(subject.validate_funder_doi('501100001711')).to eq 'https://doi.org/10.13039/501100001711' }
289
+ it { expect(subject.validate_funder_doi('https://doi.org/10.13039/5monkeymonkey').nil?).to be(true) }
290
+ it { expect(subject.validate_funder_doi('10.13039/5monkeymonkey').nil?).to be(true) }
287
291
  end
288
292
 
289
- context "validate prefix" do
290
- it "doi" do
291
- doi = "10.5061/dryad.8515"
293
+ context 'validate prefix' do
294
+ it 'doi' do
295
+ doi = '10.5061/dryad.8515'
292
296
  response = subject.validate_prefix(doi)
293
- expect(response).to eq("10.5061")
297
+ expect(response).to eq('10.5061')
294
298
  end
295
299
 
296
- it "doi with protocol" do
297
- doi = "doi:10.5061/dryad.8515"
300
+ it 'doi with protocol' do
301
+ doi = 'doi:10.5061/dryad.8515'
298
302
  response = subject.validate_prefix(doi)
299
- expect(response).to eq("10.5061")
303
+ expect(response).to eq('10.5061')
300
304
  end
301
305
 
302
- it "doi as url" do
303
- doi = "https://doi.org/10.5061/dryad.8515"
306
+ it 'doi as url' do
307
+ doi = 'https://doi.org/10.5061/dryad.8515'
304
308
  response = subject.validate_prefix(doi)
305
- expect(response).to eq("10.5061")
309
+ expect(response).to eq('10.5061')
306
310
  end
307
311
 
308
- it "only prefix" do
309
- doi = "10.5061"
312
+ it 'only prefix' do
313
+ doi = '10.5061'
310
314
  response = subject.validate_prefix(doi)
311
- expect(response).to eq("10.5061")
315
+ expect(response).to eq('10.5061')
312
316
  end
313
317
  end
314
318
  end