From dffb473fdbbd97cd594add62d829d4c4d64fa80a Mon Sep 17 00:00:00 2001 From: Alberto Pellizzon Date: Wed, 16 Sep 2015 08:45:21 +0200 Subject: [PATCH 1/2] Add dynamic query paramters support --- lib/poisol/stub/request/query_builder.rb | 14 ++++++++++++-- spec/functional/query/query_explicit_spec.rb | 11 +++++++++++ spec/functional/query/query_implicit_spec.rb | 3 --- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/poisol/stub/request/query_builder.rb b/lib/poisol/stub/request/query_builder.rb index c94042b..77b5d6c 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 + 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..b1ac970 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 - From cdec678faacff624f09866ee5b16815433d72d62 Mon Sep 17 00:00:00 2001 From: Alberto Pellizzon Date: Wed, 16 Sep 2015 09:08:56 +0200 Subject: [PATCH 2/2] Allow symbols in witouth method --- lib/poisol/stub/request/query_builder.rb | 2 +- spec/functional/query/query_explicit_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/poisol/stub/request/query_builder.rb b/lib/poisol/stub/request/query_builder.rb index 77b5d6c..32dc3cb 100644 --- a/lib/poisol/stub/request/query_builder.rb +++ b/lib/poisol/stub/request/query_builder.rb @@ -16,7 +16,7 @@ def generate_query_methods end define_method('without') do |key| - @request.query.delete key + @request.query.delete key.to_s self end end diff --git a/spec/functional/query/query_explicit_spec.rb b/spec/functional/query/query_explicit_spec.rb index b1ac970..1126ae9 100644 --- a/spec/functional/query/query_explicit_spec.rb +++ b/spec/functional/query/query_explicit_spec.rb @@ -25,7 +25,7 @@ end it "removes default query params" do - Book.new.without('author').build() + 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