-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SearchResults object contains metadata and results array #261
Changes from all commits
1b88acd
af3c631
fcaec5f
bb8d35f
27e971f
59d95e3
9dedf44
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
require 'twitter/base' | ||
|
||
module Twitter | ||
class SearchResults < Twitter::Base | ||
|
||
# @return [Array<Twitter::Status>] | ||
def results | ||
@results ||= (@attrs['results'] || []).map{ |status| Twitter::Status.new(status) } | ||
end | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Likewise, it's not necessary to declare a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider aliasing |
||
alias :collection :results | ||
|
||
# @return [Float] | ||
def completed_in | ||
@attrs['completed_in'] | ||
end | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is not necessary to define basic reader methods if you've declared a |
||
|
||
# @return [Fixnum] | ||
def max_id | ||
@attrs['max_id'] | ||
end | ||
|
||
# @return [String] | ||
def max_id_str | ||
@attrs['max_id_str'] | ||
end | ||
|
||
# @return [String] | ||
def next_page | ||
@attrs['next_page'] | ||
end | ||
|
||
# @return [Fixnum] | ||
def page | ||
@attrs['page'] | ||
end | ||
|
||
# @return [String] | ||
def query | ||
@attrs['query'] | ||
end | ||
|
||
# @return [String] | ||
def refresh_url | ||
@attrs['refresh_url'] | ||
end | ||
|
||
# @return [Fixnum] | ||
def results_per_page | ||
@attrs['results_per_page'] | ||
end | ||
|
||
# @return [Fixnum] | ||
def since_id | ||
@attrs['since_id'] | ||
end | ||
|
||
# @return [String] | ||
def since_id_str | ||
@attrs['since_id_str'] | ||
end | ||
end | ||
end | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,9 +20,15 @@ | |
end | ||
it "should return recent statuses related to a query with images and videos embedded" do | ||
search = @client.search('twitter') | ||
search.should be_an Array | ||
search.first.should be_a Twitter::Status | ||
search.first.text.should == "@KaiserKuo from not too far away your new twitter icon looks like Vader." | ||
search.should be_a Twitter::SearchResults | ||
search.results.should be_an Array | ||
search.results.first.should be_a Twitter::Status | ||
search.results.first.text.should == "@KaiserKuo from not too far away your new twitter icon looks like Vader." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You probably want to assert that the response is, in fact, a |
||
end | ||
|
||
it "should return the max_id value for a search result" do | ||
search = @client.search('twitter') | ||
search.max_id.should eq(28857935752) | ||
end | ||
|
||
context "when search API responds a malformed result" do | ||
|
@@ -34,8 +40,8 @@ | |
|
||
it "should not fail and return blank Array" do | ||
search = @client.search('twitter') | ||
search.should be_an Array | ||
search.should have(0).items | ||
search.results.should be_an Array | ||
search.results.should have(0).items | ||
end | ||
end | ||
end | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
require 'helper' | ||
|
||
describe Twitter::SearchResults do | ||
|
||
describe "#completed_in" do | ||
it "should return completed_in" do | ||
results = Twitter::SearchResults.new('completed_in' => 23.5) | ||
results.completed_in.should == 23.5 | ||
end | ||
it "should return nil when no value exists" do | ||
results = Twitter::SearchResults.new | ||
results.completed_in.should be_nil | ||
end | ||
end | ||
|
||
describe "#max_id" do | ||
it "should contain the max_id" do | ||
results = Twitter::SearchResults.new('max_id' => 123456) | ||
results.max_id.should == 123456 | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.max_id.should be_nil | ||
end | ||
end | ||
|
||
describe "#max_id_str" do | ||
it "should contain the max_id_str" do | ||
results = Twitter::SearchResults.new('max_id_str' => '123456') | ||
results.max_id_str.should == '123456' | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.max_id_str.should be_nil | ||
end | ||
end | ||
|
||
describe "#next_page" do | ||
it "should contain the next_page" do | ||
results = Twitter::SearchResults.new('next_page' => "?page=2&max_id=122078461840982016&q=blue%20angels&rpp=5") | ||
results.next_page.should == "?page=2&max_id=122078461840982016&q=blue%20angels&rpp=5" | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.next_page.should be_nil | ||
end | ||
end | ||
|
||
describe "#page" do | ||
it "should contain the page" do | ||
results = Twitter::SearchResults.new('page' => 2) | ||
results.page.should == 2 | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.page.should be_nil | ||
end | ||
end | ||
|
||
describe "#query" do | ||
it "should contain the query" do | ||
results = Twitter::SearchResults.new('query' => 'blue+angels') | ||
results.query.should == 'blue+angels' | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.query.should be_nil | ||
end | ||
end | ||
|
||
describe "#refresh_url" do | ||
it "should contain the refresh_url" do | ||
results = Twitter::SearchResults.new('refresh_url' => '?since_id=122078461840982016&q=blue%20angels') | ||
results.refresh_url.should == '?since_id=122078461840982016&q=blue%20angels' | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.refresh_url.should be_nil | ||
end | ||
end | ||
|
||
describe "#results_per_page" do | ||
it "should contain the results_per_page" do | ||
results = Twitter::SearchResults.new('results_per_page' => 10) | ||
results.results_per_page.should == 10 | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.results_per_page.should be_nil | ||
end | ||
end | ||
|
||
describe "#since_id" do | ||
it "should contain the since_id" do | ||
results = Twitter::SearchResults.new('since_id' => 123456) | ||
results.since_id.should == 123456 | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.since_id.should be_nil | ||
end | ||
end | ||
|
||
describe "#since_id_str" do | ||
it "should contain the since_id_str" do | ||
results = Twitter::SearchResults.new('since_id_str' => '123456') | ||
results.since_id_str.should == '123456' | ||
end | ||
it "should be nil when no value passed" do | ||
results = Twitter::SearchResults.new | ||
results.since_id_str.should be_nil | ||
end | ||
end | ||
|
||
describe "#results" do | ||
it "should contain twitter status objects" do | ||
search_results = Twitter::SearchResults.new('results' => [{'text' => 'tweet!'}]) | ||
search_results.results.should be_a Array | ||
search_results.results.first.should be_a Twitter::Status | ||
end | ||
it "should be an empty array if no search results passed" do | ||
search_results = Twitter::SearchResults.new | ||
search_results.results.should be_a Array | ||
search_results.results.should == [] | ||
end | ||
end | ||
|
||
describe "#collection" do | ||
it "should alias collection to results" do | ||
search_results = Twitter::SearchResults.new('results' => [{'text' => 'tweet!'}]) | ||
search_results.collection.should be_a Array | ||
search_results.collection.first.should be_a Twitter::Status | ||
end | ||
end | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add specs for this new class.