relaton 1.7.5 → 1.8.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +1 -1
- data/.rubocop.yml +1 -1
- data/docs/README.adoc +20 -11
- data/lib/relaton.rb +3 -0
- data/lib/relaton/config.rb +7 -3
- data/lib/relaton/db.rb +199 -99
- data/lib/relaton/db_cache.rb +44 -125
- data/lib/relaton/registry.rb +3 -2
- data/lib/relaton/storage.rb +186 -0
- data/lib/relaton/util.rb +3 -1
- data/lib/relaton/version.rb +1 -1
- data/lib/relaton/workers_pool.rb +1 -3
- data/relaton.gemspec +24 -19
- data/spec/relaton/config_spec.rb +1 -1
- data/spec/relaton/db_cache_spec.rb +2 -2
- data/spec/relaton/db_spec.rb +65 -16
- data/spec/relaton/regirtry_spec.rb +10 -2
- data/spec/relaton/storage_spec.rb +130 -0
- data/spec/relaton_spec.rb +61 -13
- data/spec/spec_helper.rb +4 -0
- data/spec/vcr_cassetes/19133_2005.yml +23 -23
- data/spec/vcr_cassetes/api_relaton_org.yml +33 -0
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +182 -0
- data/spec/vcr_cassetes/async_fetch.yml +4854 -0
- data/spec/vcr_cassetes/bsi_bs_en_iso_8848.yml +159 -0
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +10 -10
- data/spec/vcr_cassetes/cen_en_10160_1999.yml +249 -0
- data/spec/vcr_cassetes/cie_001_1980.yml +7 -7
- data/spec/vcr_cassetes/ecma_6.yml +133 -68
- data/spec/vcr_cassetes/fisp_140.yml +4 -4
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +9 -9
- data/spec/vcr_cassetes/iec_60050_102_2007.yml +30 -28
- data/spec/vcr_cassetes/iec_combined_included.yml +81 -85
- data/spec/vcr_cassetes/ieee_528_2019.yml +19 -17
- data/spec/vcr_cassetes/iho_b_11.yml +7 -7
- data/spec/vcr_cassetes/iso_111111119115_1.yml +5 -5
- data/spec/vcr_cassetes/iso_19115.yml +23 -23
- data/spec/vcr_cassetes/iso_19115_1.yml +20 -20
- data/spec/vcr_cassetes/iso_19115_1_2.yml +42 -42
- data/spec/vcr_cassetes/iso_awi_14093.yml +182 -0
- data/spec/vcr_cassetes/iso_combined_applied.yml +42 -42
- data/spec/vcr_cassetes/iso_combined_included.yml +45 -45
- data/spec/vcr_cassetes/itu_combined_included.yml +813 -681
- data/spec/vcr_cassetes/ogc_19_025r1.yml +1325 -1158
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +43 -0
- data/spec/vcr_cassetes/rfc_8341.yml +7 -7
- data/spec/vcr_cassetes/sp_800_38b.yml +4 -4
- data/spec/vcr_cassetes/un_rtade_cefact_2004_32.yml +34 -34
- data/spec/vcr_cassetes/w3c_json_ld11.yml +17 -17
- metadata +126 -51
- data/localcache/iec/iec_60050_102_2007.xml +0 -58
- data/localcache/iec/version +0 -1
- data/spec/vcr_cassetes/iso_awi_24229.yml +0 -182
- data/spec/vcr_cassetes/ogm_ami4ccm_1_0.yml +0 -55
data/lib/relaton/util.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
module Relaton
|
2
2
|
module Util
|
3
|
+
# @param message [String]
|
4
|
+
# @param type [Symbol] default :info
|
3
5
|
def self.log(message, type = :info)
|
4
6
|
log_types = Relaton.configuration.logs.map(&:to_s) || []
|
5
7
|
|
6
8
|
if log_types.include?(type.to_s)
|
7
|
-
|
9
|
+
warn(message)
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
data/lib/relaton/version.rb
CHANGED
data/lib/relaton/workers_pool.rb
CHANGED
data/relaton.gemspec
CHANGED
@@ -27,25 +27,28 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
spec.files = `git ls-files`.split("\n")
|
29
29
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
30
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
30
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
31
31
|
|
32
32
|
# spec.add_dependency "algoliasearch"
|
33
|
-
spec.add_dependency "
|
34
|
-
spec.add_dependency "relaton-
|
35
|
-
spec.add_dependency "relaton-
|
36
|
-
spec.add_dependency "relaton-
|
37
|
-
spec.add_dependency "relaton-
|
38
|
-
spec.add_dependency "relaton-
|
39
|
-
spec.add_dependency "relaton-
|
40
|
-
spec.add_dependency "relaton-
|
41
|
-
spec.add_dependency "relaton-
|
42
|
-
spec.add_dependency "relaton-
|
43
|
-
spec.add_dependency "relaton-
|
44
|
-
spec.add_dependency "relaton-
|
45
|
-
spec.add_dependency "relaton-
|
46
|
-
spec.add_dependency "relaton-
|
47
|
-
spec.add_dependency "relaton-
|
48
|
-
spec.add_dependency "relaton-
|
33
|
+
spec.add_dependency "aws-sdk-s3", "~> 1.96.0"
|
34
|
+
spec.add_dependency "relaton-bipm", "~> 1.8.0"
|
35
|
+
spec.add_dependency "relaton-bsi", "~> 1.8.0"
|
36
|
+
spec.add_dependency "relaton-calconnect", "~> 1.8.0"
|
37
|
+
spec.add_dependency "relaton-cen", "~> 1.8.pre1"
|
38
|
+
spec.add_dependency "relaton-cie", "~> 1.8.0"
|
39
|
+
spec.add_dependency "relaton-ecma", "~> 1.8.0"
|
40
|
+
spec.add_dependency "relaton-gb", "~> 1.8.0"
|
41
|
+
spec.add_dependency "relaton-iec", ">= 1.8.0"
|
42
|
+
spec.add_dependency "relaton-ieee", "~> 1.8.0"
|
43
|
+
spec.add_dependency "relaton-ietf", "~> 1.8.0"
|
44
|
+
spec.add_dependency "relaton-iho", "~> 1.8.0"
|
45
|
+
spec.add_dependency "relaton-iso", ">= 1.8.0"
|
46
|
+
spec.add_dependency "relaton-itu", ">= 1.8.0"
|
47
|
+
spec.add_dependency "relaton-nist", ">= 1.8.0"
|
48
|
+
spec.add_dependency "relaton-ogc", "~> 1.8.0"
|
49
|
+
spec.add_dependency "relaton-omg", "~> 1.8.0"
|
50
|
+
spec.add_dependency "relaton-un", "~> 1.8.0"
|
51
|
+
spec.add_dependency "relaton-w3c", "~> 1.8.0"
|
49
52
|
|
50
53
|
spec.add_development_dependency "byebug", "~> 11.0"
|
51
54
|
# spec.add_development_dependency "debase"
|
@@ -53,9 +56,11 @@ Gem::Specification.new do |spec|
|
|
53
56
|
spec.add_development_dependency "guard", "~> 2.14"
|
54
57
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
55
58
|
spec.add_development_dependency "pry-byebug", "~> 3.9.0"
|
56
|
-
spec.add_development_dependency "rake", "~>
|
59
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
57
60
|
spec.add_development_dependency "rspec", "~> 3.6"
|
58
|
-
spec.add_development_dependency "rubocop", "
|
61
|
+
spec.add_development_dependency "rubocop", "~> 1.17.0"
|
62
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.11.0"
|
63
|
+
spec.add_development_dependency "rubocop-rails", "~> 2.10.0"
|
59
64
|
# spec.add_development_dependency "ruby-debug-ide"
|
60
65
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
61
66
|
spec.add_development_dependency "timecop", "~> 0.9"
|
data/spec/relaton/config_spec.rb
CHANGED
@@ -6,8 +6,8 @@ RSpec.describe Relaton::DbCache do
|
|
6
6
|
cache_path = File.expand_path("~/.relaton/cache")
|
7
7
|
FileUtils.mv cache_path, "relaton1/cache", force: true
|
8
8
|
FileUtils.rm_rf %w(relaton)
|
9
|
-
Relaton::
|
10
|
-
global_cache: true, local_cache: "", flush_caches: true
|
9
|
+
Relaton::Db.init_bib_caches(
|
10
|
+
global_cache: true, local_cache: "", flush_caches: true,
|
11
11
|
)
|
12
12
|
expect(File.exist?(cache_path)).to be true
|
13
13
|
expect(File.exist?("relaton")).to be true
|
data/spec/relaton/db_spec.rb
CHANGED
@@ -1,22 +1,62 @@
|
|
1
1
|
RSpec.describe Relaton::Db do
|
2
2
|
before(:each) { FileUtils.rm_rf %w[testcache testcache2] }
|
3
3
|
|
4
|
+
context "initialization in API mode" do
|
5
|
+
before(:each) { Relaton.configure { |c| c.api_mode = true } }
|
6
|
+
after(:each) { Relaton.configure { |c| c.api_mode = false } }
|
7
|
+
|
8
|
+
it do
|
9
|
+
db = Relaton::Db.new "cache", nil
|
10
|
+
cache = db.instance_variable_get :@db
|
11
|
+
expect(cache.dir).to eq "cache"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "with default cache directory" do
|
15
|
+
db = Relaton::Db.init_bib_caches global_cache: true
|
16
|
+
cache = db.instance_variable_get :@db
|
17
|
+
expect(cache.dir).to eq "cache"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
4
21
|
context "modifing database" do
|
5
|
-
|
6
|
-
|
22
|
+
let(:db) { Relaton::Db.new "testcache", "testcache2" }
|
23
|
+
|
24
|
+
before(:each) do
|
7
25
|
db.save_entry "ISO(ISO 123)", "<bibitem id='ISO123></bibitem>"
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
26
|
+
end
|
27
|
+
|
28
|
+
context "move to new dir" do
|
29
|
+
let(:db) { Relaton::Db.new "global_cache", "local_cache" }
|
30
|
+
|
31
|
+
after(:each) do
|
32
|
+
FileUtils.rm_rf "global_cache"
|
33
|
+
FileUtils.rm_rf "local_cache"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "global cache" do
|
37
|
+
expect(File.exist?("global_cache")).to be true
|
38
|
+
expect(db.mv("testcache")).to eq "testcache"
|
39
|
+
expect(File.exist?("testcache")).to be true
|
40
|
+
expect(File.exist?("global_cache")).to be false
|
41
|
+
end
|
42
|
+
|
43
|
+
it "local cache" do
|
44
|
+
expect(File.exist?("local_cache")).to be true
|
45
|
+
expect(db.mv("testcache2", type: :local)).to eq "testcache2"
|
46
|
+
expect(File.exist?("testcache2")).to be true
|
47
|
+
expect(File.exist?("local_cache")).to be false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it "warn if moving in existed dir" do
|
52
|
+
expect(File).to receive(:exist?).with("new_cache_dir")
|
53
|
+
.and_return true
|
54
|
+
expect do
|
55
|
+
expect(db.mv("new_cache_dir")).to be_nil
|
56
|
+
end.to output(/\[relaton\] WARNING: target directory exists/).to_stderr
|
15
57
|
end
|
16
58
|
|
17
59
|
it "clear" do
|
18
|
-
db = Relaton::Db.new "testcache", "testcache2"
|
19
|
-
db.save_entry "ISO(ISO 123)", "<bibitem id='ISO123></bibitem>"
|
20
60
|
expect(File.exist?("testcache/iso")).to be true
|
21
61
|
expect(File.exist?("testcache2/iso")).to be true
|
22
62
|
db.clear
|
@@ -134,12 +174,21 @@ RSpec.describe Relaton::Db do
|
|
134
174
|
let(:queue) { Queue.new }
|
135
175
|
|
136
176
|
it "success" do
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
177
|
+
refs = ["ITU-T G.993.5", "ITU-T G.994.1", "ITU-T H.264.1", "ITU-T H.740",
|
178
|
+
"ITU-T Y.1911", "ITU-T Y.2012", "ITU-T Y.2206", "ITU-T O.172",
|
179
|
+
"ITU-T G.780/Y.1351", "ITU-T G.711", "ITU-T G.1011"]
|
180
|
+
results = []
|
181
|
+
VCR.use_cassette "async_fetch", match_requests_on: %i[method uri body] do
|
182
|
+
refs.each do |ref|
|
183
|
+
db.fetch_async(ref) { |r| queue << r }
|
184
|
+
end
|
185
|
+
Timeout.timeout(60) do
|
186
|
+
refs.size.times { results << queue.pop }
|
187
|
+
end
|
188
|
+
end
|
189
|
+
results.each do |result|
|
190
|
+
expect(result).to be_instance_of RelatonItu::ItuBibliographicItem
|
141
191
|
end
|
142
|
-
expect(result).to be_instance_of RelatonIetf::IetfBibliographicItem
|
143
192
|
end
|
144
193
|
|
145
194
|
it "prefix not found" do
|
@@ -2,8 +2,8 @@ RSpec.describe Relaton::Registry do
|
|
2
2
|
it "outputs backend not present" do
|
3
3
|
stub_const "Relaton::Registry::SUPPORTED_GEMS", ["not_supported_gem"]
|
4
4
|
expect { Relaton::Registry.clone.instance }.to output(
|
5
|
-
/backend not_supported_gem not present
|
6
|
-
).
|
5
|
+
/backend not_supported_gem not present/,
|
6
|
+
).to_stderr
|
7
7
|
end
|
8
8
|
|
9
9
|
it "finds ISO processor" do
|
@@ -79,5 +79,13 @@ RSpec.describe Relaton::Registry do
|
|
79
79
|
it "CIE" do
|
80
80
|
expect(Relaton::Registry.instance.by_type("CIE")).to be_instance_of RelatonCie::Processor
|
81
81
|
end
|
82
|
+
|
83
|
+
it "BSI" do
|
84
|
+
expect(Relaton::Registry.instance.by_type("BSI")).to be_instance_of RelatonBsi::Processor
|
85
|
+
end
|
86
|
+
|
87
|
+
it "CEN" do
|
88
|
+
expect(Relaton::Registry.instance.by_type("CEN")).to be_instance_of RelatonCen::Processor
|
89
|
+
end
|
82
90
|
end
|
83
91
|
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
RSpec.describe Relaton::Storage do
|
2
|
+
context "API mode" do
|
3
|
+
before(:each) do
|
4
|
+
Relaton.configure do |config|
|
5
|
+
config.api_mode = true
|
6
|
+
end
|
7
|
+
Singleton.__init__ Relaton::Storage
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Relaton.configure do |config|
|
12
|
+
config.api_mode = false
|
13
|
+
end
|
14
|
+
Singleton.__init__ Relaton::Storage
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:storage) { Relaton::Storage.instance }
|
18
|
+
let(:bucket) { "test-bucket" }
|
19
|
+
|
20
|
+
it "save document to S3" do
|
21
|
+
dir = "cahche/iso"
|
22
|
+
# file = "doc.xml"
|
23
|
+
body = "<doc>Test doc</doc>"
|
24
|
+
key = File.join dir, "doc.xml"
|
25
|
+
client = double "AwsClient"
|
26
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
|
27
|
+
expect(client).to receive(:head_object).with(bucket: bucket, key: "cahche/iso/version")
|
28
|
+
expect(client).to receive(:put_object).with(
|
29
|
+
bucket: bucket, key: key, body: body,
|
30
|
+
content_type: "text/plain; charset=utf-8"
|
31
|
+
)
|
32
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
33
|
+
storage.save dir, key, body
|
34
|
+
end
|
35
|
+
|
36
|
+
it "read document from S3" do
|
37
|
+
dir = "cahche/iso"
|
38
|
+
# file = "doc.xml"
|
39
|
+
body = "<doc>Test doc</doc>"
|
40
|
+
key = File.join dir, "doc"
|
41
|
+
client = double "AwsClient"
|
42
|
+
item = double "Item", key: "#{key}.xml"
|
43
|
+
list = double "List", contents: [item]
|
44
|
+
obj_body = double "Body", read: body
|
45
|
+
obj = double "Object", body: obj_body
|
46
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
|
47
|
+
expect(client).to receive(:list_objects_v2).with(bucket: bucket, prefix: "#{key}.").and_return list
|
48
|
+
expect(client).to receive(:get_object).with(bucket: bucket, key: "#{key}.xml").and_return obj
|
49
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
50
|
+
expect(storage.get(key)).to eq body
|
51
|
+
end
|
52
|
+
|
53
|
+
it "delete document from S3" do
|
54
|
+
key = "cache/iso/doc"
|
55
|
+
client = double "AwsClient"
|
56
|
+
item = double "Item", key: "#{key}.xml"
|
57
|
+
list = double "List", contents: [item]
|
58
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
|
59
|
+
expect(client).to receive(:list_objects_v2).with(bucket: bucket, prefix: "#{key}.").and_return list
|
60
|
+
expect(client).to receive(:delete_object).with(bucket: bucket, key: "#{key}.xml")
|
61
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
62
|
+
storage.delete key
|
63
|
+
end
|
64
|
+
|
65
|
+
it "return all the documents from S3" do
|
66
|
+
dir = "cahche/iso"
|
67
|
+
# file = "doc.xml"
|
68
|
+
body = "<doc>Test doc</doc>"
|
69
|
+
key = File.join dir, "doc.xml"
|
70
|
+
client = double "AwsClient"
|
71
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
|
72
|
+
item = double "Item", key: key
|
73
|
+
list = double "List", contents: [item]
|
74
|
+
obj_body = double "Body", read: body
|
75
|
+
obj = double "Object", body: obj_body
|
76
|
+
expect(client).to receive(:list_objects_v2).with(bucket: bucket, prefix: dir).and_return list
|
77
|
+
expect(client).to receive(:get_object).with(bucket: bucket, key: key).and_return obj
|
78
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
79
|
+
contents = storage.all dir
|
80
|
+
expect(contents).to eq [body]
|
81
|
+
end
|
82
|
+
|
83
|
+
it "set version" do
|
84
|
+
dir = "cahche/iso"
|
85
|
+
key = File.join dir, "version"
|
86
|
+
hash = Relaton::Registry.instance.by_type("iso").grammar_hash
|
87
|
+
client = double "AwsClient"
|
88
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
|
89
|
+
# expect(ENV).to receive(:[]).and_call_original
|
90
|
+
error = Aws::S3::Errors::NotFound.new Seahorse::Client::RequestContext.new, ""
|
91
|
+
expect(client).to receive(:head_object).with(bucket: bucket, key: key)
|
92
|
+
.and_raise error
|
93
|
+
expect(client).to receive(:put_object).with(
|
94
|
+
bucket: bucket, key: key, body: hash,
|
95
|
+
content_type: "text/plain; charset=utf-8"
|
96
|
+
)
|
97
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
98
|
+
storage.send :set_version, dir
|
99
|
+
end
|
100
|
+
|
101
|
+
context "check version" do
|
102
|
+
it "valid" do
|
103
|
+
dir = "cahche/iso"
|
104
|
+
key = File.join dir, "version"
|
105
|
+
hash = Relaton::Registry.instance.by_type("iso").grammar_hash
|
106
|
+
client = double "AwsClient"
|
107
|
+
obj_body = double "Body", read: hash
|
108
|
+
obj = double "Object", body: obj_body
|
109
|
+
expect(client).to receive(:get_object).with(bucket: bucket, key: key).and_return obj
|
110
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
111
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket)
|
112
|
+
expect(storage.check_version?(dir)).to be true
|
113
|
+
end
|
114
|
+
|
115
|
+
it "version file doesn't exist" do
|
116
|
+
dir = "cahche/iso"
|
117
|
+
key = File.join dir, "version"
|
118
|
+
# hash = "invalid"
|
119
|
+
client = double "AwsClient"
|
120
|
+
# obj_body = double "Body", read: hash
|
121
|
+
# obj = double "Object", body: obj_body
|
122
|
+
error = Aws::S3::Errors::NoSuchKey.new Seahorse::Client::RequestContext.new, ""
|
123
|
+
expect(client).to receive(:get_object).with(bucket: bucket, key: key).and_raise error
|
124
|
+
expect(Aws::S3::Client).to receive(:new).and_return client
|
125
|
+
expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket)
|
126
|
+
expect(storage.check_version?(dir)).to be false
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/spec/relaton_spec.rb
CHANGED
@@ -6,7 +6,7 @@ RSpec.describe Relaton::Db do
|
|
6
6
|
|
7
7
|
it "rejects an illegal reference prefix" do
|
8
8
|
expect { @db.fetch("XYZ XYZ", nil, {}) }.to output(
|
9
|
-
/does not have a recognised prefix
|
9
|
+
/does not have a recognised prefix/,
|
10
10
|
).to_stderr
|
11
11
|
end
|
12
12
|
|
@@ -38,7 +38,7 @@ RSpec.describe Relaton::Db do
|
|
38
38
|
'type="standard">'
|
39
39
|
testcache = Relaton::DbCache.new "testcache"
|
40
40
|
expect(
|
41
|
-
testcache.valid_entry?("ISO(ISO 19133:2005)", Date.today.year.to_s)
|
41
|
+
testcache.valid_entry?("ISO(ISO 19133:2005)", Date.today.year.to_s),
|
42
42
|
).to eq Date.today.year.to_s
|
43
43
|
end
|
44
44
|
end
|
@@ -60,8 +60,8 @@ RSpec.describe Relaton::Db do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it "gets sn ISO/AWI reference" do
|
63
|
-
VCR.use_cassette "
|
64
|
-
bib = @db.fetch "ISO/AWI
|
63
|
+
VCR.use_cassette "iso_awi_14093" do
|
64
|
+
bib = @db.fetch "ISO/AWI 14093"
|
65
65
|
expect(bib).not_to be_nil
|
66
66
|
end
|
67
67
|
end
|
@@ -225,7 +225,7 @@ RSpec.describe Relaton::Db do
|
|
225
225
|
end
|
226
226
|
|
227
227
|
it "get OMG reference" do
|
228
|
-
VCR.use_cassette "
|
228
|
+
VCR.use_cassette "omg_ami4ccm_1_0" do
|
229
229
|
bib = @db.fetch "OMG AMI4CCM 1.0", nil, {}
|
230
230
|
expect(bib).to be_instance_of RelatonOmg::OmgBibliographicItem
|
231
231
|
end
|
@@ -278,6 +278,20 @@ RSpec.describe Relaton::Db do
|
|
278
278
|
end
|
279
279
|
end
|
280
280
|
|
281
|
+
it "get BSI reference" do
|
282
|
+
VCR.use_cassette "bsi_bs_en_iso_8848" do
|
283
|
+
bib = @db.fetch "BSI BS EN ISO 8848"
|
284
|
+
expect(bib).to be_instance_of RelatonBsi::BsiBibliographicItem
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
it "get CEN reference" do
|
289
|
+
VCR.use_cassette "cen_en_10160_1999" do
|
290
|
+
bib = @db.fetch "CEN EN 10160:1999"
|
291
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
281
295
|
context "get combined documents" do
|
282
296
|
context "ISO" do
|
283
297
|
it "included" do
|
@@ -331,17 +345,17 @@ RSpec.describe Relaton::Db do
|
|
331
345
|
expect(bib.relation[0].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2"
|
332
346
|
expect(bib.relation[1].type).to eq "complements"
|
333
347
|
expect(bib.relation[1].description.content).to eq "amendment"
|
334
|
-
expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2
|
348
|
+
expect(bib.relation[1].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2 Amd 1"
|
335
349
|
expect(bib.relation[2].type).to eq "complements"
|
336
350
|
expect(bib.relation[2].description.content).to eq "amendment"
|
337
|
-
expect(bib.relation[2].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2
|
351
|
+
expect(bib.relation[2].bibitem.docidentifier[0].id).to eq "ITU-T G.989.2 Amd 2"
|
338
352
|
end
|
339
353
|
end
|
340
354
|
end
|
341
355
|
|
342
356
|
context "HIST" do
|
343
357
|
it "included" do
|
344
|
-
VCR.use_cassette "
|
358
|
+
VCR.use_cassette "hist_combined_included" do
|
345
359
|
bib = @db.fetch "NIST SP 800-38A, Add"
|
346
360
|
expect(bib.docidentifier[0].id).to eq "NIST SP 800-38A, Add"
|
347
361
|
expect(bib.relation[0].type).to eq "updates"
|
@@ -357,7 +371,7 @@ RSpec.describe Relaton::Db do
|
|
357
371
|
context "version control" do
|
358
372
|
before(:each) { @db.save_entry "iso(test_key)", "<bibitem><title>test_value</title></bibitem>" }
|
359
373
|
|
360
|
-
it "shoudn't clear
|
374
|
+
it "shoudn't clear cache if version isn't changed" do
|
361
375
|
testcache = @db.instance_variable_get :@db
|
362
376
|
expect(testcache.all).to be_any
|
363
377
|
testcache = @db.instance_variable_get :@local_db
|
@@ -368,11 +382,45 @@ RSpec.describe Relaton::Db do
|
|
368
382
|
expect(File.read("testcache/iso/version", encoding: "UTF-8")).not_to eq "new_version"
|
369
383
|
expect(File.read("testcache2/iso/version", encoding: "UTF-8")).not_to eq "new_version"
|
370
384
|
processor = double
|
371
|
-
expect(processor).to receive(:grammar_hash).and_return("new_version").exactly(
|
372
|
-
expect(Relaton::Registry.instance).to receive(:by_type).and_return(processor).exactly(
|
385
|
+
expect(processor).to receive(:grammar_hash).and_return("new_version").exactly(2).times
|
386
|
+
expect(Relaton::Registry.instance).to receive(:by_type).and_return(processor).exactly(2).times
|
373
387
|
Relaton::Db.new "testcache", "testcache2"
|
374
|
-
expect(File.
|
375
|
-
expect(File.
|
388
|
+
expect(File.exist?("testcache/iso/version")).to eq false
|
389
|
+
expect(File.exist?("testcache2/iso/version")).to eq false
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
393
|
+
context "api.relaton.org" do
|
394
|
+
before(:each) do
|
395
|
+
Relaton.configure do |config|
|
396
|
+
config.use_api = true
|
397
|
+
config.api_host = "http://0.0.0.0:9292"
|
398
|
+
end
|
399
|
+
end
|
400
|
+
|
401
|
+
after(:each) do
|
402
|
+
Relaton.configure do |config|
|
403
|
+
config.use_api = false
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
it "get document" do
|
408
|
+
VCR.use_cassette "api_relaton_org", re_record_interval: nil do
|
409
|
+
bib = @db.fetch "ISO 19115-2", "2019"
|
410
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
411
|
+
end
|
412
|
+
end
|
413
|
+
|
414
|
+
it "if unavailable then get document directly" do
|
415
|
+
expect(Net::HTTP).to receive(:get_response).and_wrap_original do |m, *args|
|
416
|
+
raise Errno::ECONNREFUSED if args[0].host == "0.0.0.0"
|
417
|
+
|
418
|
+
m.call(*args)
|
419
|
+
end.at_least :once
|
420
|
+
VCR.use_cassette "api_relaton_org_unavailable" do
|
421
|
+
bib = @db.fetch "ISO 19115-2", "2019"
|
422
|
+
expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
|
423
|
+
end
|
376
424
|
end
|
377
425
|
end
|
378
426
|
end
|