|
8 | 8 | raise 'mutable must be defined with let(:mutable)' unless |
9 | 9 | defined? mutable |
10 | 10 |
|
| 11 | + skip "Immutable resource" unless mutable.mutable? |
11 | 12 | @statements = RDF::Spec.triples |
12 | 13 | @supports_named_graphs = mutable.respond_to?(:supports?) && mutable.supports?(:graph_name) |
13 | 14 | end |
|
50 | 51 | end |
51 | 52 |
|
52 | 53 | it "should accept a string filename argument" do |
53 | | - expect { subject.load(RDF::Spec::TRIPLES_FILE) }.not_to raise_error if subject.mutable? |
| 54 | + expect { subject.load(RDF::Spec::TRIPLES_FILE) }.not_to raise_error |
54 | 55 | end |
55 | 56 |
|
56 | 57 | it "should accept an optional hash argument" do |
57 | | - expect { subject.load(RDF::Spec::TRIPLES_FILE, {}) }.not_to raise_error if subject.mutable? |
| 58 | + expect { subject.load(RDF::Spec::TRIPLES_FILE, {}) }.not_to raise_error |
58 | 59 | end |
59 | 60 |
|
60 | 61 | it "should load statements" do |
61 | | - if subject.mutable? |
62 | | - subject.load RDF::Spec::TRIPLES_FILE |
63 | | - expect(subject.size).to eq File.readlines(RDF::Spec::TRIPLES_FILE).size |
64 | | - is_expected.to have_subject(resource) |
65 | | - end |
| 62 | + subject.load RDF::Spec::TRIPLES_FILE |
| 63 | + expect(subject.size).to eq File.readlines(RDF::Spec::TRIPLES_FILE).size |
| 64 | + is_expected.to have_subject(resource) |
66 | 65 | end |
67 | 66 |
|
68 | 67 | it "should load statements with a graph_name override" do |
69 | | - if subject.mutable? && @supports_named_graphs |
| 68 | + if @supports_named_graphs |
70 | 69 | subject.load RDF::Spec::TRIPLES_FILE, graph_name: graph_name |
71 | 70 | is_expected.to have_graph(graph_name) |
72 | 71 | expect(subject.query(graph_name: graph_name).size).to eq subject.size |
|
98 | 97 |
|
99 | 98 | it "should not raise errors" do |
100 | 99 | s1_updated = RDF::Statement(resource, RDF::URI.new("urn:predicate:1"), RDF::URI.new("urn:object:2")) |
101 | | - expect { subject.update(s1_updated) }.not_to raise_error if subject.mutable? |
| 100 | + expect { subject.update(s1_updated) }.not_to raise_error |
102 | 101 | end |
103 | 102 |
|
104 | 103 | it "should support updating one statement at a time with an object" do |
105 | | - if subject.mutable? |
106 | | - s1_updated = RDF::Statement(resource, RDF::URI.new("urn:predicate:1"), RDF::URI.new("urn:object:2")) |
107 | | - subject.update(s1_updated) |
108 | | - expect(subject.has_statement?(s1_updated)).to be true |
109 | | - expect(subject.has_statement?(s1)).to be false |
110 | | - end |
| 104 | + s1_updated = RDF::Statement(resource, RDF::URI.new("urn:predicate:1"), RDF::URI.new("urn:object:2")) |
| 105 | + subject.update(s1_updated) |
| 106 | + expect(subject.has_statement?(s1_updated)).to be true |
| 107 | + expect(subject.has_statement?(s1)).to be false |
111 | 108 | end |
112 | 109 |
|
113 | 110 | it "should support updating one statement at a time without an object" do |
114 | | - if subject.mutable? |
115 | | - s1_deleted = RDF::Statement(resource, RDF::URI.new("urn:predicate:1"), nil) |
116 | | - subject.update(s1_deleted) |
117 | | - expect(subject.has_statement?(s1)).to be false |
118 | | - end |
| 111 | + s1_deleted = RDF::Statement(resource, RDF::URI.new("urn:predicate:1"), nil) |
| 112 | + subject.update(s1_deleted) |
| 113 | + expect(subject.has_statement?(s1)).to be false |
119 | 114 | end |
120 | 115 |
|
121 | 116 | it "should support updating an array of statements at a time" do |
|
147 | 142 | end |
148 | 143 |
|
149 | 144 | it "should not raise errors" do |
150 | | - expect { subject.delete(non_bnode_statements.first) }.not_to raise_error if subject.mutable? |
| 145 | + expect { subject.delete(non_bnode_statements.first) }.not_to raise_error |
151 | 146 | end |
152 | 147 |
|
153 | 148 | it "should support deleting one statement at a time" do |
154 | | - if subject.mutable? |
155 | | - subject.delete(non_bnode_statements.first) |
156 | | - is_expected.not_to have_statement(non_bnode_statements.first) |
157 | | - end |
| 149 | + subject.delete(non_bnode_statements.first) |
| 150 | + is_expected.not_to have_statement(non_bnode_statements.first) |
158 | 151 | end |
159 | 152 |
|
160 | 153 | it "should support deleting multiple statements at a time" do |
161 | | - if subject.mutable? |
162 | | - subject.delete(*@statements) |
163 | | - expect(subject.find { |s| subject.has_statement?(s) }).to be_nil |
164 | | - end |
| 154 | + subject.delete(*@statements) |
| 155 | + expect(subject.find { |s| subject.has_statement?(s) }).to be_nil |
165 | 156 | end |
166 | 157 |
|
167 | 158 | it "should support wildcard deletions" do |
168 | | - if subject.mutable? |
169 | | - # nothing deleted |
170 | | - require 'digest/sha1' |
171 | | - count = subject.count |
172 | | - subject.delete([nil, nil, Digest::SHA1.hexdigest(File.read(__FILE__))]) |
173 | | - is_expected.not_to be_empty |
174 | | - expect(subject.count).to eq count |
175 | | - |
176 | | - # everything deleted |
177 | | - subject.delete([nil, nil, nil]) |
178 | | - is_expected.to be_empty |
179 | | - end |
| 159 | + # nothing deleted |
| 160 | + require 'digest/sha1' |
| 161 | + count = subject.count |
| 162 | + subject.delete([nil, nil, Digest::SHA1.hexdigest(File.read(__FILE__))]) |
| 163 | + is_expected.not_to be_empty |
| 164 | + expect(subject.count).to eq count |
| 165 | + |
| 166 | + # everything deleted |
| 167 | + subject.delete([nil, nil, nil]) |
| 168 | + is_expected.to be_empty |
180 | 169 | end |
181 | 170 |
|
182 | 171 | it "should only delete statements when the graph_name matches" do |
183 | | - if subject.mutable? |
184 | | - # Setup three statements identical except for graph_name |
185 | | - count = subject.count + (@supports_named_graphs ? 3 : 1) |
186 | | - s1 = RDF::Statement.new(resource, RDF::URI.new("urn:predicate:1"), RDF::URI.new("urn:object:1")) |
187 | | - s2 = s1.dup |
188 | | - s2.graph_name = RDF::URI.new("urn:graph_name:1") |
189 | | - s3 = s1.dup |
190 | | - s3.graph_name = RDF::URI.new("urn:graph_name:2") |
191 | | - subject.insert(s1) |
192 | | - subject.insert(s2) |
193 | | - subject.insert(s3) |
194 | | - expect(subject.count).to eq count |
195 | | - |
196 | | - # Delete one by one |
197 | | - subject.delete(s1) |
198 | | - expect(subject.count).to eq count - (@supports_named_graphs ? 1 : 1) |
199 | | - subject.delete(s2) |
200 | | - expect(subject.count).to eq count - (@supports_named_graphs ? 2 : 1) |
201 | | - subject.delete(s3) |
202 | | - expect(subject.count).to eq count - (@supports_named_graphs ? 3 : 1) |
203 | | - end |
| 172 | + # Setup three statements identical except for graph_name |
| 173 | + count = subject.count + (@supports_named_graphs ? 3 : 1) |
| 174 | + s1 = RDF::Statement.new(resource, RDF::URI.new("urn:predicate:1"), RDF::URI.new("urn:object:1")) |
| 175 | + s2 = s1.dup |
| 176 | + s2.graph_name = RDF::URI.new("urn:graph_name:1") |
| 177 | + s3 = s1.dup |
| 178 | + s3.graph_name = RDF::URI.new("urn:graph_name:2") |
| 179 | + subject.insert(s1) |
| 180 | + subject.insert(s2) |
| 181 | + subject.insert(s3) |
| 182 | + expect(subject.count).to eq count |
| 183 | + |
| 184 | + # Delete one by one |
| 185 | + subject.delete(s1) |
| 186 | + expect(subject.count).to eq count - (@supports_named_graphs ? 1 : 1) |
| 187 | + subject.delete(s2) |
| 188 | + expect(subject.count).to eq count - (@supports_named_graphs ? 2 : 1) |
| 189 | + subject.delete(s3) |
| 190 | + expect(subject.count).to eq count - (@supports_named_graphs ? 3 : 1) |
204 | 191 | end |
205 | 192 |
|
206 | 193 | describe '#delete_insert' do |
|
211 | 198 | end |
212 | 199 |
|
213 | 200 | it 'deletes and inserts' do |
214 | | - if subject.mutable? |
215 | | - subject.delete_insert(@statements, [statement]) |
216 | | - is_expected.to contain_exactly statement |
217 | | - end |
| 201 | + subject.delete_insert(@statements, [statement]) |
| 202 | + is_expected.to contain_exactly statement |
218 | 203 | end |
219 | 204 |
|
220 | 205 | it 'deletes before inserting' do |
221 | | - if subject.mutable? |
222 | | - subject.delete_insert(@statements, [@statements.first]) |
223 | | - is_expected.to contain_exactly @statements.first |
224 | | - end |
| 206 | + subject.delete_insert(@statements, [@statements.first]) |
| 207 | + is_expected.to contain_exactly @statements.first |
225 | 208 | end |
226 | 209 |
|
227 | 210 | it 'deletes patterns' do |
228 | | - if subject.mutable? |
229 | | - pattern = [non_bnode_statements.first.subject, nil, nil] |
230 | | - expect { subject.delete_insert([pattern], []) } |
231 | | - .to change { subject.has_subject?(non_bnode_statements.first.subject) } |
232 | | - .from(true).to(false) |
233 | | - end |
| 211 | + pattern = [non_bnode_statements.first.subject, nil, nil] |
| 212 | + expect { subject.delete_insert([pattern], []) } |
| 213 | + .to change { subject.has_subject?(non_bnode_statements.first.subject) } |
| 214 | + .from(true).to(false) |
234 | 215 | end |
235 | 216 |
|
236 | 217 | it 'handles Enumerables' do |
237 | | - if subject.mutable? |
238 | | - dels = non_bnode_statements.take(10) |
239 | | - dels.extend(RDF::Enumerable) |
240 | | - ins = RDF::Graph.new << statement |
241 | | - expect { subject.delete_insert(dels, ins) } |
242 | | - .to change { dels.find { |s| subject.include?(s) } }.to be_nil |
243 | | - is_expected.to include statement |
244 | | - end |
| 218 | + dels = non_bnode_statements.take(10) |
| 219 | + dels.extend(RDF::Enumerable) |
| 220 | + ins = RDF::Graph.new << statement |
| 221 | + expect { subject.delete_insert(dels, ins) } |
| 222 | + .to change { dels.find { |s| subject.include?(s) } }.to be_nil |
| 223 | + is_expected.to include statement |
245 | 224 | end |
246 | 225 |
|
247 | 226 | it 'handles Graph names' do |
248 | | - if subject.mutable? && @supports_named_graphs |
| 227 | + if @supports_named_graphs |
249 | 228 | dels = non_bnode_statements.take(10).map do |st| |
250 | 229 | RDF::Statement.from(st.to_hash.merge(graph_name: RDF::URI('fake'))) |
251 | 230 | end |
|
258 | 237 |
|
259 | 238 | context 'when transactions are supported' do |
260 | 239 | it 'updates atomically' do |
261 | | - if subject.mutable? && subject.supports?(:transactions) |
| 240 | + if subject.supports?(:transactions) |
262 | 241 | contents = subject.statements.to_a |
263 | 242 |
|
264 | 243 | expect { subject.delete_insert(@statements, [nil]) } |
|
0 commit comments