From 77e2e03420fad4d38b3a0cce7ce0e8b81cdbe92a Mon Sep 17 00:00:00 2001 From: Susan Potter Date: Mon, 11 May 2009 19:54:05 -0500 Subject: [PATCH] Added specs for Twitter::Status#reply(...) and Twitter::Client#status(:reply, ...) use case scenario --- lib/twitter/client/status.rb | 5 +++-- spec/twitter/client/status_spec.rb | 27 +++++++++++++++++++++++++++ spec/twitter/model_spec.rb | 21 +++++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/lib/twitter/client/status.rb b/lib/twitter/client/status.rb index bb69312..a9033ad 100644 --- a/lib/twitter/client/status.rb +++ b/lib/twitter/client/status.rb @@ -33,8 +33,8 @@ class Twitter::Client return self.timeline_for(action, value || {}) if :replies == action raise ArgumentError, "Invalid status action: #{action}" unless @@STATUS_URIS.keys.member?(action) return nil unless value - uri = @@STATUS_URIS[action] - response = nil + uri = @@STATUS_URIS[action] + response = nil case action when :get response = http_connect {|conn| create_http_get_request(uri, :id => value.to_i) } @@ -43,6 +43,7 @@ class Twitter::Client when :delete response = http_connect {|conn| create_http_delete_request(uri, :id => value.to_i) } when :reply + return nil if (!value.is_a?(Hash) || !value[:status] || !value[:in_reply_to_status_id]) response = http_connect(value.merge(:source => @@config.source).to_http_str) {|conn| create_http_post_request(uri) } end bless_model(Twitter::Status.unmarshal(response.body)) diff --git a/spec/twitter/client/status_spec.rb b/spec/twitter/client/status_spec.rb index 925088b..eec104a 100644 --- a/spec/twitter/client/status_spec.rb +++ b/spec/twitter/client/status_spec.rb @@ -11,6 +11,7 @@ describe Twitter::Client, "#status" do @connection = mas_net_http(@response) @float = 43.3434 @status = Twitter::Status.new(:id => 2349343) + @reply_to_status_id = 3495293 @source = Twitter::Client.class_eval("@@defaults[:source]") end @@ -55,6 +56,32 @@ describe Twitter::Client, "#status" do @twitter.status(:post, @message) end + it "should return nil if no :status key-value given in the value argument for :reply case" do + status = @twitter.status(:reply, {}) + status.should be_nil + end + + it "should return nil if nil is passed as value argument for :reply case" do + status = @twitter.status(:reply, nil) + status.should be_nil + end + + it "should not call @twitter#http_connect when passing a value Hash argument that has no :status key-value in :reply case" do + @twitter.should_not_receive(:http_connect) + @twitter.status(:reply, {}) + end + + it "should not call @twitter#http_connect when passing nil for value argument in :reply case" do + @twitter.should_not_receive(:http_connect) + @twitter.status(:reply, nil) + end + + it "should create expected HTTP POST request for :reply case" do + @twitter.should_receive(:create_http_post_request).with(@uris[:reply]).and_return(@request) + @connection.should_receive(:request).with(@request, {:status => @message, :source => @source, :in_reply_to_status_id => @reply_to_status_id}.to_http_str).and_return(@response) + @twitter.status(:reply, :status => @message, :in_reply_to_status_id => @reply_to_status_id) + end + it "should return nil if nil is passed as value argument for :delete case" do status = @twitter.status(:delete, nil) status.should be_nil diff --git a/spec/twitter/model_spec.rb b/spec/twitter/model_spec.rb index c98a8b0..01b5500 100644 --- a/spec/twitter/model_spec.rb +++ b/spec/twitter/model_spec.rb @@ -456,6 +456,27 @@ describe Twitter::Status, "#reply?" do end end +describe Twitter::Status, "#reply(status_text)" do + before(:each) do + @twitter = client_context + @status = Twitter::Status.new( + :id => 1234, + :text => "The status text", + :client => @twitter) + @reply_text = "Reply text goes here" + @reply_status = Twitter::Status.new() + end + + it "should invoke #status(:reply, :status => ..., :in_reply_to_status_id => ...) on client context" do + @twitter.should_receive(:status).with(:reply, :status => @reply_text, :in_reply_to_status_id => @status.id).and_return(@reply_status) + @status.reply(@reply_text) + end + + after(:each) do + nilize(@twitter, @status) + end +end + describe Twitter::Status, "#to_s" do before(:each) do @text = 'Aloha' -- 2.11.4.GIT