spec/rapidash/client_spec.rb in rapidash-0.1.2 vs spec/rapidash/client_spec.rb in rapidash-0.2.0

- old
+ new

@@ -2,20 +2,107 @@ class Client < Rapidash::Client method :test end + +class OAuthClientTester < Rapidash::Client + method :oauth +end + +class HTTPClientTester < Rapidash::Client + method :http +end + +class HTTPClientPatchTester < HTTPClientTester + use_patch +end + +class HTTPClientExtensionTester < HTTPClientTester + extension :js +end + +class HTTPClientErrorTester < HTTPClientTester + raise_errors +end + +class TestClientTester + method :test +end + describe Rapidash::Client do let!(:subject) { Client.new } + describe "#method" do + it "should include the HTTPClient" do + client = HTTPClientTester.new + client.class.ancestors.should include(Rapidash::HTTPClient) + end + + it "should include the OAuthClient" do + client = OAuthClientTester.new({:uid => "foo", :secret => "bar", :site => "baz"}) + client.class.ancestors.should include(Rapidash::OAuthClient) + end + + it "should include the OAuthClient" do + client = TestClientTester.new + client.class.ancestors.should include(Rapidash::TestClient) + end + + it "should raise an error on anything else" do + expect { + class InvalidClientTester < Rapidash::Client + method :invalid + end + }.to raise_error(Rapidash::ConfigurationError) + end + end + + describe "#use_patch" do + it "should set the patch variable to true" do + HTTPClientPatchTester.new.class.instance_variable_get(:@patch).should eql(true) + end + end + + describe "#extension" do + it "should set the url_extension variable" do + HTTPClientExtensionTester.new.class.instance_variable_get(:@extension).should eql(:js) + end + end + + describe "#raise_errors" do + it "should set the raise_error variable" do + HTTPClientErrorTester.new.class.instance_variable_get(:@raise_error).should eql(true) + end + end + + it "should raise an error when instantiated" do expect { Rapidash::Client.new }.to raise_error(Rapidash::ConfigurationError) end + describe ".site=" do + it "should clear the connection variable after set new site" do + subject.instance_variable_get(:@connection).should eql(nil) + subject.site = "foo" + subject.instance_variable_set(:@connection, "Not nil") + + subject.site = "bar" + subject.instance_variable_get(:@connection).should eql(nil) + end + + it "should set the site variable" do + subject.instance_variable_get(:@site).should eql(nil) + subject.site = "foo" + subject.instance_variable_get(:@site).should eql("foo") + end + end + + describe ".get" do it "should call request" do subject.should_receive(:request).with(:get, "foo", {}) subject.get("foo") end @@ -47,8 +134,20 @@ subject.should_receive(:request).with(:delete, "foo", {}) subject.delete("foo") end end + describe ".normalize_url" do + it "should use the instance extension if set" do + subject.extension = :json + subject.normalize_url("users").should eql("users.json") + end + it "should use the class extension if set" do + HTTPClientExtensionTester.new.normalize_url("users").should eql("users.js") + end + it "should return the url if no extension if set" do + subject.normalize_url("users").should eql("users") + end + end end