Skip to content

Commit 0e0c4e5

Browse files
committed
Co-erce non-present values like false to string
1 parent dc96280 commit 0e0c4e5

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

lib/jsonapi/resource.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,13 @@ def is_filter_relationship?(filter)
895895

896896
def verify_filter(filter, raw, context = nil)
897897
filter_values = []
898+
if raw == true
899+
raw = "true"
900+
elsif raw == false
901+
raw = "false"
902+
else
903+
nil # no-op
904+
end
898905
if raw.present?
899906
begin
900907
filter_values += raw.is_a?(String) ? CSV.parse_line(raw) : [raw]

test/unit/resource/resource_test.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,18 @@ def test_updatable_fields_does_not_include_id
321321
assert(!FelineResource.updatable_fields.include?(:id))
322322
end
323323

324+
def test_verify_filter
325+
resource_klass = PersonResource
326+
context = nil
327+
filter = :name
328+
assert_equal([filter, ["true"]], resource_klass.verify_filter(filter, true, context))
329+
assert_equal([filter, ["false"]], resource_klass.verify_filter(filter, false, context))
330+
assert_equal([filter, ["true"]], resource_klass.verify_filter(filter, "true", context))
331+
assert_equal([filter, ["false"]], resource_klass.verify_filter(filter, "false", context))
332+
assert_equal([filter, []], resource_klass.verify_filter(filter, nil, context))
333+
assert_equal([filter, []], resource_klass.verify_filter(filter, "", context))
334+
end
335+
324336
def test_filter_on_to_many_relationship_id
325337
posts = PostResource.find(:comments => 3)
326338
assert_equal([2], posts.map(&:id))

0 commit comments

Comments
 (0)