commonmeta-ruby 3.0.10 → 3.2.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 (27) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +37 -36
  3. data/commonmeta.gemspec +1 -1
  4. data/lib/commonmeta/metadata_utils.rb +2 -0
  5. data/lib/commonmeta/readers/json_post_reader.rb +78 -0
  6. data/lib/commonmeta/utils.rb +19 -0
  7. data/lib/commonmeta/version.rb +1 -1
  8. data/spec/author_utils_spec.rb +10 -0
  9. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/blogger_post.yml +94 -0
  10. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post.yml +117 -0
  11. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post_with_doi.yml +117 -0
  12. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/jekyll_post.yml +170 -0
  13. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/wordpress_post.yml +163 -0
  14. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/blogger_post.yml +94 -0
  15. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/ghost_post_with_doi.yml +117 -0
  16. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/jekyll_post.yml +87 -0
  17. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/wordpress_post.yml +163 -0
  18. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/license.yml +221 -0
  19. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/url.yml +221 -0
  20. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_item_from_rogue_scholar_with_doi.yml +163 -0
  21. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_item_from_upstream_blog.yml +243 -0
  22. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_post_from_rogue_scholar_with_doi.yml +163 -0
  23. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/write_metadata_as_crossref/json_post_from_upstream_blog.yml +243 -0
  24. data/spec/readers/json_post_reader_spec.rb +89 -0
  25. data/spec/utils_spec.rb +330 -314
  26. data/spec/writers/crossref_xml_writer_spec.rb +183 -137
  27. metadata +22 -5
data/spec/utils_spec.rb CHANGED
@@ -1,649 +1,665 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe Commonmeta::Metadata, vcr: true do
6
- subject { described_class.new(input: input, from: 'crossref') }
6
+ subject { described_class.new(input: input, from: "crossref") }
7
7
 
8
- let(:input) { 'https://doi.org/10.1101/097196' }
8
+ let(:input) { "https://doi.org/10.1101/097196" }
9
9
 
10
- context 'validate url' do
11
- it 'DOI' do
12
- str = 'https://doi.org/10.5438/0000-00ss'
10
+ context "validate url" do
11
+ it "DOI" do
12
+ str = "https://doi.org/10.5438/0000-00ss"
13
13
  response = subject.validate_url(str)
14
- expect(response).to eq('DOI')
14
+ expect(response).to eq("DOI")
15
15
  end
16
16
 
17
- it 'URL' do
18
- str = 'https://blog.datacite.org/eating-your-own-dog-food'
17
+ it "URL" do
18
+ str = "https://blog.datacite.org/eating-your-own-dog-food"
19
19
  response = subject.validate_url(str)
20
- expect(response).to eq('URL')
20
+ expect(response).to eq("URL")
21
21
  end
22
22
 
23
- it 'ISSN' do
24
- str = 'ISSN 2050-084X'
23
+ it "ISSN" do
24
+ str = "ISSN 2050-084X"
25
25
  response = subject.validate_url(str)
26
- expect(response).to eq('ISSN')
26
+ expect(response).to eq("ISSN")
27
27
  end
28
28
 
29
- it 'string' do
30
- str = 'eating-your-own-dog-food'
29
+ it "string" do
30
+ str = "eating-your-own-dog-food"
31
31
  response = subject.validate_url(str)
32
32
  expect(response.nil?).to be(true)
33
33
  end
34
34
  end
35
35
 
36
- context 'validate_orcid' do
37
- it 'validate_orcid' do
38
- orcid = 'http://orcid.org/0000-0002-2590-225X'
36
+ context "validate_orcid" do
37
+ it "validate_orcid" do
38
+ orcid = "http://orcid.org/0000-0002-2590-225X"
39
39
  response = subject.validate_orcid(orcid)
40
- expect(response).to eq('0000-0002-2590-225X')
40
+ expect(response).to eq("0000-0002-2590-225X")
41
41
  end
42
42
 
43
- it 'validate_orcid https' do
44
- orcid = 'https://orcid.org/0000-0002-2590-225X'
43
+ it "validate_orcid https" do
44
+ orcid = "https://orcid.org/0000-0002-2590-225X"
45
45
  response = subject.validate_orcid(orcid)
46
- expect(response).to eq('0000-0002-2590-225X')
46
+ expect(response).to eq("0000-0002-2590-225X")
47
47
  end
48
48
 
49
- it 'validate_orcid id' do
50
- orcid = '0000-0002-2590-225X'
49
+ it "validate_orcid id" do
50
+ orcid = "0000-0002-2590-225X"
51
51
  response = subject.validate_orcid(orcid)
52
- expect(response).to eq('0000-0002-2590-225X')
52
+ expect(response).to eq("0000-0002-2590-225X")
53
53
  end
54
54
 
55
- it 'validate_orcid www' do
56
- orcid = 'http://www.orcid.org/0000-0002-2590-225X'
55
+ it "validate_orcid www" do
56
+ orcid = "http://www.orcid.org/0000-0002-2590-225X"
57
57
  response = subject.validate_orcid(orcid)
58
- expect(response).to eq('0000-0002-2590-225X')
58
+ expect(response).to eq("0000-0002-2590-225X")
59
59
  end
60
60
 
61
- it 'validate_orcid with spaces' do
62
- orcid = '0000 0002 1394 3097'
61
+ it "validate_orcid with spaces" do
62
+ orcid = "0000 0002 1394 3097"
63
63
  response = subject.validate_orcid(orcid)
64
- expect(response).to eq('0000-0002-1394-3097')
64
+ expect(response).to eq("0000-0002-1394-3097")
65
65
  end
66
66
 
67
- it 'validate_orcid sandbox' do
68
- orcid = 'http://sandbox.orcid.org/0000-0002-2590-225X'
67
+ it "validate_orcid sandbox" do
68
+ orcid = "http://sandbox.orcid.org/0000-0002-2590-225X"
69
69
  response = subject.validate_orcid(orcid)
70
- expect(response).to eq('0000-0002-2590-225X')
70
+ expect(response).to eq("0000-0002-2590-225X")
71
71
  end
72
72
 
73
- it 'validate_orcid sandbox https' do
74
- orcid = 'https://sandbox.orcid.org/0000-0002-2590-225X'
73
+ it "validate_orcid sandbox https" do
74
+ orcid = "https://sandbox.orcid.org/0000-0002-2590-225X"
75
75
  response = subject.validate_orcid(orcid)
76
- expect(response).to eq('0000-0002-2590-225X')
76
+ expect(response).to eq("0000-0002-2590-225X")
77
77
  end
78
78
 
79
- it 'validate_orcid wrong id' do
80
- orcid = '0000-0002-1394-309'
79
+ it "validate_orcid wrong id" do
80
+ orcid = "0000-0002-1394-309"
81
81
  response = subject.validate_orcid(orcid)
82
82
  expect(response.nil?).to be(true)
83
83
  end
84
84
  end
85
85
 
86
- context 'validate_orcid_scheme' do
87
- it 'validate_orcid_scheme' do
88
- orcid = 'http://orcid.org'
86
+ context "validate_orcid_scheme" do
87
+ it "validate_orcid_scheme" do
88
+ orcid = "http://orcid.org"
89
89
  response = subject.validate_orcid_scheme(orcid)
90
- expect(response).to eq('orcid.org')
90
+ expect(response).to eq("orcid.org")
91
91
  end
92
92
 
93
- it 'validate_orcid_scheme trailing slash' do
94
- orcid = 'http://orcid.org/'
93
+ it "validate_orcid_scheme trailing slash" do
94
+ orcid = "http://orcid.org/"
95
95
  response = subject.validate_orcid_scheme(orcid)
96
- expect(response).to eq('orcid.org')
96
+ expect(response).to eq("orcid.org")
97
97
  end
98
98
 
99
- it 'validate_orcid_scheme https' do
100
- orcid = 'https://orcid.org'
99
+ it "validate_orcid_scheme https" do
100
+ orcid = "https://orcid.org"
101
101
  response = subject.validate_orcid_scheme(orcid)
102
- expect(response).to eq('orcid.org')
102
+ expect(response).to eq("orcid.org")
103
103
  end
104
104
 
105
- it 'validate_orcid_scheme www' do
106
- orcid = 'http://www.orcid.org'
105
+ it "validate_orcid_scheme www" do
106
+ orcid = "http://www.orcid.org"
107
107
  response = subject.validate_orcid_scheme(orcid)
108
- expect(response).to eq('orcid.org')
108
+ expect(response).to eq("orcid.org")
109
109
  end
110
110
  end
111
111
 
112
- context 'parse attributes' do
113
- it 'string' do
114
- element = '10.5061/DRYAD.8515'
112
+ context "parse attributes" do
113
+ it "string" do
114
+ element = "10.5061/DRYAD.8515"
115
115
  response = subject.parse_attributes(element)
116
- expect(response).to eq('10.5061/DRYAD.8515')
116
+ expect(response).to eq("10.5061/DRYAD.8515")
117
117
  end
118
118
 
119
- it 'hash' do
120
- element = { '__content__' => '10.5061/DRYAD.8515' }
119
+ it "hash" do
120
+ element = { "__content__" => "10.5061/DRYAD.8515" }
121
121
  response = subject.parse_attributes(element)
122
- expect(response).to eq('10.5061/DRYAD.8515')
122
+ expect(response).to eq("10.5061/DRYAD.8515")
123
123
  end
124
124
 
125
- it 'hash with array value' do
126
- element = { '__content__' => ['10.5061/DRYAD.8515', '10.5061/DRYAD.8516'] }
125
+ it "hash with array value" do
126
+ element = { "__content__" => ["10.5061/DRYAD.8515", "10.5061/DRYAD.8516"] }
127
127
  response = subject.parse_attributes(element)
128
- expect(response).to eq(['10.5061/DRYAD.8515', '10.5061/DRYAD.8516'])
128
+ expect(response).to eq(["10.5061/DRYAD.8515", "10.5061/DRYAD.8516"])
129
129
  end
130
130
 
131
- it 'array' do
132
- element = [{ '__content__' => '10.5061/DRYAD.8515' }]
131
+ it "array" do
132
+ element = [{ "__content__" => "10.5061/DRYAD.8515" }]
133
133
  response = subject.parse_attributes(element)
134
- expect(response).to eq('10.5061/DRYAD.8515')
134
+ expect(response).to eq("10.5061/DRYAD.8515")
135
135
  end
136
136
 
137
- it 'array of strings' do
137
+ it "array of strings" do
138
138
  element = %w[datacite doi metadata featured]
139
139
  response = subject.parse_attributes(element)
140
140
  expect(response).to eq(%w[datacite doi metadata featured])
141
141
  end
142
142
 
143
- it 'nil' do
143
+ it "nil" do
144
144
  element = nil
145
145
  response = subject.parse_attributes(element)
146
146
  expect(response.nil?).to be(true)
147
147
  end
148
148
 
149
- it 'first' do
150
- element = [{ '__content__' => '10.5061/DRYAD.8515/1' },
151
- { '__content__' => '10.5061/DRYAD.8515/2' }]
149
+ it "first" do
150
+ element = [{ "__content__" => "10.5061/DRYAD.8515/1" },
151
+ { "__content__" => "10.5061/DRYAD.8515/2" }]
152
152
  response = subject.parse_attributes(element, first: true)
153
- expect(response).to eq('10.5061/DRYAD.8515/1')
153
+ expect(response).to eq("10.5061/DRYAD.8515/1")
154
154
  end
155
155
  end
156
156
 
157
- context 'normalize id' do
158
- it 'doi' do
159
- doi = '10.5061/DRYAD.8515'
157
+ context "normalize id" do
158
+ it "doi" do
159
+ doi = "10.5061/DRYAD.8515"
160
160
  response = subject.normalize_id(doi)
161
- expect(response).to eq('https://doi.org/10.5061/dryad.8515')
161
+ expect(response).to eq("https://doi.org/10.5061/dryad.8515")
162
162
  end
163
163
 
164
- it 'doi as url' do
165
- doi = 'http://dx.doi.org/10.5061/DRYAD.8515'
164
+ it "doi as url" do
165
+ doi = "http://dx.doi.org/10.5061/DRYAD.8515"
166
166
  response = subject.normalize_id(doi)
167
- expect(response).to eq('https://doi.org/10.5061/dryad.8515')
167
+ expect(response).to eq("https://doi.org/10.5061/dryad.8515")
168
168
  end
169
169
 
170
- it 'url' do
171
- url = 'https://blog.datacite.org/eating-your-own-dog-food/'
170
+ it "url" do
171
+ url = "https://blog.datacite.org/eating-your-own-dog-food/"
172
172
  response = subject.normalize_id(url)
173
- expect(response).to eq('https://blog.datacite.org/eating-your-own-dog-food')
173
+ expect(response).to eq("https://blog.datacite.org/eating-your-own-dog-food")
174
174
  end
175
175
 
176
- it 'url with utf-8' do
177
- url = 'http://www.詹姆斯.com/eating-your-own-dog-food/'
176
+ it "url with utf-8" do
177
+ url = "http://www.詹姆斯.com/eating-your-own-dog-food/"
178
178
  response = subject.normalize_id(url)
179
- expect(response).to eq('http://www.xn--8ws00zhy3a.com/eating-your-own-dog-food')
179
+ expect(response).to eq("http://www.xn--8ws00zhy3a.com/eating-your-own-dog-food")
180
180
  end
181
181
 
182
- it 'ftp' do
183
- url = 'ftp://blog.datacite.org/eating-your-own-dog-food/'
182
+ it "ftp" do
183
+ url = "ftp://blog.datacite.org/eating-your-own-dog-food/"
184
184
  response = subject.normalize_id(url)
185
185
  expect(response.nil?).to be(true)
186
186
  end
187
187
 
188
- it 'invalid url' do
189
- url = 'http://'
188
+ it "invalid url" do
189
+ url = "http://"
190
190
  response = subject.normalize_id(url)
191
191
  expect(response.nil?).to be(true)
192
192
  end
193
193
 
194
- it 'string' do
195
- url = 'eating-your-own-dog-food'
194
+ it "string" do
195
+ url = "eating-your-own-dog-food"
196
196
  response = subject.normalize_id(url)
197
197
  expect(response.nil?).to be(true)
198
198
  end
199
199
 
200
- it 'filename' do
201
- url = 'crossref.xml'
200
+ it "filename" do
201
+ url = "crossref.xml"
202
202
  response = subject.normalize_id(url)
203
203
  expect(response.nil?).to be(true)
204
204
  end
205
205
 
206
- it 'sandbox via url' do
207
- url = 'https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7'
206
+ it "sandbox via url" do
207
+ url = "https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7"
208
208
  response = subject.normalize_id(url)
209
- expect(response).to eq('https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7')
209
+ expect(response).to eq("https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7")
210
210
  end
211
211
 
212
- it 'sandbox via options' do
213
- url = '10.20375/0000-0001-ddb8-7'
212
+ it "sandbox via options" do
213
+ url = "10.20375/0000-0001-ddb8-7"
214
214
  response = subject.normalize_id(url, sandbox: true)
215
- expect(response).to eq('https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7')
215
+ expect(response).to eq("https://handle.stage.datacite.org/10.20375/0000-0001-ddb8-7")
216
216
  end
217
217
  end
218
218
 
219
- context 'normalize url' do
220
- it 'with trailing slash' do
221
- url = 'http://creativecommons.org/publicdomain/zero/1.0/'
219
+ context "normalize url" do
220
+ it "with trailing slash" do
221
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
222
222
  response = subject.normalize_url(url)
223
- expect(response).to eq('http://creativecommons.org/publicdomain/zero/1.0')
223
+ expect(response).to eq("http://creativecommons.org/publicdomain/zero/1.0")
224
224
  end
225
225
 
226
- it 'with trailing slash and to https' do
227
- url = 'http://creativecommons.org/publicdomain/zero/1.0/'
226
+ it "with trailing slash and to https" do
227
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
228
228
  response = subject.normalize_url(url, https: true)
229
- expect(response).to eq('https://creativecommons.org/publicdomain/zero/1.0')
229
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0")
230
230
  end
231
231
 
232
- it 'uri' do
233
- url = 'info:eu-repo/semantics/openAccess'
232
+ it "uri" do
233
+ url = "info:eu-repo/semantics/openAccess"
234
234
  response = subject.normalize_url(url)
235
- expect(response).to eq('info:eu-repo/semantics/openAccess')
235
+ expect(response).to eq("info:eu-repo/semantics/openAccess")
236
236
  end
237
237
  end
238
238
 
239
- context 'normalize cc url' do
240
- it 'with trailing slash' do
241
- url = 'http://creativecommons.org/publicdomain/zero/1.0/'
239
+ context "normalize cc url" do
240
+ it "with trailing slash" do
241
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
242
242
  response = subject.normalize_cc_url(url)
243
- expect(response).to eq('https://creativecommons.org/publicdomain/zero/1.0/legalcode')
243
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0/legalcode")
244
244
  end
245
245
 
246
- it 'with trailing slash and to https' do
247
- url = 'http://creativecommons.org/publicdomain/zero/1.0/'
246
+ it "with trailing slash and to https" do
247
+ url = "http://creativecommons.org/publicdomain/zero/1.0/"
248
248
  response = subject.normalize_cc_url(url)
249
- expect(response).to eq('https://creativecommons.org/publicdomain/zero/1.0/legalcode')
249
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/1.0/legalcode")
250
250
  end
251
251
 
252
- it 'not found' do
253
- url = 'http://creativecommons.org/publicdomain/zero/2.0/'
252
+ it "not found" do
253
+ url = "http://creativecommons.org/publicdomain/zero/2.0/"
254
254
  response = subject.normalize_cc_url(url)
255
- expect(response).to eq('https://creativecommons.org/publicdomain/zero/2.0')
255
+ expect(response).to eq("https://creativecommons.org/publicdomain/zero/2.0")
256
256
  end
257
257
  end
258
258
 
259
- context 'normalize issn' do
260
- it 'from array' do
261
- input = [{ 'media_type' => 'print', '__content__' => '13040855' },
262
- { 'media_type' => 'electronic', '__content__' => '21468427' }]
259
+ context "normalize issn" do
260
+ it "from array" do
261
+ input = [{ "media_type" => "print", "__content__" => "13040855" },
262
+ { "media_type" => "electronic", "__content__" => "21468427" }]
263
263
  response = subject.normalize_issn(input)
264
- expect(response).to eq('2146-8427')
264
+ expect(response).to eq("2146-8427")
265
265
  end
266
266
 
267
- it 'from empty array' do
267
+ it "from empty array" do
268
268
  input = []
269
269
  response = subject.normalize_issn(input)
270
270
  expect(response.nil?).to be(true)
271
271
  end
272
272
 
273
- it 'from hash' do
274
- input = { 'media_type' => 'electronic', '__content__' => '21468427' }
273
+ it "from hash" do
274
+ input = { "media_type" => "electronic", "__content__" => "21468427" }
275
275
  response = subject.normalize_issn(input)
276
- expect(response).to eq('2146-8427')
276
+ expect(response).to eq("2146-8427")
277
277
  end
278
278
 
279
- it 'from string' do
280
- input = '2146-8427'
279
+ it "from string" do
280
+ input = "2146-8427"
281
281
  response = subject.normalize_issn(input)
282
- expect(response).to eq('2146-8427')
282
+ expect(response).to eq("2146-8427")
283
283
  end
284
284
  end
285
285
 
286
- context 'to_schema_org' do
287
- it 'with id' do
288
- author = { 'type' => 'Person', 'id' => 'http://orcid.org/0000-0003-1419-2405', 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' }
286
+ context "to_schema_org" do
287
+ it "with id" do
288
+ author = { "type" => "Person", "id" => "http://orcid.org/0000-0003-1419-2405", "givenName" => "Martin", "familyName" => "Fenner", "name" => "Martin Fenner" }
289
289
  response = subject.to_schema_org(author)
290
- expect(response).to eq('givenName' => 'Martin', 'familyName' => 'Fenner',
291
- 'name' => 'Martin Fenner', '@type' => 'Person', '@id' => 'http://orcid.org/0000-0003-1419-2405')
290
+ expect(response).to eq("givenName" => "Martin", "familyName" => "Fenner",
291
+ "name" => "Martin Fenner", "@type" => "Person", "@id" => "http://orcid.org/0000-0003-1419-2405")
292
292
  end
293
293
  end
294
294
 
295
- context 'from_schema_org' do
296
- it 'with @id' do
297
- author = { '@type' => 'Person', '@id' => 'http://orcid.org/0000-0003-1419-2405', 'givenName' => 'Martin', 'familyName' => 'Fenner', 'name' => 'Martin Fenner' }
295
+ context "from_schema_org" do
296
+ it "with @id" do
297
+ author = { "@type" => "Person", "@id" => "http://orcid.org/0000-0003-1419-2405", "givenName" => "Martin", "familyName" => "Fenner", "name" => "Martin Fenner" }
298
298
  response = subject.from_schema_org(author)
299
- expect(response).to eq('givenName' => 'Martin', 'familyName' => 'Fenner',
300
- 'name' => 'Martin Fenner', 'type' => 'Person', 'id' => 'http://orcid.org/0000-0003-1419-2405')
299
+ expect(response).to eq("givenName" => "Martin", "familyName" => "Fenner",
300
+ "name" => "Martin Fenner", "type" => "Person", "id" => "http://orcid.org/0000-0003-1419-2405")
301
301
  end
302
302
  end
303
303
 
304
- context 'to_schema_org_identifiers' do
305
- it 'with identifiers' do
304
+ context "to_schema_org_identifiers" do
305
+ it "with identifiers" do
306
306
  identifiers = [
307
- { 'alternateIdentifier' => 'https://doi.org/10.23725/8na3-9s47',
308
- 'alternateIdentifierType' => 'DOI' }, { 'alternateIdentifierType' => 'md5', 'alternateIdentifier' => '3b33f6b9338fccab0901b7d317577ea3' }, { 'alternateIdentifierType' => 'minid', 'alternateIdentifier' => 'ark:/99999/fk41CrU4eszeLUDe' }, { 'alternateIdentifierType' => 'dataguid', 'alternateIdentifier' => 'dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7' }
307
+ { "alternateIdentifier" => "https://doi.org/10.23725/8na3-9s47",
308
+ "alternateIdentifierType" => "DOI" }, { "alternateIdentifierType" => "md5", "alternateIdentifier" => "3b33f6b9338fccab0901b7d317577ea3" }, { "alternateIdentifierType" => "minid", "alternateIdentifier" => "ark:/99999/fk41CrU4eszeLUDe" }, { "alternateIdentifierType" => "dataguid", "alternateIdentifier" => "dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7" },
309
309
  ]
310
- response = subject.to_schema_org_identifiers(identifiers, type: 'Dataset')
311
- expect(response).to eq([{ '@type' => 'PropertyValue', 'propertyID' => 'DOI', 'value' => 'https://doi.org/10.23725/8na3-9s47' },
312
- { '@type' => 'PropertyValue',
313
- 'propertyID' => 'md5',
314
- 'value' => '3b33f6b9338fccab0901b7d317577ea3' },
315
- { '@type' => 'PropertyValue',
316
- 'propertyID' => 'minid',
317
- 'value' => 'ark:/99999/fk41CrU4eszeLUDe' },
318
- { '@type' => 'PropertyValue',
319
- 'propertyID' => 'dataguid',
320
- 'value' => 'dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7' }])
310
+ response = subject.to_schema_org_identifiers(identifiers, type: "Dataset")
311
+ expect(response).to eq([{ "@type" => "PropertyValue", "propertyID" => "DOI", "value" => "https://doi.org/10.23725/8na3-9s47" },
312
+ { "@type" => "PropertyValue",
313
+ "propertyID" => "md5",
314
+ "value" => "3b33f6b9338fccab0901b7d317577ea3" },
315
+ { "@type" => "PropertyValue",
316
+ "propertyID" => "minid",
317
+ "value" => "ark:/99999/fk41CrU4eszeLUDe" },
318
+ { "@type" => "PropertyValue",
319
+ "propertyID" => "dataguid",
320
+ "value" => "dg.4503/c3d66dc9-58da-411c-83c4-dd656aa3c4b7" }])
321
321
  end
322
322
  end
323
323
 
324
- context 'sanitize' do
325
- it 'removes a tags' do
324
+ context "sanitize" do
325
+ it "removes a tags" do
326
326
  text = 'In 1998 <strong>Tim Berners-Lee</strong> coined the term <a href="https://www.w3.org/Provider/Style/URI">cool URIs</a>'
327
327
  content = subject.sanitize(text)
328
- expect(content).to eq('In 1998 <strong>Tim Berners-Lee</strong> coined the term cool URIs')
328
+ expect(content).to eq("In 1998 <strong>Tim Berners-Lee</strong> coined the term cool URIs")
329
329
  end
330
330
 
331
- it 'onlies keep specific tags' do
331
+ it "onlies keep specific tags" do
332
332
  text = 'In 1998 <strong>Tim Berners-Lee</strong> coined the term <a href="https://www.w3.org/Provider/Style/URI">cool URIs</a>'
333
- content = subject.sanitize(text, tags: ['a'])
333
+ content = subject.sanitize(text, tags: ["a"])
334
334
  expect(content).to eq('In 1998 Tim Berners-Lee coined the term <a href="https://www.w3.org/Provider/Style/URI">cool URIs</a>')
335
335
  end
336
336
  end
337
337
 
338
- context 'get_datetime_from_time' do
339
- it 'present' do
340
- time = '20200226071709'
338
+ context "get_datetime_from_time" do
339
+ it "present" do
340
+ time = "20200226071709"
341
341
  response = subject.get_datetime_from_time(time)
342
- expect(response).to eq('2020-02-26T07:17:09Z')
342
+ expect(response).to eq("2020-02-26T07:17:09Z")
343
343
  end
344
344
 
345
- it 'past' do
346
- time = '18770312071709'
345
+ it "past" do
346
+ time = "18770312071709"
347
347
  response = subject.get_datetime_from_time(time)
348
- expect(response).to eq('1877-03-12T07:17:09Z')
348
+ expect(response).to eq("1877-03-12T07:17:09Z")
349
349
  end
350
350
 
351
- it 'future' do
352
- time = '20970114071709'
351
+ it "future" do
352
+ time = "20970114071709"
353
353
  response = subject.get_datetime_from_time(time)
354
- expect(response).to eq('2097-01-14T07:17:09Z')
354
+ expect(response).to eq("2097-01-14T07:17:09Z")
355
355
  end
356
356
 
357
- it 'invalid' do
358
- time = '20201587168864794'
357
+ it "invalid" do
358
+ time = "20201587168864794"
359
359
  response = subject.get_datetime_from_time(time)
360
360
  expect(response.nil?).to be(true)
361
361
  end
362
362
 
363
- it 'nil' do
363
+ it "nil" do
364
364
  time = nil
365
365
  response = subject.get_datetime_from_time(time)
366
366
  expect(response.nil?).to be(true)
367
367
  end
368
368
  end
369
369
 
370
- context 'get_date_parts' do
371
- it 'date' do
372
- date = '2016-12-20'
370
+ context "get_date_parts" do
371
+ it "date" do
372
+ date = "2016-12-20"
373
373
  response = subject.get_date_parts(date)
374
- expect(response).to eq('date-parts' => [[2016, 12, 20]])
374
+ expect(response).to eq("date-parts" => [[2016, 12, 20]])
375
375
  end
376
376
 
377
- it 'year-month' do
378
- date = '2016-12'
377
+ it "year-month" do
378
+ date = "2016-12"
379
379
  response = subject.get_date_parts(date)
380
- expect(response).to eq('date-parts' => [[2016, 12]])
380
+ expect(response).to eq("date-parts" => [[2016, 12]])
381
381
  end
382
382
 
383
- it 'year' do
384
- date = '2016'
383
+ it "year" do
384
+ date = "2016"
385
385
  response = subject.get_date_parts(date)
386
- expect(response).to eq('date-parts' => [[2016]])
386
+ expect(response).to eq("date-parts" => [[2016]])
387
387
  end
388
388
  end
389
389
 
390
- context 'get_date_from_parts' do
391
- it 'date' do
390
+ context "get_date_from_parts" do
391
+ it "date" do
392
392
  response = subject.get_date_from_parts(2016, 12, 20)
393
- expect(response).to eq('2016-12-20')
393
+ expect(response).to eq("2016-12-20")
394
394
  end
395
395
 
396
- it 'year-month' do
396
+ it "year-month" do
397
397
  response = subject.get_date_from_parts(2016, 12)
398
- expect(response).to eq('2016-12')
398
+ expect(response).to eq("2016-12")
399
399
  end
400
400
 
401
- it 'year' do
401
+ it "year" do
402
402
  response = subject.get_date_from_parts(2016)
403
- expect(response).to eq('2016')
403
+ expect(response).to eq("2016")
404
404
  end
405
405
  end
406
406
 
407
- context 'get_date_from_date_parts' do
408
- it 'date' do
409
- date_as_parts = { 'date-parts' => [[2016, 12, 20]] }
407
+ context "get_date_from_date_parts" do
408
+ it "date" do
409
+ date_as_parts = { "date-parts" => [[2016, 12, 20]] }
410
410
  response = subject.get_date_from_date_parts(date_as_parts)
411
- expect(response).to eq('2016-12-20')
411
+ expect(response).to eq("2016-12-20")
412
412
  end
413
413
 
414
- it 'year-month' do
415
- date_as_parts = { 'date-parts' => [[2016, 12]] }
414
+ it "year-month" do
415
+ date_as_parts = { "date-parts" => [[2016, 12]] }
416
416
  response = subject.get_date_from_date_parts(date_as_parts)
417
- expect(response).to eq('2016-12')
417
+ expect(response).to eq("2016-12")
418
418
  end
419
419
 
420
- it 'year' do
421
- date_as_parts = { 'date-parts' => [[2016]] }
420
+ it "year" do
421
+ date_as_parts = { "date-parts" => [[2016]] }
422
422
  response = subject.get_date_from_date_parts(date_as_parts)
423
- expect(response).to eq('2016')
423
+ expect(response).to eq("2016")
424
424
  end
425
425
  end
426
426
 
427
- context 'get_date' do
428
- it 'publication date' do
429
- dates = [{ 'date' => '2016-12-20', 'dateType' => 'Issued' }]
430
- response = subject.get_date(dates, 'Issued')
431
- expect(response).to eq('2016-12-20')
427
+ context "get_date" do
428
+ it "publication date" do
429
+ dates = [{ "date" => "2016-12-20", "dateType" => "Issued" }]
430
+ response = subject.get_date(dates, "Issued")
431
+ expect(response).to eq("2016-12-20")
432
432
  end
433
433
  end
434
434
 
435
- context 'get_series_information' do
436
- it 'only title' do
435
+ context "get_link" do
436
+ links = [{ "rel" => "self", "type" => "application/atom+xml", "href" => "https://syldavia-gazette.org/atom/" },
437
+ { "rel" => "alternate", "type" => "text/html", "href" => "https://syldavia-gazette.org" },
438
+ { "rel" => "license", "type" => "text/html", "href" => "https://creativecommons.org/licenses/by/4.0/legalcode" }]
439
+
440
+ it "url" do
441
+ response = subject.get_link(links, "self")
442
+ expect(response).to eq("https://syldavia-gazette.org/atom/")
443
+ end
444
+
445
+ it "license" do
446
+ response = subject.get_link(links, "license")
447
+ expect(response).to eq("https://creativecommons.org/licenses/by/4.0/legalcode")
448
+ end
449
+ end
450
+
451
+ context "get_series_information" do
452
+ it "only title" do
437
453
  str = nil
438
454
  response = subject.get_series_information(str)
439
455
  expect(response).to eq({})
440
456
  end
441
457
 
442
- it 'only title' do
443
- str = 'DataCite Blog'
458
+ it "only title" do
459
+ str = "DataCite Blog"
444
460
  response = subject.get_series_information(str)
445
- expect(response).to eq('title' => 'DataCite Blog')
461
+ expect(response).to eq("title" => "DataCite Blog")
446
462
  end
447
463
 
448
- it 'title and pages' do
449
- str = 'DataCite Blog, 1-3'
464
+ it "title and pages" do
465
+ str = "DataCite Blog, 1-3"
450
466
  response = subject.get_series_information(str)
451
- expect(response).to eq('firstPage' => '1', 'lastPage' => '3', 'title' => 'DataCite Blog')
467
+ expect(response).to eq("firstPage" => "1", "lastPage" => "3", "title" => "DataCite Blog")
452
468
  end
453
469
 
454
- it 'title, volume and pages' do
455
- str = 'DataCite Blog, 7, 1-3'
470
+ it "title, volume and pages" do
471
+ str = "DataCite Blog, 7, 1-3"
456
472
  response = subject.get_series_information(str)
457
- expect(response).to eq('firstPage' => '1', 'lastPage' => '3', 'title' => 'DataCite Blog',
458
- 'volume' => '7')
473
+ expect(response).to eq("firstPage" => "1", "lastPage" => "3", "title" => "DataCite Blog",
474
+ "volume" => "7")
459
475
  end
460
476
 
461
- it 'title, volume, issue and pages' do
462
- str = 'DataCite Blog, 7(11), 1-3'
477
+ it "title, volume, issue and pages" do
478
+ str = "DataCite Blog, 7(11), 1-3"
463
479
  response = subject.get_series_information(str)
464
- expect(response).to eq('firstPage' => '1', 'issue' => '11', 'lastPage' => '3',
465
- 'title' => 'DataCite Blog', 'volume' => '7')
480
+ expect(response).to eq("firstPage" => "1", "issue" => "11", "lastPage" => "3",
481
+ "title" => "DataCite Blog", "volume" => "7")
466
482
  end
467
483
  end
468
484
 
469
- context 'github' do
470
- it 'github_from_url' do
471
- url = 'https://github.com/datacite/bolognese'
485
+ context "github" do
486
+ it "github_from_url" do
487
+ url = "https://github.com/datacite/bolognese"
472
488
  response = subject.github_from_url(url)
473
- expect(response).to eq(owner: 'datacite', repo: 'bolognese')
489
+ expect(response).to eq(owner: "datacite", repo: "bolognese")
474
490
  end
475
491
 
476
- it 'github_from_url file' do
477
- url = 'https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json'
492
+ it "github_from_url file" do
493
+ url = "https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json"
478
494
  response = subject.github_from_url(url)
479
- expect(response).to eq(owner: 'datacite', repo: 'metadata-reports', release: 'master',
480
- path: 'software/codemeta.json')
495
+ expect(response).to eq(owner: "datacite", repo: "metadata-reports", release: "master",
496
+ path: "software/codemeta.json")
481
497
  end
482
498
 
483
- it 'github_from_url cff file' do
484
- url = 'https://github.com/citation-file-format/ruby-cff/blob/main/CITATION.cff'
499
+ it "github_from_url cff file" do
500
+ url = "https://github.com/citation-file-format/ruby-cff/blob/main/CITATION.cff"
485
501
  response = subject.github_from_url(url)
486
- expect(response).to eq(owner: 'citation-file-format', path: 'CITATION.cff',
487
- release: 'main', repo: 'ruby-cff')
502
+ expect(response).to eq(owner: "citation-file-format", path: "CITATION.cff",
503
+ release: "main", repo: "ruby-cff")
488
504
  end
489
505
 
490
- it 'github_as_codemeta_url' do
491
- url = 'https://github.com/datacite/bolognese'
506
+ it "github_as_codemeta_url" do
507
+ url = "https://github.com/datacite/bolognese"
492
508
  response = subject.github_as_codemeta_url(url)
493
- expect(response).to eq('https://raw.githubusercontent.com/datacite/bolognese/master/codemeta.json')
509
+ expect(response).to eq("https://raw.githubusercontent.com/datacite/bolognese/master/codemeta.json")
494
510
  end
495
511
 
496
- it 'github_as_cff_url' do
497
- url = 'https://github.com/citation-file-format/ruby-cff'
512
+ it "github_as_cff_url" do
513
+ url = "https://github.com/citation-file-format/ruby-cff"
498
514
  response = subject.github_as_cff_url(url)
499
- expect(response).to eq('https://raw.githubusercontent.com/citation-file-format/ruby-cff/main/CITATION.cff')
515
+ expect(response).to eq("https://raw.githubusercontent.com/citation-file-format/ruby-cff/main/CITATION.cff")
500
516
  end
501
517
 
502
- it 'github_from_url file' do
503
- url = 'https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json'
518
+ it "github_from_url file" do
519
+ url = "https://github.com/datacite/metadata-reports/blob/master/software/codemeta.json"
504
520
  response = subject.github_as_codemeta_url(url)
505
- expect(response).to eq('https://raw.githubusercontent.com/datacite/metadata-reports/master/software/codemeta.json')
521
+ expect(response).to eq("https://raw.githubusercontent.com/datacite/metadata-reports/master/software/codemeta.json")
506
522
  end
507
523
  end
508
524
 
509
- context 'spdx' do
510
- it 'name_to_spdx exists' do
511
- name = 'Creative Commons Attribution 4.0 International'
525
+ context "spdx" do
526
+ it "name_to_spdx exists" do
527
+ name = "Creative Commons Attribution 4.0 International"
512
528
  response = subject.name_to_spdx(name)
513
- expect(response).to eq('id' => 'CC-BY-4.0',
514
- 'url' => 'https://creativecommons.org/licenses/by/4.0/legalcode')
529
+ expect(response).to eq("id" => "CC-BY-4.0",
530
+ "url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
515
531
  end
516
532
 
517
- it 'name_to_spdx id' do
518
- name = 'CC-BY-4.0'
533
+ it "name_to_spdx id" do
534
+ name = "CC-BY-4.0"
519
535
  response = subject.name_to_spdx(name)
520
- expect(response).to eq('id' => 'CC-BY-4.0',
521
- 'url' => 'https://creativecommons.org/licenses/by/4.0/legalcode')
536
+ expect(response).to eq("id" => "CC-BY-4.0",
537
+ "url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
522
538
  end
523
539
 
524
- it 'hsh_to_spdx id' do
525
- hsh = { 'rightsIdentifier' => 'CC-BY-4.0' }
540
+ it "hsh_to_spdx id" do
541
+ hsh = { "rightsIdentifier" => "CC-BY-4.0" }
526
542
  response = subject.hsh_to_spdx(hsh)
527
- expect(response).to eq('id' => 'CC-BY-4.0',
528
- 'url' => 'https://creativecommons.org/licenses/by/4.0/legalcode')
543
+ expect(response).to eq("id" => "CC-BY-4.0",
544
+ "url" => "https://creativecommons.org/licenses/by/4.0/legalcode")
529
545
  end
530
546
 
531
- it 'hsh_to_spdx url' do
532
- hsh = { 'rightsURI' => 'http://creativecommons.org/licenses/by-nc/4.0/legalcode' }
547
+ it "hsh_to_spdx url" do
548
+ hsh = { "rightsURI" => "http://creativecommons.org/licenses/by-nc/4.0/legalcode" }
533
549
  response = subject.hsh_to_spdx(hsh)
534
550
  expect(response).to eq(
535
- 'id' => 'CC-BY-NC-4.0',
536
- 'url' => 'https://creativecommons.org/licenses/by-nc/4.0/legalcode'
551
+ "id" => "CC-BY-NC-4.0",
552
+ "url" => "https://creativecommons.org/licenses/by-nc/4.0/legalcode",
537
553
  )
538
554
  end
539
555
 
540
- it 'hsh_to_spdx not found' do
541
- hsh = { 'rightsURI' => 'info:eu-repo/semantics/openAccess' }
556
+ it "hsh_to_spdx not found" do
557
+ hsh = { "rightsURI" => "info:eu-repo/semantics/openAccess" }
542
558
  response = subject.hsh_to_spdx(hsh)
543
- expect(response).to eq({ 'url' => 'info:eu-repo/semantics/openAccess' })
559
+ expect(response).to eq({ "url" => "info:eu-repo/semantics/openAccess" })
544
560
  end
545
561
  end
546
562
 
547
- context 'fos' do
548
- it 'name_to_fos match' do
549
- name = 'Biological sciences'
563
+ context "fos" do
564
+ it "name_to_fos match" do
565
+ name = "Biological sciences"
550
566
  response = subject.name_to_fos(name)
551
- expect(response).to eq([{ 'subject' => 'biological sciences' },
552
- { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf',
553
- 'subject' => 'FOS: Biological sciences',
554
- 'subjectScheme' => 'Fields of Science and Technology (FOS)' }])
567
+ expect(response).to eq([{ "subject" => "biological sciences" },
568
+ { "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
569
+ "subject" => "FOS: Biological sciences",
570
+ "subjectScheme" => "Fields of Science and Technology (FOS)" }])
555
571
  end
556
572
 
557
- it 'name_to_fos for match' do
558
- name = 'Statistics'
573
+ it "name_to_fos for match" do
574
+ name = "Statistics"
559
575
  response = subject.name_to_fos(name)
560
- expect(response).to eq([{ 'subject' => 'statistics' },
561
- { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf',
562
- 'subject' => 'FOS: Mathematics',
563
- 'subjectScheme' => 'Fields of Science and Technology (FOS)' }])
576
+ expect(response).to eq([{ "subject" => "statistics" },
577
+ { "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
578
+ "subject" => "FOS: Mathematics",
579
+ "subjectScheme" => "Fields of Science and Technology (FOS)" }])
564
580
  end
565
581
 
566
- it 'name_to_fos no match' do
567
- name = 'Random tag'
582
+ it "name_to_fos no match" do
583
+ name = "Random tag"
568
584
  response = subject.name_to_fos(name)
569
- expect(response).to eq([{ 'subject' => 'random tag' }])
585
+ expect(response).to eq([{ "subject" => "random tag" }])
570
586
  end
571
587
 
572
- it 'hsh_to_fos match' do
573
- hsh = { '__content__' => 'Biological sciences' }
588
+ it "hsh_to_fos match" do
589
+ hsh = { "__content__" => "Biological sciences" }
574
590
  response = subject.hsh_to_fos(hsh)
575
- expect(response).to eq([{ 'subject' => 'Biological sciences' },
576
- { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf',
577
- 'subject' => 'FOS: Biological sciences',
578
- 'subjectScheme' => 'Fields of Science and Technology (FOS)' }])
591
+ expect(response).to eq([{ "subject" => "Biological sciences" },
592
+ { "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
593
+ "subject" => "FOS: Biological sciences",
594
+ "subjectScheme" => "Fields of Science and Technology (FOS)" }])
579
595
  end
580
596
 
581
- it 'hsh_to_fos for match' do
582
- hsh = { '__content__' => 'Statistics' }
597
+ it "hsh_to_fos for match" do
598
+ hsh = { "__content__" => "Statistics" }
583
599
  response = subject.hsh_to_fos(hsh)
584
- expect(response).to eq([{ 'subject' => 'Statistics' },
585
- { 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf',
586
- 'subject' => 'FOS: Mathematics',
587
- 'subjectScheme' => 'Fields of Science and Technology (FOS)' }])
600
+ expect(response).to eq([{ "subject" => "Statistics" },
601
+ { "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
602
+ "subject" => "FOS: Mathematics",
603
+ "subjectScheme" => "Fields of Science and Technology (FOS)" }])
588
604
  end
589
605
 
590
- it 'hsh_to_fos for with schemeUri in hash' do
606
+ it "hsh_to_fos for with schemeUri in hash" do
591
607
  hsh = {
592
- 'subject' => 'FOS: Computer and information sciences',
593
- 'subjectScheme' => 'Fields of Science and Technology (FOS)',
594
- 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf'
608
+ "subject" => "FOS: Computer and information sciences",
609
+ "subjectScheme" => "Fields of Science and Technology (FOS)",
610
+ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
595
611
  }
596
612
  response = subject.hsh_to_fos(hsh)
597
613
  expect(response).to eq([{
598
- 'subject' => 'FOS: Computer and information sciences',
599
- 'subjectScheme' => 'Fields of Science and Technology (FOS)',
600
- 'schemeUri' => 'http://www.oecd.org/science/inno/38235147.pdf'
601
- }])
614
+ "subject" => "FOS: Computer and information sciences",
615
+ "subjectScheme" => "Fields of Science and Technology (FOS)",
616
+ "schemeUri" => "http://www.oecd.org/science/inno/38235147.pdf",
617
+ }])
602
618
  end
603
619
 
604
- it 'hsh_to_fos no match' do
605
- hsh = { '__content__' => 'Random tag' }
620
+ it "hsh_to_fos no match" do
621
+ hsh = { "__content__" => "Random tag" }
606
622
  response = subject.hsh_to_fos(hsh)
607
- expect(response).to eq([{ 'subject' => 'Random tag' }])
623
+ expect(response).to eq([{ "subject" => "Random tag" }])
608
624
  end
609
625
  end
610
626
 
611
- context 'random doi' do
612
- it 'encode doi' do
613
- prefix = '10.53731'
627
+ context "random doi" do
628
+ it "encode doi" do
629
+ prefix = "10.53731"
614
630
  response = subject.encode_doi(prefix)
615
631
  expect(response).to match(%r{#{prefix}/[a-z0-9]+})
616
632
  expect(response.length).to eq(36)
617
633
  end
618
634
 
619
- it 'decode doi' do
620
- doi = 'https://doi.org/10.53731/revzwnv-rpd913d-8drwz'
635
+ it "decode doi" do
636
+ doi = "https://doi.org/10.53731/revzwnv-rpd913d-8drwz"
621
637
  response = subject.decode_doi(doi)
622
638
  expect(response).to eq(30_286_005_717_401_267_192_153_432_991)
623
639
  end
624
640
 
625
- it 'decode another doi' do
626
- doi = 'https://doi.org/10.53731/rckvde5-tzg61kj-7zvc1'
641
+ it "decode another doi" do
642
+ doi = "https://doi.org/10.53731/rckvde5-tzg61kj-7zvc1"
627
643
  response = subject.decode_doi(doi)
628
644
  expect(response).to eq(30_198_793_950_250_854_133_601_922_433)
629
645
  end
630
646
  end
631
647
 
632
- context 'random id' do
633
- it 'encode id' do
648
+ context "random id" do
649
+ it "encode id" do
634
650
  response = subject.encode_container_id
635
651
  expect(response).to match(%r{[a-z0-9]+})
636
652
  expect(response.length).to eq(7)
637
653
  end
638
654
 
639
- it 'decode id' do
640
- id= '4425y27'
655
+ it "decode id" do
656
+ id = "4425y27"
641
657
  response = subject.decode_container_id(id)
642
658
  expect(response).to eq(4_431_476_807)
643
659
  end
644
660
 
645
- it 'decode another id' do
646
- id = 'gr1by89'
661
+ it "decode another id" do
662
+ id = "gr1by89"
647
663
  response = subject.decode_container_id(id)
648
664
  expect(response).to eq(17_986_615_561)
649
665
  end