From af4a01ad965c6b9d4b8b63370d89e167a343db9f Mon Sep 17 00:00:00 2001 From: Ryan Schlesinger Date: Thu, 8 May 2014 10:20:15 -0700 Subject: [PATCH 1/3] Coerce pagination string params --- .../lib/elasticsearch/model/response/pagination.rb | 4 ++-- .../test/unit/response_pagination_kaminari_test.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb index 6aa7f9f08..f2e5eea85 100644 --- a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb +++ b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb @@ -69,7 +69,7 @@ def limit(value) @results = nil @records = nil @response = nil - @per_page = value + @per_page = value.to_i search.definition.update :size => @per_page search.definition.update :from => @per_page * (@page - 1) if @page @@ -83,7 +83,7 @@ def offset(value) @records = nil @response = nil @page = nil - search.definition.update :from => value + search.definition.update :from => value.to_i self end diff --git a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb index 1efdb38c2..8d8b12aa8 100644 --- a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb +++ b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb @@ -104,6 +104,11 @@ def self.document_type; 'bar'; end assert_nil @response.instance_variable_get(:@records) assert_nil @response.instance_variable_get(:@results) end + + should 'coerce string parameters' do + @response.limit("35") + assert_equal 35, @response.search.definition[:size] + end end context "with the page() and limit() methods" do @@ -151,6 +156,11 @@ def self.document_type; 'bar'; end assert_nil @response.instance_variable_get(:@records) assert_nil @response.instance_variable_get(:@results) end + + should 'coerce string parameters' do + @response.offset("35") + assert_equal 35, @response.search.definition[:from] + end end context "total" do From 68c8deab70d31665a6043e1ba7f52fd6af3e22e8 Mon Sep 17 00:00:00 2001 From: Ryan Schlesinger Date: Tue, 13 May 2014 15:25:07 -0700 Subject: [PATCH 2/3] #limit and #offset validate value param --- .../lib/elasticsearch/model/response/pagination.rb | 2 ++ .../test/unit/response_pagination_kaminari_test.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb index f2e5eea85..ce6c8a1f6 100644 --- a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb +++ b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb @@ -66,6 +66,7 @@ def offset_value # Set the "limit" (`size`) value # def limit(value) + return if value.to_i <= 0 @results = nil @records = nil @response = nil @@ -79,6 +80,7 @@ def limit(value) # Set the "offset" (`from`) value # def offset(value) + return if value.to_i <= 0 @results = nil @records = nil @response = nil diff --git a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb index 8d8b12aa8..08c7137fc 100644 --- a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb +++ b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb @@ -109,6 +109,12 @@ def self.document_type; 'bar'; end @response.limit("35") assert_equal 35, @response.search.definition[:size] end + + should 'ignore invalid string parameters' do + @response.limit(35) + @response.limit("asdf") + assert_equal 35, @response.search.definition[:size] + end end context "with the page() and limit() methods" do @@ -161,6 +167,12 @@ def self.document_type; 'bar'; end @response.offset("35") assert_equal 35, @response.search.definition[:from] end + + should 'ignore invalid string parameters' do + @response.offset(35) + @response.offset("asdf") + assert_equal 35, @response.search.definition[:from] + end end context "total" do From c48e1c1b9d0dece662882eb9a7093b9a256ab411 Mon Sep 17 00:00:00 2001 From: Ryan Schlesinger Date: Mon, 11 May 2015 11:52:17 -0700 Subject: [PATCH 3/3] 0 is valid for offset, return self for chaining --- .../lib/elasticsearch/model/response/pagination.rb | 4 ++-- .../test/unit/response_pagination_kaminari_test.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb index ce6c8a1f6..71b7d8669 100644 --- a/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb +++ b/elasticsearch-model/lib/elasticsearch/model/response/pagination.rb @@ -66,7 +66,7 @@ def offset_value # Set the "limit" (`size`) value # def limit(value) - return if value.to_i <= 0 + return self if value.to_i <= 0 @results = nil @records = nil @response = nil @@ -80,7 +80,7 @@ def limit(value) # Set the "offset" (`from`) value # def offset(value) - return if value.to_i <= 0 + return self if value.to_i < 0 @results = nil @records = nil @response = nil diff --git a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb index 08c7137fc..ae9509fb5 100644 --- a/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb +++ b/elasticsearch-model/test/unit/response_pagination_kaminari_test.rb @@ -168,10 +168,10 @@ def self.document_type; 'bar'; end assert_equal 35, @response.search.definition[:from] end - should 'ignore invalid string parameters' do + should 'coerce invalid string parameters' do @response.offset(35) @response.offset("asdf") - assert_equal 35, @response.search.definition[:from] + assert_equal 0, @response.search.definition[:from] end end