Fix #3430: Accept the search[id] param in all controllers.

* Allow every controller to take the `search[id]` param.

* Parse the `search[id]` param the same way that the `id:<N>` metatag is
  parsed. So `search[id]=1,2,3`, `search[id]=<42`, `search[id]=1..10`, for
  example, are all accepted.
This commit is contained in:
evazion
2017-12-17 16:58:34 -06:00
parent 49577e3fac
commit 0ca726802f
28 changed files with 72 additions and 58 deletions

View File

@@ -0,0 +1,19 @@
require 'test_helper'
class ApplicationRecordTest < ActiveSupport::TestCase
setup do
@tags = FactoryGirl.create_list(:tag, 3, post_count: 1)
end
context "ApplicationRecord#search" do
should "support the id param" do
assert_equal([@tags.first], Tag.search(id: @tags.first.id))
end
should "support ranges in the id param" do
assert_equal(@tags.reverse, Tag.search(id: ">=1"))
assert_equal(@tags.reverse, Tag.search(id: "#{@tags[0].id}..#{@tags[2].id}"))
assert_equal(@tags.reverse, Tag.search(id: @tags.map(&:id).join(",")))
end
end
end