relaton 1.15.0 → 1.15.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/docs/README.adoc +1 -3
  3. data/lib/relaton/db.rb +1 -1
  4. data/lib/relaton/registry.rb +1 -1
  5. data/lib/relaton/version.rb +1 -1
  6. data/relaton.gemspec +1 -0
  7. data/spec/relaton/db_spec.rb +14 -20
  8. data/spec/relaton/registry_spec.rb +4 -0
  9. data/spec/relaton_spec.rb +102 -73
  10. data/spec/spec_helper.rb +1 -1
  11. data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +8 -8
  12. data/spec/vcr_cassetes/api_relaton_org.yml +80 -10
  13. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +18 -18
  14. data/spec/vcr_cassetes/bsi_bs_en_iso_8848.yml +17 -17
  15. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +2312 -17
  16. data/spec/vcr_cassetes/cie_001_1980.yml +8 -8
  17. data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +7 -7
  18. data/spec/vcr_cassetes/ecma_6.yml +8 -8
  19. data/spec/vcr_cassetes/en_10160_1999.yml +6820 -33
  20. data/spec/vcr_cassetes/iana_service_names_port_numbers.yml +10 -10
  21. data/spec/vcr_cassetes/ieee_528_2019.yml +8 -8
  22. data/spec/vcr_cassetes/iso_111111119115_1.yml +9 -9
  23. data/spec/vcr_cassetes/iso_19115_1.yml +19 -19
  24. data/spec/vcr_cassetes/iso_19115_1_2.yml +35 -35
  25. data/spec/vcr_cassetes/iso_19115_all_parts.yml +18 -18
  26. data/spec/vcr_cassetes/iso_19133_2005.yml +15 -15
  27. data/spec/vcr_cassetes/iso_combined_applied.yml +33 -33
  28. data/spec/vcr_cassetes/iso_combined_included.yml +33 -33
  29. data/spec/vcr_cassetes/iso_dis.yml +18 -18
  30. data/spec/vcr_cassetes/ogc_19_025r1.yml +8 -8
  31. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +6 -6
  32. data/spec/vcr_cassetes/rfc_8341.yml +13 -9
  33. metadata +16 -16
  34. data/spec/vcr_cassetes/async_fetch.yml +0 -4412
  35. data/spec/vcr_cassetes/bipm_i18n_async_fetch.yml +0 -618
  36. data/spec/vcr_cassetes/bipm_metrologia_29_6_373.yml +0 -294
  37. data/spec/vcr_cassetes/fisp_140.yml +0 -48
  38. data/spec/vcr_cassetes/gb_t_20223_2006.yml +0 -38
  39. data/spec/vcr_cassetes/iec_60050_102_2007.yml +0 -290
  40. data/spec/vcr_cassetes/iec_combined_included.yml +0 -960
  41. data/spec/vcr_cassetes/iho_b_11.yml +0 -74
  42. data/spec/vcr_cassetes/itu_combined_included.yml +0 -1348
  43. data/spec/vcr_cassetes/oasis_amqp_core_types_v1_0_pt1.yml +0 -84
  44. data/spec/vcr_cassetes/sp_800_38b.yml +0 -48
  45. data/spec/vcr_cassetes/threads_from_env.yml +0 -412
  46. data/spec/vcr_cassetes/un_rtade_cefact_2004_32.yml +0 -814
  47. data/spec/vcr_cassetes/w3c_json_ld11.yml +0 -233
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5881725c3b42ac5fa5a25c1bf29f85f864561ea7328bfb2d1b842cd9f5ad9944
4
- data.tar.gz: a712d45a2e065e75c98e0cb35b282325cb0d76eab0f3d8f9ecf39c468c4a4ba0
3
+ metadata.gz: 92d8d26812ae600e09e7b84beb548768db73c0e0837389feb0cf55c84ec4314f
4
+ data.tar.gz: d7737f947638fbe5eb17456c2e41e0b1b567434db39cbbc2f0c1644378765c9a
5
5
  SHA512:
6
- metadata.gz: 3b05040fb095e90626e9653c519973e0f7888d98b8ce9a83bc4388db63c6dda903ee691d5a45aba00512395bcbbc8fae05e1077d9fc79efa2376e2181ea9a0a1
7
- data.tar.gz: 12845e1d6eff0692893a65c64060011f7f99dd53dfc7ba3e313130c8af023e4324431a49cf182c498bc96044828c0555f005647ec7a6b3d548a15da2a0e7fafa
6
+ metadata.gz: 94b13ec45ed1b2f2313212ec1eecd5e25f60cf5017874f342100a2702b141cbb0f09bc275b34ccc1f5afbc6bbfd66f89d19febda44828f7e1f33046ee5c18fce
7
+ data.tar.gz: bc7c20aa21f7c7552a6cc191cce868786949939b7f66c939f69f825b887da48233ed2bde348e837c4388e37164d858edcd6e06702376063d690086872f8011e9
data/docs/README.adoc CHANGED
@@ -1,9 +1,7 @@
1
1
  = Relaton
2
2
 
3
3
  image:https://img.shields.io/gem/v/relaton.svg["Gem Version", link="https://rubygems.org/gems/relaton"]
4
- image:https://github.com/relaton/relaton/workflows/macos/badge.svg["Build Status (macOS)", link="https://github.com/relaton/relaton/actions?workflow=macos"]
5
- image:https://github.com/relaton/relaton/workflows/windows/badge.svg["Build Status (Windows)", link="https://github.com/relaton/relaton/actions?workflow=windows"]
6
- image:https://github.com/relaton/relaton/workflows/ubuntu/badge.svg["Build Status (Ubuntu)", link="https://github.com/relaton/relaton/actions?workflow=ubuntu"]
4
+ image:https://github.com/relaton/relaton/workflows/rake/badge.svg["Build Status", link="https://github.com/relaton/relaton/actions?workflow=rake"]
7
5
  image:https://codeclimate.com/github/relaton/relaton/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/relaton/relaton"]
8
6
  image:https://img.shields.io/github/issues-pr-raw/relaton/relaton.svg["Pull Requests", link="https://github.com/relaton/relaton/pulls"]
9
7
  image:https://img.shields.io/github/commits-since/relaton/relaton/latest.svg["Commits since latest",link="https://github.com/relaton/relaton/releases"]
data/lib/relaton/db.rb CHANGED
@@ -110,7 +110,7 @@ module Relaton
110
110
  Util.log "[relaton] ERROR: #{args[0]} -- #{e.message}", :error
111
111
  args[3].call nil
112
112
  end
113
- @queues[stdclass] = { queue: Queue.new, workers_pool: wp }
113
+ @queues[stdclass] = { queue: SizedQueue.new(threads * 2), workers_pool: wp }
114
114
  Thread.new { process_queue @queues[stdclass] }
115
115
  end
116
116
  @queues[stdclass][:queue] << [ref, year, opts, block]
@@ -9,7 +9,7 @@ module Relaton
9
9
  relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
10
10
  relaton_ogc relaton_calconnect relaton_omg relaton_un relaton_w3c
11
11
  relaton_ieee relaton_iho relaton_bipm relaton_ecma relaton_cie relaton_bsi
12
- relaton_cen relaton_iana relaton_3gpp relaton_oasis relaton_doi
12
+ relaton_cen relaton_iana relaton_3gpp relaton_oasis relaton_doi relaton_jis
13
13
  ].freeze
14
14
 
15
15
  include Singleton
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "1.15.0".freeze
2
+ VERSION = "1.15.1".freeze
3
3
  end
data/relaton.gemspec CHANGED
@@ -45,6 +45,7 @@ Gem::Specification.new do |spec|
45
45
  spec.add_dependency "relaton-iho", "~> 1.14.0"
46
46
  spec.add_dependency "relaton-iso", "~> 1.15.0"
47
47
  spec.add_dependency "relaton-itu", "~> 1.14.0"
48
+ spec.add_dependency "relaton-jis", "~> 1.14.0"
48
49
  spec.add_dependency "relaton-nist", "~> 1.14.0"
49
50
  spec.add_dependency "relaton-oasis", "~> 1.14.0"
50
51
  spec.add_dependency "relaton-ogc", "~> 1.14.0"
@@ -8,6 +8,7 @@ RSpec.describe Relaton::Db do
8
8
  it "create bibitem from YAML content" do
9
9
  h = { "docid" => [{ "id" => "ISO 123", type: "ISO", "primary" => true }] }
10
10
  expect(YAML).to receive(:safe_load).with(:content).and_return h
11
+ allow(YAML).to receive(:safe_load).and_call_original
11
12
  item = subject.send :search_edition_year, "iso/item.yaml", :content, nil, nil
12
13
  expect(item).to be_instance_of RelatonIsoBib::IsoBibliographicItem
13
14
  end
@@ -203,33 +204,27 @@ RSpec.describe Relaton::Db do
203
204
  "ITU-T Y.1911", "ITU-T Y.2012", "ITU-T Y.2206", "ITU-T O.172",
204
205
  "ITU-T G.780/Y.1351", "ITU-T G.711", "ITU-T G.1011"]
205
206
  results = []
206
- VCR.use_cassette "async_fetch", match_requests_on: %i[method uri body] do
207
- refs.each do |ref|
208
- db.fetch_async(ref) { |r| queue << [r, ref] }
209
- end
210
- Timeout.timeout(60) { refs.size.times { results << queue.pop } }
207
+ refs.each do |ref|
208
+ expect(db).to receive(:fetch).with(ref, nil, {}).and_return :result
209
+ db.fetch_async(ref) { |r| queue << [r, ref] }
211
210
  end
211
+ Timeout.timeout(60) { refs.size.times { results << queue.pop } }
212
212
  results.each do |result|
213
- expect(result[0]).to be_instance_of RelatonItu::ItuBibliographicItem
213
+ expect(result[0]).to be :result
214
214
  end
215
215
  end
216
216
 
217
217
  it "BIPM i18n" do
218
- expect(File).to receive(:exist?).with(/index\.yaml/).and_return false
219
- allow(File).to receive(:exist?).and_call_original
220
- # refs = ["CGPM Resolution 1889-00", "CGPM Résolution 1889-00",
221
- # "CGPM Réunion 9", "CGPM Meeting 9"]
222
218
  refs = ["CGPM -- Resolution (1889)", "CGPM -- Résolution (1889)",
223
219
  "CGPM -- Réunion 9 (1948)", "CGPM -- Meeting 9 (1948)"]
224
220
  results = []
225
- VCR.use_cassette "bipm_i18n_async_fetch", match_requests_on: %i[method uri body] do
226
- refs.each do |ref|
227
- db.fetch_async(ref) { |r| queue << [r, ref] }
228
- end
229
- Timeout.timeout(60) { refs.size.times { results << queue.pop } }
221
+ refs.each do |ref|
222
+ expect(db).to receive(:fetch).with(ref, nil, {}).and_return :result
223
+ db.fetch_async(ref) { |r| queue << [r, ref] }
230
224
  end
225
+ Timeout.timeout(60) { refs.size.times { results << queue.pop } }
231
226
  results.each do |result|
232
- expect(result[0]).to be_instance_of RelatonBipm::BipmBibliographicItem
227
+ expect(result[0]).to be :result
233
228
  end
234
229
  end
235
230
 
@@ -262,10 +257,9 @@ RSpec.describe Relaton::Db do
262
257
  expect(ENV).to receive(:[]).with("RELATON_FETCH_PARALLEL").and_return(1)
263
258
  allow(ENV).to receive(:[]).and_call_original
264
259
  expect(Relaton::WorkersPool).to receive(:new).with(1).and_call_original
265
- VCR.use_cassette "threads_from_env" do
266
- db.fetch_async("ITU-T G.993.5") { |r| queue << r }
267
- Timeout.timeout(50) { queue.pop }
268
- end
260
+ expect(db).to receive(:fetch).with("ITU-T G.993.5", nil, {})
261
+ db.fetch_async("ITU-T G.993.5") { |r| queue << r }
262
+ Timeout.timeout(50) { queue.pop }
269
263
  end
270
264
  end
271
265
  end
@@ -105,6 +105,10 @@ RSpec.describe Relaton::Registry do
105
105
  expect(Relaton::Registry.instance.by_type("DOI")).to be_instance_of RelatonDoi::Processor
106
106
  expect(Relaton::Registry.instance.processor_by_ref("doi:10.1000/182")).to be_instance_of RelatonDoi::Processor
107
107
  end
108
+
109
+ it "JIS" do
110
+ expect(Relaton::Registry.instance.by_type("JIS")).to be_instance_of RelatonJis::Processor
111
+ end
108
112
  end
109
113
 
110
114
  it "find processot by dataset" do
data/spec/relaton_spec.rb CHANGED
@@ -68,41 +68,40 @@ RSpec.describe Relaton::Db do
68
68
  end
69
69
 
70
70
  context "IEC" do
71
+ before do
72
+ docid = RelatonBib::DocumentIdentifier.new(id: "IEC 60050-102:2007", type: "IEC")
73
+ item = RelatonIec::IecBibliographicItem.new docid: [docid]
74
+ expect(RelatonIec::IecBibliography).to receive(:get).with("IEC 60050-102:2007", nil, {}).and_return item
75
+ end
76
+
71
77
  it "get by reference" do
72
- VCR.use_cassette "iec_60050_102_2007" do
73
- bib = @db.fetch "IEC 60050-102:2007"
74
- expect(bib.docidentifier[0].id).to eq "IEC 60050-102:2007"
75
- end
78
+ bib = @db.fetch "IEC 60050-102:2007"
79
+ expect(bib.docidentifier[0].id).to eq "IEC 60050-102:2007"
76
80
  end
77
81
 
78
82
  it "get by URN" do
79
- VCR.use_cassette "iec_60050_102_2007" do
80
- bib = @db.fetch "urn:iec:std:iec:60050-102:2007:::"
81
- expect(bib.docidentifier[0].id).to eq "IEC 60050-102:2007"
82
- end
83
+ bib = @db.fetch "urn:iec:std:iec:60050-102:2007:::"
84
+ expect(bib.docidentifier[0].id).to eq "IEC 60050-102:2007"
83
85
  end
84
86
  end
85
87
 
86
88
  context "NIST references" do
87
- before(:each) do
88
- nist_fr = /\.relaton\/nist\/pubs-export\.zip/
89
- expect(File).to receive(:exist?).with(nist_fr).and_return false
90
- expect(File).to receive(:exist?).and_call_original.at_least :once
91
- # expect(FileUtils).to receive(:mv).with kind_of(String), nist_fr
92
- end
93
-
94
89
  it "gets FISP" do
95
- VCR.use_cassette "fisp_140" do
96
- bib = @db.fetch "NIST FIPS 140"
97
- expect(bib).to be_instance_of RelatonNist::NistBibliographicItem
98
- end
90
+ docid = RelatonBib::DocumentIdentifier.new(id: "NIST FIPS 140", type: "NIST")
91
+ item = RelatonNist::NistBibliographicItem.new docid: [docid]
92
+ expect(RelatonNist::NistBibliography).to receive(:get).with("NIST FIPS 140", nil, {}).and_return item
93
+ bib = @db.fetch "NIST FIPS 140"
94
+ expect(bib).to be_instance_of RelatonNist::NistBibliographicItem
95
+ expect(bib.docidentifier[0].id).to eq "NIST FIPS 140"
99
96
  end
100
97
 
101
98
  it "gets SP" do
102
- VCR.use_cassette "sp_800_38b" do
103
- bib = @db.fetch "NIST SP 800-38B"
104
- expect(bib).to be_instance_of RelatonNist::NistBibliographicItem
105
- end
99
+ docid = RelatonBib::DocumentIdentifier.new(id: "NIST SP 800-38B", type: "NIST")
100
+ item = RelatonNist::NistBibliographicItem.new docid: [docid]
101
+ expect(RelatonNist::NistBibliography).to receive(:get).with("NIST SP 800-38B", nil, {}).and_return item
102
+ bib = @db.fetch "NIST SP 800-38B"
103
+ expect(bib).to be_instance_of RelatonNist::NistBibliographicItem
104
+ expect(bib.docidentifier[0].id).to eq "NIST SP 800-38B"
106
105
  end
107
106
  end
108
107
 
@@ -244,17 +243,21 @@ RSpec.describe Relaton::Db do
244
243
  end
245
244
 
246
245
  it "get UN reference" do
247
- VCR.use_cassette "un_rtade_cefact_2004_32" do
248
- bib = @db.fetch "UN TRADE/CEFACT/2004/32", nil, {}
249
- expect(bib).to be_instance_of RelatonUn::UnBibliographicItem
250
- end
246
+ docid = RelatonBib::DocumentIdentifier.new(id: "UN TRADE/CEFACT/2004/32", type: "UN")
247
+ item = RelatonUn::UnBibliographicItem.new docid: [docid], session: RelatonUn::Session.new(session_number: "1")
248
+ expect(RelatonUn::UnBibliography).to receive(:get).with("UN TRADE/CEFACT/2004/32", nil, {}).and_return item
249
+ bib = @db.fetch "UN TRADE/CEFACT/2004/32", nil, {}
250
+ expect(bib).to be_instance_of RelatonUn::UnBibliographicItem
251
+ expect(bib.docidentifier.first.id).to eq "UN TRADE/CEFACT/2004/32"
251
252
  end
252
253
 
253
254
  it "get W3C reference" do
254
- VCR.use_cassette "w3c_json_ld11" do
255
- bib = @db.fetch "W3C REC-json-ld11-20200716", nil, {}
256
- expect(bib).to be_instance_of RelatonW3c::W3cBibliographicItem
257
- end
255
+ docid = RelatonBib::DocumentIdentifier.new(id: "W3C REC-json-ld11-20200716", type: "W3C")
256
+ item = RelatonW3c::W3cBibliographicItem.new docid: [docid]
257
+ expect(RelatonW3c::W3cBibliography).to receive(:get).with("W3C REC-json-ld11-20200716", nil, {}).and_return item
258
+ bib = @db.fetch "W3C REC-json-ld11-20200716", nil, {}
259
+ expect(bib).to be_instance_of RelatonW3c::W3cBibliographicItem
260
+ expect(bib.docidentifier.first.id).to eq "W3C REC-json-ld11-20200716"
258
261
  end
259
262
 
260
263
  it "get IEEE reference" do
@@ -265,10 +268,12 @@ RSpec.describe Relaton::Db do
265
268
  end
266
269
 
267
270
  it "get IHO reference" do
268
- VCR.use_cassette "iho_b_11" do
269
- bib = @db.fetch "IHO B-11"
270
- expect(bib).to be_instance_of RelatonIho::IhoBibliographicItem
271
- end
271
+ docid = RelatonBib::DocumentIdentifier.new(id: "IHO B-11", type: "IHO")
272
+ item = RelatonIho::IhoBibliographicItem.new docid: [docid]
273
+ expect(RelatonIho::IhoBibliography).to receive(:get).with("IHO B-11", nil, {}).and_return item
274
+ bib = @db.fetch "IHO B-11"
275
+ expect(bib).to be_instance_of RelatonIho::IhoBibliographicItem
276
+ expect(bib.docidentifier.first.id).to eq "IHO B-11"
272
277
  end
273
278
 
274
279
  it "get ECMA reference" do
@@ -314,15 +319,20 @@ RSpec.describe Relaton::Db do
314
319
  end
315
320
 
316
321
  it "get OASIS reference" do
317
- VCR.use_cassette "oasis_amqp_core_types_v1_0_pt1" do
318
- bib = @db.fetch "OASIS amqp-core-types-v1.0-Pt1"
319
- expect(bib).to be_instance_of RelatonOasis::OasisBibliographicItem
320
- end
322
+ docid = RelatonBib::DocumentIdentifier.new(id: "OASIS amqp-core-types-v1.0-Pt1", type: "OASIS")
323
+ item = RelatonOasis::OasisBibliographicItem.new docid: [docid]
324
+ expect(RelatonOasis::OasisBibliography).to receive(:get).with("OASIS amqp-core-types-v1.0-Pt1", nil, {}).and_return item
325
+ bib = @db.fetch "OASIS amqp-core-types-v1.0-Pt1"
326
+ expect(bib).to be_instance_of RelatonOasis::OasisBibliographicItem
321
327
  end
322
328
 
323
- it "get BIPM reference", vcr: "bipm_metrologia_29_6_373" do
329
+ it "get BIPM reference" do
330
+ docid = RelatonBib::DocumentIdentifier.new(id: "BIPM Metrologia 29 6 373", type: "BIPM")
331
+ item = RelatonBipm::BipmBibliographicItem.new docid: [docid]
332
+ expect(RelatonBipm::BipmBibliography).to receive(:get).with("BIPM Metrologia 29 6 373", nil, {}).and_return item
324
333
  bib = @db.fetch "BIPM Metrologia 29 6 373"
325
334
  expect(bib).to be_instance_of RelatonBipm::BipmBibliographicItem
335
+ expect(bib.docidentifier.first.id).to eq "BIPM Metrologia 29 6 373"
326
336
  end
327
337
 
328
338
  it "get DOI reference", vcr: "doi_10_6028_nist_ir_8245" do
@@ -359,49 +369,68 @@ RSpec.describe Relaton::Db do
359
369
 
360
370
  context "IEC" do
361
371
  it "included" do
362
- VCR.use_cassette "iec_combined_included" do
363
- bib = @db.fetch "IEC 60027-1, Amd 1, Amd 2"
364
- expect(bib.docidentifier[0].id).to eq "IEC 60027-1, Amd 1, Amd 2"
365
- expect(bib.relation[0].type).to eq "updates"
366
- expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "IEC 60027-1"
367
- expect(bib.relation[1].type).to eq "complements"
368
- expect(bib.relation[1].description.content).to eq "amendment"
369
- expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "IEC 60027-1/AMD1:1997"
370
- expect(bib.relation[2].type).to eq "complements"
371
- expect(bib.relation[2].description.content).to eq "amendment"
372
- expect(bib.relation[2].bibitem.docidentifier[0].id).to eq "IEC 60027-1/AMD2:2005"
373
- end
372
+ item = RelatonIec::IecBibliographicItem.new docid: [RelatonBib::DocumentIdentifier.new(id: "IEC 60027-1", type: "IEC")]
373
+ expect(RelatonIec::IecBibliography).to receive(:get).with("IEC 60027-1", nil, {}).and_return item
374
+ item1 = RelatonIec::IecBibliographicItem.new docid: [RelatonBib::DocumentIdentifier.new(id: "IEC 60027-1/AMD1:1997", type: "IEC")]
375
+ expect(RelatonIec::IecBibliography).to receive(:get).with("IEC 60027-1/Amd 1", nil, {}).and_return item1
376
+ item2 = RelatonIec::IecBibliographicItem.new docid: [RelatonBib::DocumentIdentifier.new(id: "IEC 60027-1/AMD2:2005", type: "IEC")]
377
+ expect(RelatonIec::IecBibliography).to receive(:get).with("IEC 60027-1/Amd 2", nil, {}).and_return item2
378
+ bib = @db.fetch "IEC 60027-1, Amd 1, Amd 2"
379
+ expect(bib.docidentifier[0].id).to eq "IEC 60027-1, Amd 1, Amd 2"
380
+ expect(bib.relation[0].type).to eq "updates"
381
+ expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "IEC 60027-1"
382
+ expect(bib.relation[1].type).to eq "complements"
383
+ expect(bib.relation[1].description.content).to eq "amendment"
384
+ expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "IEC 60027-1/AMD1:1997"
385
+ expect(bib.relation[2].type).to eq "complements"
386
+ expect(bib.relation[2].description.content).to eq "amendment"
387
+ expect(bib.relation[2].bibitem.docidentifier[0].id).to eq "IEC 60027-1/AMD2:2005"
374
388
  end
375
389
  end
376
390
 
377
391
  context "ITU" do
378
392
  it "included" do
379
- VCR.use_cassette "itu_combined_included" do
380
- bib = @db.fetch "ITU-T G.989.2, Amd 1, Amd 2"
381
- expect(bib.docidentifier[0].id).to eq "ITU-T G.989.2, Amd 1, Amd 2"
382
- expect(bib.relation[0].type).to eq "updates"
383
- expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2"
384
- expect(bib.relation[1].type).to eq "complements"
385
- expect(bib.relation[1].description.content).to eq "amendment"
386
- expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2 Amd 1"
387
- expect(bib.relation[2].type).to eq "complements"
388
- expect(bib.relation[2].description.content).to eq "amendment"
389
- expect(bib.relation[2].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2 Amd 2"
390
- end
393
+ docid = RelatonBib::DocumentIdentifier.new(id: "ITU-T G.989.2", type: "ITU")
394
+ group = RelatonItu::ItuGroup.new(name: "Group")
395
+ ed = RelatonItu::EditorialGroup.new(bureau: "Bureau", group: group)
396
+ item = RelatonItu::ItuBibliographicItem.new docid: [docid], editorialgroup: ed
397
+ expect(RelatonItu::ItuBibliography).to receive(:get).with("ITU-T G.989.2", nil, {}).and_return item
398
+ docid1 = RelatonBib::DocumentIdentifier.new(id: "ITU-T G.989.2 Amd 1", type: "ITU")
399
+ item1 = RelatonItu::ItuBibliographicItem.new docid: [docid1], editorialgroup: ed
400
+ expect(RelatonItu::ItuBibliography).to receive(:get).with("ITU-T G.989.2 Amd 1", nil, {}).and_return item1
401
+ docid2 = RelatonBib::DocumentIdentifier.new(id: "ITU-T G.989.2 Amd 2", type: "ITU")
402
+ item2 = RelatonItu::ItuBibliographicItem.new docid: [docid2], editorialgroup: ed
403
+ expect(RelatonItu::ItuBibliography).to receive(:get).with("ITU-T G.989.2 Amd 2", nil, {}).and_return item2
404
+ bib = @db.fetch "ITU-T G.989.2, Amd 1, Amd 2"
405
+ expect(bib.docidentifier[0].id).to eq "ITU-T G.989.2, Amd 1, Amd 2"
406
+ expect(bib.relation[0].type).to eq "updates"
407
+ expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2"
408
+ expect(bib.relation[1].type).to eq "complements"
409
+ expect(bib.relation[1].description.content).to eq "amendment"
410
+ expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2 Amd 1"
411
+ expect(bib.relation[2].type).to eq "complements"
412
+ expect(bib.relation[2].description.content).to eq "amendment"
413
+ expect(bib.relation[2].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2 Amd 2"
391
414
  end
392
415
  end
393
416
 
394
417
  context "NIST" do
395
418
  it "included" do
396
- VCR.use_cassette "nist_combined_included" do
397
- bib = @db.fetch "NIST SP 800-38A, Add"
398
- expect(bib.docidentifier[0].id).to eq "NIST SP 800-38A, Add"
399
- expect(bib.relation[0].type).to eq "updates"
400
- expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "SP 800-38A"
401
- expect(bib.relation[1].type).to eq "complements"
402
- expect(bib.relation[1].description.content).to eq "amendment"
403
- expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "SP 800-38A-Add"
404
- end
419
+ # VCR.use_cassette "nist_combined_included" do
420
+ doci = RelatonBib::DocumentIdentifier.new(id: "SP 800-38A", type: "NIST")
421
+ item = RelatonNist::NistBibliographicItem.new docid: [doci]
422
+ expect(RelatonNist::NistBibliography).to receive(:get).with("NIST SP 800-38A", nil, {}).and_return item
423
+ docid1 = RelatonBib::DocumentIdentifier.new(id: "SP 800-38A-Add", type: "NIST")
424
+ item1 = RelatonNist::NistBibliographicItem.new docid: [docid1]
425
+ expect(RelatonNist::NistBibliography).to receive(:get).with("NIST SP 800-38A/Add", nil, {}).and_return item1
426
+ bib = @db.fetch "NIST SP 800-38A, Add"
427
+ expect(bib.docidentifier[0].id).to eq "NIST SP 800-38A, Add"
428
+ expect(bib.relation[0].type).to eq "updates"
429
+ expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "SP 800-38A"
430
+ expect(bib.relation[1].type).to eq "complements"
431
+ expect(bib.relation[1].description.content).to eq "amendment"
432
+ expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "SP 800-38A-Add"
433
+ # end
405
434
  end
406
435
  end
407
436
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/setup"
3
+ # require "bundler/setup"
4
4
  require "fileutils"
5
5
  require "rspec/matchers"
6
6
  require "equivalent-xml"
@@ -23,7 +23,7 @@ http_interactions:
23
23
  Connection:
24
24
  - keep-alive
25
25
  Content-Length:
26
- - '767'
26
+ - '1571'
27
27
  Cache-Control:
28
28
  - max-age=300
29
29
  Content-Security-Policy:
@@ -41,29 +41,29 @@ http_interactions:
41
41
  X-Xss-Protection:
42
42
  - 1; mode=block
43
43
  X-Github-Request-Id:
44
- - 53D2:0532:2F07A5:497D74:63DC7C0D
44
+ - AF94:0BB8:82E1EC:C34C77:6418BDF8
45
45
  Accept-Ranges:
46
46
  - bytes
47
47
  Date:
48
- - Fri, 03 Feb 2023 03:14:21 GMT
48
+ - Mon, 20 Mar 2023 20:11:37 GMT
49
49
  Via:
50
50
  - 1.1 varnish
51
51
  X-Served-By:
52
- - cache-atl18421-ATL
52
+ - cache-iad-kjyo7100116-IAD
53
53
  X-Cache:
54
54
  - MISS
55
55
  X-Cache-Hits:
56
56
  - '0'
57
57
  X-Timer:
58
- - S1675394062.503790,VS0,VE166
58
+ - S1679343097.936255,VS0,VE191
59
59
  Vary:
60
60
  - Authorization,Accept-Encoding,Origin
61
61
  Access-Control-Allow-Origin:
62
62
  - "*"
63
63
  X-Fastly-Request-Id:
64
- - 6bee88dfd4f1359961ff77544f4599ce394cb395
64
+ - baac0cdd547b3db0edeca1c739043b643f24467b
65
65
  Expires:
66
- - Fri, 03 Feb 2023 03:19:21 GMT
66
+ - Mon, 20 Mar 2023 20:16:37 GMT
67
67
  Source-Age:
68
68
  - '0'
69
69
  body:
@@ -147,5 +147,5 @@ http_interactions:
147
147
  freeze_stage3_meeting: SMG-28
148
148
  close_meeting: SP-28
149
149
  project_end: '1999-02-12'
150
- recorded_at: Fri, 03 Feb 2023 03:14:21 GMT
150
+ recorded_at: Mon, 20 Mar 2023 20:11:37 GMT
151
151
  recorded_with: VCR 6.1.0
@@ -27,30 +27,100 @@ http_interactions:
27
27
  Connection:
28
28
  - keep-alive
29
29
  Date:
30
- - Fri, 03 Feb 2023 03:15:54 GMT
30
+ - Mon, 20 Mar 2023 21:56:44 GMT
31
31
  X-Amzn-Requestid:
32
- - e3f54eed-e6a7-482c-be52-d5f6be6f84d1
32
+ - 6abf641e-024c-44fd-827d-f698ec0b9f98
33
33
  Access-Control-Allow-Origin:
34
34
  - "*"
35
35
  Access-Control-Allow-Headers:
36
36
  - Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
37
37
  X-Amz-Apigw-Id:
38
- - fvhefE3hoAMFYhg=
38
+ - CGZ2SEOloAMFWWg=
39
39
  Access-Control-Allow-Methods:
40
40
  - GET, POST, OPTIONS
41
41
  X-Amzn-Trace-Id:
42
- - Root=1-63dc7c5c-4a3f2c861c18b1b754b6836c;Sampled=0
42
+ - Root=1-6418d68e-4ac1249546dd5c4d25cf3f5c;Sampled=0
43
43
  X-Cache:
44
44
  - Miss from cloudfront
45
45
  Via:
46
- - 1.1 1280ed2b25df326a730453b28b0f9aaa.cloudfront.net (CloudFront)
46
+ - 1.1 f394ef913737988f9bc8ebc09850a2ba.cloudfront.net (CloudFront)
47
47
  X-Amz-Cf-Pop:
48
48
  - ATL51-C1
49
49
  X-Amz-Cf-Id:
50
- - JsWTBCxjJWhdD70rWKwC85fG0E0jEJLfLoApV-vEDfFFxmUHsCBPIA==
50
+ - OLhtxFwfIuox0Cf9v4f3FuGDqppvRO3FGvbpWvxyrCbwhxFPqRrXMg==
51
51
  body:
52
- encoding: ASCII-8BIT
53
- string: !binary |-
54
- PGJpYmRhdGEgdHlwZT0ic3RhbmRhcmQiPgogIDxmZXRjaGVkPjIwMjEtMDctMTE8L2ZldGNoZWQ+CiAgPHRpdGxlIHR5cGU9InRpdGxlLWludHJvIiBmb3JtYXQ9InRleHQvcGxhaW4iIGxhbmd1YWdlPSJlbiIgc2NyaXB0PSJMYXRuIj5HZW9ncmFwaGljIGluZm9ybWF0aW9uPC90aXRsZT4KICA8dGl0bGUgdHlwZT0idGl0bGUtbWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZW4iIHNjcmlwdD0iTGF0biI+TWV0YWRhdGE8L3RpdGxlPgogIDx0aXRsZSB0eXBlPSJ0aXRsZS1wYXJ0IiBmb3JtYXQ9InRleHQvcGxhaW4iIGxhbmd1YWdlPSJlbiIgc2NyaXB0PSJMYXRuIj5QYXJ0IDI6IEV4dGVuc2lvbnMgZm9yIGFjcXVpc2l0aW9uIGFuZCBwcm9jZXNzaW5nPC90aXRsZT4KICA8dGl0bGUgdHlwZT0ibWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZW4iIHNjcmlwdD0iTGF0biI+R2VvZ3JhcGhpYyBpbmZvcm1hdGlvbiAtIE1ldGFkYXRhIC0gUGFydCAyOiBFeHRlbnNpb25zIGZvciBhY3F1aXNpdGlvbiBhbmQgcHJvY2Vzc2luZzwvdGl0bGU+CiAgPHRpdGxlIHR5cGU9InRpdGxlLWludHJvIiBmb3JtYXQ9InRleHQvcGxhaW4iIGxhbmd1YWdlPSJmciIgc2NyaXB0PSJMYXRuIj5JbmZvcm1hdGlvbiBnw6lvZ3JhcGhpcXVlPC90aXRsZT4KICA8dGl0bGUgdHlwZT0idGl0bGUtbWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZnIiIHNjcmlwdD0iTGF0biI+TcOpdGFkb25uw6llczwvdGl0bGU+CiAgPHRpdGxlIHR5cGU9InRpdGxlLXBhcnQiIGZvcm1hdD0idGV4dC9wbGFpbiIgbGFuZ3VhZ2U9ImZyIiBzY3JpcHQ9IkxhdG4iPlBhcnRpZSAyOiBFeHRlbnNpb25zIHBvdXIgbCdhY3F1aXNpdGlvbiBldCBsZSB0cmFpdGVtZW50PC90aXRsZT4KICA8dGl0bGUgdHlwZT0ibWFpbiIgZm9ybWF0PSJ0ZXh0L3BsYWluIiBsYW5ndWFnZT0iZnIiIHNjcmlwdD0iTGF0biI+SW5mb3JtYXRpb24gZ8Opb2dyYXBoaXF1ZSAtIE3DqXRhZG9ubsOpZXMgLSBQYXJ0aWUgMjogRXh0ZW5zaW9ucyBwb3VyIGwnYWNxdWlzaXRpb24gZXQgbGUgdHJhaXRlbWVudDwvdGl0bGU+CiAgPHVyaSB0eXBlPSJzcmMiPmh0dHBzOi8vd3d3Lmlzby5vcmcvc3RhbmRhcmQvNjcwMzkuaHRtbDwvdXJpPgogIDx1cmkgdHlwZT0ib2JwIj5odHRwczovL3d3dy5pc28ub3JnL29icC91aS8jIWlzbzpzdGQ6NjcwMzk6ZW48L3VyaT4KICA8dXJpIHR5cGU9InJzcyI+aHR0cHM6Ly93d3cuaXNvLm9yZy9jb250ZW50cy9kYXRhL3N0YW5kYXJkLzA2LzcwLzY3MDM5LmRldGFpbC5yc3M8L3VyaT4KICA8ZG9jaWRlbnRpZmllciB0eXBlPSJJU08iPklTTyAxOTExNS0yOjIwMTk8L2RvY2lkZW50aWZpZXI+CiAgPGRvY2lkZW50aWZpZXIgdHlwZT0iVVJOIj51cm46aXNvOnN0ZDppc286MTkxMTU6LTI6c3RhZ2UtNjAuNjA6ZWQtMjplbixmcjwvZG9jaWRlbnRpZmllcj4KICA8ZG9jbnVtYmVyPjE5MTE1PC9kb2NudW1iZXI+CiAgPGRhdGUgdHlwZT0icHVibGlzaGVkIj4KICAgIDxvbj4yMDE5LTAxPC9vbj4KICA8L2RhdGU+CiAgPGNvbnRyaWJ1dG9yPgogICAgPHJvbGUgdHlwZT0icHVibGlzaGVyIi8+CiAgICA8b3JnYW5pemF0aW9uPgogICAgICA8bmFtZT5JbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uPC9uYW1lPgogICAgICA8YWJicmV2aWF0aW9uPklTTzwvYWJicmV2aWF0aW9uPgogICAgICA8dXJpPnd3dy5pc28ub3JnPC91cmk+CiAgICA8L29yZ2FuaXphdGlvbj4KICA8L2NvbnRyaWJ1dG9yPgogIDxlZGl0aW9uPjI8L2VkaXRpb24+CiAgPGxhbmd1YWdlPmVuPC9sYW5ndWFnZT4KICA8bGFuZ3VhZ2U+ZnI8L2xhbmd1YWdlPgogIDxzY3JpcHQ+TGF0bjwvc2NyaXB0PgogIDxzdGF0dXM+CiAgICA8c3RhZ2U+NjA8L3N0YWdlPgogICAgPHN1YnN0YWdlPjYwPC9zdWJzdGFnZT4KICA8L3N0YXR1cz4KICA8Y29weXJpZ2h0PgogICAgPGZyb20+MjAxOTwvZnJvbT4KICAgIDxvd25lcj4KICAgICAgPG9yZ2FuaXphdGlvbj4KICAgICAgICA8bmFtZT5JU088L25hbWU+CiAgICAgIDwvb3JnYW5pemF0aW9uPgogICAgPC9vd25lcj4KICA8L2NvcHlyaWdodD4KICA8cmVsYXRpb24gdHlwZT0ib2Jzb2xldGVzIj4KICAgIDxiaWJpdGVtIHR5cGU9InN0YW5kYXJkIj4KICAgICAgPGZvcm1hdHRlZHJlZiBmb3JtYXQ9InRleHQvcGxhaW4iPklTTyAxOTExNS0yOjIwMDk8L2Zvcm1hdHRlZHJlZj4KICAgIDwvYmliaXRlbT4KICA8L3JlbGF0aW9uPgogIDxyZWxhdGlvbiB0eXBlPSJ1cGRhdGVzIj4KICAgIDxiaWJpdGVtIHR5cGU9InN0YW5kYXJkIj4KICAgICAgPGZvcm1hdHRlZHJlZiBmb3JtYXQ9InRleHQvcGxhaW4iPklTTyAxOTExNS0yOjIwMTkvUFJGIEFtZCAxPC9mb3JtYXR0ZWRyZWY+CiAgICAgIDxkYXRlIHR5cGU9ImNpcmN1bGF0ZWQiPgogICAgICAgIDxvbj4yMDE5LTAxLTEwPC9vbj4KICAgICAgPC9kYXRlPgogICAgPC9iaWJpdGVtPgogIDwvcmVsYXRpb24+CiAgPHBsYWNlPkdlbmV2YTwvcGxhY2U+CiAgPGV4dD4KICAgIDxkb2N0eXBlPmludGVybmF0aW9uYWwtc3RhbmRhcmQ8L2RvY3R5cGU+CiAgICA8ZWRpdG9yaWFsZ3JvdXA+CiAgICAgIDx0ZWNobmljYWwtY29tbWl0dGVlIG51bWJlcj0iMjExIiB0eXBlPSJUQyI+SVNPL1RDIDIxMUdlb2dyYXBoaWMgaW5mb3JtYXRpb24vR2VvbWF0aWNzPC90ZWNobmljYWwtY29tbWl0dGVlPgogICAgPC9lZGl0b3JpYWxncm91cD4KICAgIDxpY3M+CiAgICAgIDxjb2RlPjM1LjI0MC43MDwvY29kZT4KICAgICAgPHRleHQ+SVQgYXBwbGljYXRpb25zIGluIHNjaWVuY2U8L3RleHQ+CiAgICA8L2ljcz4KICAgIDxzdHJ1Y3R1cmVkaWRlbnRpZmllciB0eXBlPSJJU08iPgogICAgICA8cHJvamVjdC1udW1iZXI+SVNPIDE5MTE1PC9wcm9qZWN0LW51bWJlcj4KICAgIDwvc3RydWN0dXJlZGlkZW50aWZpZXI+CiAgPC9leHQ+CjwvYmliZGF0YT4=
55
- recorded_at: Fri, 03 Feb 2023 03:15:54 GMT
52
+ encoding: UTF-8
53
+ string: |-
54
+ <bibdata type="standard">
55
+ <fetched>2021-07-11</fetched>
56
+ <title type="title-intro" format="text/plain" language="en" script="Latn">Geographic information</title>
57
+ <title type="title-main" format="text/plain" language="en" script="Latn">Metadata</title>
58
+ <title type="title-part" format="text/plain" language="en" script="Latn">Part 2: Extensions for acquisition and processing</title>
59
+ <title type="main" format="text/plain" language="en" script="Latn">Geographic information - Metadata - Part 2: Extensions for acquisition and processing</title>
60
+ <title type="title-intro" format="text/plain" language="fr" script="Latn">Information géographique</title>
61
+ <title type="title-main" format="text/plain" language="fr" script="Latn">Métadonnées</title>
62
+ <title type="title-part" format="text/plain" language="fr" script="Latn">Partie 2: Extensions pour l'acquisition et le traitement</title>
63
+ <title type="main" format="text/plain" language="fr" script="Latn">Information géographique - Métadonnées - Partie 2: Extensions pour l'acquisition et le traitement</title>
64
+ <uri type="src">https://www.iso.org/standard/67039.html</uri>
65
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:67039:en</uri>
66
+ <uri type="rss">https://www.iso.org/contents/data/standard/06/70/67039.detail.rss</uri>
67
+ <docidentifier type="ISO">ISO 19115-2:2019</docidentifier>
68
+ <docidentifier type="URN">urn:iso:std:iso:19115:-2:stage-60.60:ed-2:en,fr</docidentifier>
69
+ <docnumber>19115</docnumber>
70
+ <date type="published">
71
+ <on>2019-01</on>
72
+ </date>
73
+ <contributor>
74
+ <role type="publisher"/>
75
+ <organization>
76
+ <name>International Organization for Standardization</name>
77
+ <abbreviation>ISO</abbreviation>
78
+ <uri>www.iso.org</uri>
79
+ </organization>
80
+ </contributor>
81
+ <edition>2</edition>
82
+ <language>en</language>
83
+ <language>fr</language>
84
+ <script>Latn</script>
85
+ <status>
86
+ <stage>60</stage>
87
+ <substage>60</substage>
88
+ </status>
89
+ <copyright>
90
+ <from>2019</from>
91
+ <owner>
92
+ <organization>
93
+ <name>ISO</name>
94
+ </organization>
95
+ </owner>
96
+ </copyright>
97
+ <relation type="obsoletes">
98
+ <bibitem type="standard">
99
+ <formattedref format="text/plain">ISO 19115-2:2009</formattedref>
100
+ </bibitem>
101
+ </relation>
102
+ <relation type="updates">
103
+ <bibitem type="standard">
104
+ <formattedref format="text/plain">ISO 19115-2:2019/PRF Amd 1</formattedref>
105
+ <date type="circulated">
106
+ <on>2019-01-10</on>
107
+ </date>
108
+ </bibitem>
109
+ </relation>
110
+ <place>Geneva</place>
111
+ <ext>
112
+ <doctype>international-standard</doctype>
113
+ <editorialgroup>
114
+ <technical-committee number="211" type="TC">ISO/TC 211Geographic information/Geomatics</technical-committee>
115
+ </editorialgroup>
116
+ <ics>
117
+ <code>35.240.70</code>
118
+ <text>IT applications in science</text>
119
+ </ics>
120
+ <structuredidentifier type="ISO">
121
+ <project-number>ISO 19115</project-number>
122
+ </structuredidentifier>
123
+ </ext>
124
+ </bibdata>
125
+ recorded_at: Mon, 20 Mar 2023 21:56:44 GMT
56
126
  recorded_with: VCR 6.1.0