rdf-spec 2.0.0 → 2.2.0.pre.rc1
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/VERSION +1 -1
- data/lib/rdf/spec/enumerable.rb +26 -9
- data/lib/rdf/spec/mutable.rb +1 -1
- data/lib/rdf/spec/queryable.rb +30 -26
- data/lib/rdf/spec/repository.rb +0 -29
- data/lib/rdf/spec/transactable.rb +3 -1
- data/lib/rdf/spec/transaction.rb +20 -0
- data/lib/rdf/spec/writable.rb +3 -3
- metadata +12 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02763a4f5919a3620e632e6c5407a85ead6a31b6
|
4
|
+
data.tar.gz: e0b955d1548f7aac679dd228ef05e7b20bfa2e0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4093900bf924b487bea8e8d8412bec0be59343b9a6a5c9ede606e3cf79bee0a40befcd53f7b08631e73edb8dd18f9e2148fe5b98a627cc042b937f43b5dc21f
|
7
|
+
data.tar.gz: af748d60323daba596933ff153b4544f474a8778bd1b9232a34d2773c64b3ea04e2263a50c7772778448f3f6c794b2cfe08e27c141e3acf226d1818e022b6299
|
data/README.md
CHANGED
@@ -31,8 +31,8 @@ Note that in most cases, if the instance is empty and mutable, the appropriate s
|
|
31
31
|
|
32
32
|
## Dependencies
|
33
33
|
|
34
|
-
* [RDF.rb](http://rubygems.org/gems/rdf) (
|
35
|
-
* [RSpec](http://rubygems.org/gems/rspec) (
|
34
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (~> 2.0)
|
35
|
+
* [RSpec](http://rubygems.org/gems/rspec) (~> 3.0)
|
36
36
|
|
37
37
|
## Installation
|
38
38
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.0-rc1
|
data/lib/rdf/spec/enumerable.rb
CHANGED
@@ -391,11 +391,16 @@ RSpec.shared_examples 'an RDF::Enumerable' do
|
|
391
391
|
|
392
392
|
its(:each_term) {is_expected.to be_an_enumerator}
|
393
393
|
context "#each_term" do
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
394
|
+
it 'has correct number of terms' do
|
395
|
+
expected_count = non_bnode_terms.length
|
396
|
+
expected_count = expected_count - 3 unless
|
397
|
+
subject.supports?(:literal_equality)
|
398
|
+
|
399
|
+
expect(subject.each_term.reject(&:node?).size).to eq expected_count
|
400
|
+
end
|
401
|
+
|
402
|
+
specify { expect(subject.each_term).to all(be_a_term) }
|
403
|
+
specify { subject.each_term {|value| expect(non_bnode_terms).to include(value) unless value.node?} }
|
399
404
|
end
|
400
405
|
|
401
406
|
its(:enum_term) {is_expected.to be_an_enumerator}
|
@@ -507,11 +512,23 @@ RSpec.shared_examples 'an RDF::Enumerable' do
|
|
507
512
|
|
508
513
|
|
509
514
|
context "when converting" do
|
510
|
-
it {is_expected.to respond_to(:
|
511
|
-
|
512
|
-
|
515
|
+
it {is_expected.to respond_to(:to_h)}
|
516
|
+
it {is_expected.not_to respond_to(:to_hash)}
|
517
|
+
its(:to_hash) {
|
518
|
+
expect {
|
519
|
+
is_expected.to be_instance_of(Hash)
|
520
|
+
}.to write("DEPRECATION").to(:error)
|
521
|
+
}
|
522
|
+
describe "#to_h" do
|
513
523
|
it "should have as many keys as subjects" do
|
514
|
-
expect(subject.
|
524
|
+
expect(subject.to_h.keys.size).to eq enumerable.subjects.to_a.size
|
525
|
+
end
|
526
|
+
end
|
527
|
+
describe "#to_h" do
|
528
|
+
it "should have as many keys as subjects (with deprecation)" do
|
529
|
+
expect {
|
530
|
+
expect(subject.to_hash.keys.size).to eq enumerable.subjects.to_a.size
|
531
|
+
}.to write("DEPRECATION").to(:error)
|
515
532
|
end
|
516
533
|
end
|
517
534
|
end
|
data/lib/rdf/spec/mutable.rb
CHANGED
@@ -262,7 +262,7 @@ RSpec.shared_examples 'an RDF::Mutable' do
|
|
262
262
|
it 'handles Graph names' do
|
263
263
|
if @supports_named_graphs
|
264
264
|
dels = non_bnode_statements.take(10).map do |st|
|
265
|
-
RDF::Statement.from(st.
|
265
|
+
RDF::Statement.from(st.to_h.merge(graph_name: RDF::URI('http://example.com/fake')))
|
266
266
|
end
|
267
267
|
dels.map! { |st| st.graph_name = RDF::URI('http://example.com/fake'); st }
|
268
268
|
dels.extend(RDF::Enumerable)
|
data/lib/rdf/spec/queryable.rb
CHANGED
@@ -60,18 +60,31 @@ RSpec.shared_examples 'an RDF::Queryable' do
|
|
60
60
|
|
61
61
|
context "with specific patterns" do
|
62
62
|
# Note that "01" should not match 1, per data-r2/expr-equal/sameTerm
|
63
|
-
|
64
|
-
[RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
63
|
+
patterns =
|
64
|
+
{ [RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
|
65
|
+
[RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), nil] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
|
66
|
+
[RDF::URI("http://example.org/xi1"), nil, 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1])],
|
67
|
+
[nil, RDF::URI("http://example.org/p"), 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1]), RDF::Statement.from([RDF::URI("http://example.org/xi2"), RDF::URI("http://example.org/p"), 1])],
|
68
|
+
[nil, nil, 1] => [RDF::Statement.from([RDF::URI("http://example.org/xi1"), RDF::URI("http://example.org/p"), 1]), RDF::Statement.from([RDF::URI("http://example.org/xi2"), RDF::URI("http://example.org/p"), 1])],
|
69
|
+
[nil, RDF::URI("http://example.org/p"), RDF::Literal::Double.new("1.0e0")] => [RDF::Statement.from([RDF::URI("http://example.org/xd1"), RDF::URI("http://example.org/p"), RDF::Literal::Double.new("1.0e0")])],
|
70
|
+
}
|
71
|
+
|
72
|
+
literal_eq_patterns =
|
73
|
+
[[nil, RDF::URI("http://example.org/p"), 1],
|
74
|
+
[nil, nil, 1],
|
75
|
+
[nil, RDF::URI("http://example.org/p"), RDF::Literal::Double.new("1.0e0")]]
|
76
|
+
|
77
|
+
patterns.each do |pattern, result|
|
72
78
|
it "returns #{result.inspect} given #{pattern.inspect}" do
|
79
|
+
unless subject.supports?(:literal_equality)
|
80
|
+
next if literal_eq_patterns.include?(pattern)
|
81
|
+
end
|
82
|
+
|
83
|
+
pattern = RDF::Query::Pattern.from(pattern)
|
73
84
|
solutions = []
|
85
|
+
|
74
86
|
subject.send(method, pattern) {|s| solutions << s}
|
87
|
+
|
75
88
|
expect(solutions).to contain_exactly(*result)
|
76
89
|
end
|
77
90
|
end
|
@@ -85,18 +98,6 @@ RSpec.shared_examples 'an RDF::Queryable' do
|
|
85
98
|
expect(solutions.size).to eq @statements.size
|
86
99
|
end
|
87
100
|
|
88
|
-
it "returns statements from unnamed graphs with false graph_name" do
|
89
|
-
pattern = RDF::Query::Pattern.new(nil, nil, nil, graph_name: false)
|
90
|
-
solutions = []
|
91
|
-
subject.send(method, pattern) {|s| solutions << s}
|
92
|
-
|
93
|
-
named_statements = subject.statements
|
94
|
-
named_statements.reject! {|st| st.has_name?} unless
|
95
|
-
subject.respond_to?(:graph_name) && !subject.graph_name.nil?
|
96
|
-
|
97
|
-
expect(solutions.size).to eq named_statements.size
|
98
|
-
end
|
99
|
-
|
100
101
|
it "returns statements from named graphs with variable graph_name" do
|
101
102
|
unless subject.graph_names.to_a.empty?
|
102
103
|
pattern = RDF::Query::Pattern.new(nil, nil, nil, graph_name: :c)
|
@@ -276,7 +277,9 @@ RSpec.shared_examples 'an RDF::Queryable' do
|
|
276
277
|
end
|
277
278
|
|
278
279
|
it 'has two solutions' do
|
279
|
-
|
280
|
+
if subject.supports?(:literal_equality)
|
281
|
+
expect(result.count).to eq 2
|
282
|
+
end
|
280
283
|
end
|
281
284
|
|
282
285
|
it "has xi1 as a solution" do
|
@@ -296,7 +299,9 @@ RSpec.shared_examples 'an RDF::Queryable' do
|
|
296
299
|
end
|
297
300
|
|
298
301
|
it 'has one solution' do
|
299
|
-
|
302
|
+
if subject.supports?(:literal_equality)
|
303
|
+
expect(result.count).to eq 1
|
304
|
+
end
|
300
305
|
end
|
301
306
|
|
302
307
|
it "has xd1 as a solution" do
|
@@ -314,8 +319,7 @@ RSpec.shared_examples 'an RDF::Queryable' do
|
|
314
319
|
before { skip unless subject.respond_to?(:query_execute, true ) }
|
315
320
|
|
316
321
|
it "defines a protected #query_execute method" do
|
317
|
-
expect(subject.
|
318
|
-
.to be_truthy
|
322
|
+
expect(subject.protected_methods).to include :query_execute
|
319
323
|
end
|
320
324
|
|
321
325
|
include_examples 'query execution', :query_execute
|
@@ -327,7 +331,7 @@ RSpec.shared_examples 'an RDF::Queryable' do
|
|
327
331
|
before { skip unless subject.respond_to?(:query_pattern, true ) }
|
328
332
|
|
329
333
|
it "defines a protected #query_pattern method" do
|
330
|
-
expect(subject.
|
334
|
+
expect(subject.protected_methods).to include :query_pattern
|
331
335
|
end
|
332
336
|
|
333
337
|
include_examples 'query pattern', :query_pattern
|
data/lib/rdf/spec/repository.rb
CHANGED
@@ -48,35 +48,6 @@ RSpec.shared_examples 'an RDF::Repository' do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
describe "#transaction" do
|
52
|
-
it 'gives an immutable transaction' do
|
53
|
-
expect { subject.transaction { insert([]) } }.to raise_error TypeError
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'commits a successful transaction' do
|
57
|
-
statement = RDF::Statement(:s, RDF.type, :o)
|
58
|
-
expect(subject).to receive(:commit_transaction).and_call_original
|
59
|
-
|
60
|
-
expect do
|
61
|
-
subject.transaction(mutable: true) { insert(statement) }
|
62
|
-
end.to change { subject.statements }.to include(statement)
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'rolls back a failed transaction' do
|
66
|
-
original_contents = subject.statements
|
67
|
-
expect(subject).to receive(:rollback_transaction).and_call_original
|
68
|
-
|
69
|
-
expect do
|
70
|
-
subject.transaction(mutable: true) do
|
71
|
-
delete(*@statements)
|
72
|
-
raise 'my error'
|
73
|
-
end
|
74
|
-
end.to raise_error RuntimeError
|
75
|
-
|
76
|
-
expect(subject.statements).to contain_exactly(*original_contents)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
51
|
context "with snapshot support" do
|
81
52
|
|
82
53
|
describe '#snapshot' do
|
@@ -18,7 +18,9 @@ RSpec.shared_examples 'an RDF::Transactable' do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'commits a successful transaction' do
|
21
|
-
statement = RDF::Statement(
|
21
|
+
statement = RDF::Statement(RDF::URI('http://example.com/s'),
|
22
|
+
RDF.type,
|
23
|
+
RDF::URI('http://example.com/o'))
|
22
24
|
expect(subject).to receive(:commit_transaction).and_call_original
|
23
25
|
|
24
26
|
expect do
|
data/lib/rdf/spec/transaction.rb
CHANGED
@@ -250,6 +250,26 @@ shared_examples "an RDF::Transaction" do |klass|
|
|
250
250
|
end
|
251
251
|
end
|
252
252
|
|
253
|
+
describe '#mutated?' do
|
254
|
+
let(:st) { RDF::Statement(:s, RDF::URI('http://example.com/p'), 'o') }
|
255
|
+
|
256
|
+
it 'returns true after a successful insert' do
|
257
|
+
begin
|
258
|
+
expect { subject.insert(st) }
|
259
|
+
.to change { subject.mutated? }.from(false).to(true)
|
260
|
+
rescue NotImplementedError; end
|
261
|
+
end
|
262
|
+
|
263
|
+
it 'returns true after a successful delete' do
|
264
|
+
repository.insert(st)
|
265
|
+
|
266
|
+
begin
|
267
|
+
expect { subject.delete(st) }
|
268
|
+
.to change { subject.mutated? }.from(false).to(true)
|
269
|
+
rescue NotImplementedError; end
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
253
273
|
describe '#execute' do
|
254
274
|
let(:st) { RDF::Statement(:s, RDF::URI('http://example.com/p'), 'o') }
|
255
275
|
|
data/lib/rdf/spec/writable.rb
CHANGED
@@ -126,9 +126,9 @@ RSpec.shared_examples 'an RDF::Writable' do
|
|
126
126
|
end
|
127
127
|
|
128
128
|
it "should not insert an incomplete statement" do
|
129
|
-
expect {subject.insert(RDF::Statement.from(statement.
|
130
|
-
expect {subject.insert(RDF::Statement.from(statement.
|
131
|
-
expect {subject.insert(RDF::Statement.from(statement.
|
129
|
+
expect {subject.insert(RDF::Statement.from(statement.to_h.merge(subject: nil)))}.to raise_error(ArgumentError)
|
130
|
+
expect {subject.insert(RDF::Statement.from(statement.to_h.merge(predicate: nil)))}.to raise_error(ArgumentError)
|
131
|
+
expect {subject.insert(RDF::Statement.from(statement.to_h.merge(object: nil)))}.to raise_error(ArgumentError)
|
132
132
|
expect(subject.count).to eql 0
|
133
133
|
end
|
134
134
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.2.0.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-12-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rdf
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '2.
|
21
|
+
version: '2.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '2.
|
28
|
+
version: '2.1'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rdf-isomorphic
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -46,14 +46,14 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '3.
|
49
|
+
version: '3.5'
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '3.
|
56
|
+
version: '3.5'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: rspec-its
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,14 +74,14 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
77
|
+
version: '2.3'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
84
|
+
version: '2.3'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: yard
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,17 +167,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
167
167
|
requirements:
|
168
168
|
- - ">="
|
169
169
|
- !ruby/object:Gem::Version
|
170
|
-
version:
|
170
|
+
version: 2.2.2
|
171
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
|
-
- - "
|
173
|
+
- - ">"
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version:
|
175
|
+
version: 1.3.1
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project: rdf
|
178
|
-
rubygems_version: 2.
|
178
|
+
rubygems_version: 2.6.8
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: RSpec extensions for RDF.rb.
|
182
182
|
test_files: []
|
183
|
-
has_rdoc: false
|