diff --git a/lib/poisol/stub/request/query_builder.rb b/lib/poisol/stub/request/query_builder.rb index c94042b..32dc3cb 100644 --- a/lib/poisol/stub/request/query_builder.rb +++ b/lib/poisol/stub/request/query_builder.rb @@ -1,7 +1,7 @@ -module Poisol +module Poisol module QueryBuilder def generate_query_methods - query = @stub_config.request.query + query = @stub_config.request.query query.each do |field| field_name = field[0] define_method("for_#{field[0].underscore}") do |*value| @@ -9,6 +9,16 @@ def generate_query_methods self end end + + define_method('for_custom') do |params| + @request.query.merge!(params) + self + end + + define_method('without') do |key| + @request.query.delete key.to_s + self + end end end end diff --git a/spec/functional/query/query_explicit_spec.rb b/spec/functional/query/query_explicit_spec.rb index 2ea7e18..1126ae9 100644 --- a/spec/functional/query/query_explicit_spec.rb +++ b/spec/functional/query/query_explicit_spec.rb @@ -18,4 +18,15 @@ expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json) end + it "add custom query params" do + Book.new.for_custom(color: 'red').for_author('bha').for_name('don').build() + response = RestClient.get "http://localhost:3030/book",{:params => {:author => 'bha',:name=> 'don',:color=>'red'}} + expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json) + end + + it "removes default query params" do + Book.new.without(:author).build() + response = RestClient.get "http://localhost:3030/book",{:params => {:name=> 'doni'}} + expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json) + end end diff --git a/spec/functional/query/query_implicit_spec.rb b/spec/functional/query/query_implicit_spec.rb index fc68865..4f9bad4 100644 --- a/spec/functional/query/query_implicit_spec.rb +++ b/spec/functional/query/query_implicit_spec.rb @@ -17,7 +17,4 @@ response = RestClient.get "http://localhost:3030/book",{:params => {:author=>'val',:name=>"doni"}} expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json) end - - end -