spec/libvirt-ruby/connect_spec.rb in libvirt-ruby-0.0.4 vs spec/libvirt-ruby/connect_spec.rb in libvirt-ruby-0.0.5
- old
+ new
@@ -2,18 +2,32 @@
describe Libvirt::Ruby::Connect do
let(:connect) { Libvirt::Ruby::Connect }
context "when calling method #dispatcher" do
+ context "that is now deprecated" do
+ before :each do
+ connect.stub(:ffi_lib).with("libvirt")
+ connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int)
+ connect.stub(:send).with("virConnectClose", [])
+ end
+
+ it "should raise a deprecated method warning" do
+ connect.should_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
+ connect.dispatcher('Close', [], :int)
+ end
+ end
+
context "with libvirt installed" do
before :each do
+ connect.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
connect.stub(:ffi_lib).with("libvirt")
end
context "and a valid libvirt function" do
before :each do
- connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
+ connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int)
connect.stub(:send).with("virConnectClose", [])
end
after :each do
connect.dispatcher('Close', [], :int)
@@ -38,11 +52,71 @@
end
end
end
context "without libvirt installed" do
+ before :each do
+ connect.stub(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
+ end
+
it "should raise an exception" do
lambda { connect.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
+ end
+ end
+ end
+
+ context "when calling any libvirt function directly" do
+ context "that is the new way" do
+ before :each do
+ connect.stub(:ffi_lib).with("libvirt")
+ connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int)
+ connect.stub(:send).with("virConnectClose", [])
+ end
+
+ it "should not raise a deprecated method warning" do
+ connect.should_not_receive(:warn).with("[DEPRECATION] `dispatcher` is deprecated. Please call the function directly instead.")
+ connect.Close([:int])
+ end
+ end
+
+ context "with libvirt installed" do
+ before :each do
+ connect.stub(:ffi_lib).with("libvirt")
+ end
+
+ context "and the function is a valid one" do
+ before :each do
+ connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
+ connect.stub(:send).with("virConnectClose", [])
+ end
+
+ after :each do
+ connect.Close([:int])
+ end
+
+ it "should attach it as a binding for C's function" do
+ connect.should_receive(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
+ end
+
+ it "should call the new attached method" do
+ connect.should_receive(:send).with("virConnectClose", [])
+ end
+ end
+
+ context "and the function is not a valid one" do
+ before :each do
+ connect.stub(:attach_function).with("virConnectAbc", "virConnectAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
+ end
+
+ it "should raise an exception" do
+ lambda { connect.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
+ end
+ end
+ end
+
+ context "without libvirt installed" do
+ it "should raise an exception" do
+ lambda { connect.Abc([:int]) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
end
end
end
end
\ No newline at end of file