spec/unit/api/query_builder_spec.rb in npr-1.1.0 vs spec/unit/api/query_builder_spec.rb in npr-1.2.0

- old
+ new

@@ -3,186 +3,186 @@ describe NPR::API::QueryBuilder do describe "#to_params" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "turns the query builder in params that the API can understand" do @builder.where(:id => 5).order("date descending").limit(10).offset(100) @builder.to_params.should eq Hash[ :id => 5 , :sort => "date descending", :numResults => 10, :startNum => 100 ] end - + it "merges in @builder[:extra] last, which overrides anything" do @builder.set(:id => 5).where(:id => 10) @builder.to_params.should eq Hash[:id => 5] end - + it "doesn't create params if the value was not set" do @builder.where(:id => 5).to_params.keys.should eq [:id] end - + it "is an empty hash if no params are set" do @builder.to_params.should eq Hash.new end end #---------------------- - + describe "#to_a" do config!(:apiKey => "key") - + before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) @builder.set(:apiKey => "key") end - + it "returns an array of stories if present" do @builder.where(:id => 5).order("date descending").limit(10).offset(100) - + stories = mock_response "json/06_story_multiple_ids.json" do @builder.to_a end - + stories.should be_a Array stories.should_not be_empty stories.first.should be_a NPR::Story end - + it "returns an empty array if no list or no stories were found" do @builder.where(:id => 5).order("date descending").limit(10).offset(100) - + stories = mock_response "json/05_no_api_key.json" do @builder.to_a end - + stories.should be_a Array stories.should be_empty end end #---------------------- - + describe "#query" do config!(:apiKey => "key") - + before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "sends off a query and returns the response object" do response = mock_response "json/01_story_full_media.json" do @builder.where(:id => 100).query end - + response.should be_a NPR::API::Response - end + end end - + #---------------------- - + describe "#set" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "sets arbitrary parameters" do @builder.set(:whatever => "something cool") @builder.builder[:extra].should eq Hash[ :whatever => "something cool" ] end - + it "returns itself" do @builder.set(:a => "b").should eq @builder end end - + #---------------------- describe "#where" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "adds the conditions to the query builder" do @builder.where(:id => 9999) @builder.where(:origId => 100) @builder.builder.should eq Hash[ :conditions => { :id => 9999, :origId => 100 }] end - + it "returns itself" do @builder.where(:id => 0).should eq @builder end end - + #---------------------- - + describe "#order" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "adds the order to the query builder" do @builder.order("date descending") @builder.builder.should eq Hash[:order => "date descending"] end - + it "returns itself" do @builder.order("date ascending").should eq @builder end end - + #---------------------- - + describe "#limit" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "adds the limit to the query builder" do @builder.limit(10) @builder.builder.should eq Hash[:limit => 10] end - + it "returns itself" do @builder.limit(0).should eq @builder end end - + #---------------------- - + describe "#offset" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "adds the offset to the query builder" do @builder.offset(100) @builder.builder.should eq Hash[:offset => 100] end - + it "returns itself" do @builder.offset(0).should eq @builder end end - + #---------------------- - + describe "chaining queries" do before :each do @builder = NPR::API::QueryBuilder.new(NPR::Story) end - + it "can chain the queries" do @builder.where(:id => 5).order("date descending").limit(10).offset(100) @builder.builder.should eq Hash[ :conditions => { :id => 5 }, :order => "date descending",