Sha256: caac1898fb9479a4d64581d883ff73417af12485c56427a131186abd5b568729
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
require 'rdf/spec' RSpec.shared_examples 'an RDF::Transactable' do include RDF::Spec::Matchers let(:statements) { RDF::Spec.quads } before do raise '`transactable` must be set with `let(:transactable)`' unless defined? transactable end subject { transactable } describe "#transaction" do it 'gives an immutable transaction' do expect { subject.transaction { insert([]) } }.to raise_error TypeError end it 'commits a successful transaction' do statement = RDF::Statement(:s, RDF.type, :o) expect(subject).to receive(:commit_transaction).and_call_original expect do subject.transaction(mutable: true) { insert(statement) } end.to change { subject.statements }.to include(statement) end it 'rolls back a failed transaction' do original_contents = subject.statements expect(subject).to receive(:rollback_transaction).and_call_original expect do subject.transaction(mutable: true) do delete(*@statements) raise 'my error' end end.to raise_error RuntimeError expect(subject.statements).to contain_exactly(*original_contents) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rdf-spec-2.0.0.beta1 | lib/rdf/spec/transactable.rb |