Skip to content

Commit 4a21656

Browse files
committed
fix: fixes parsing of sort fields with underscores
1 parent c5e988e commit 4a21656

2 files changed

Lines changed: 4 additions & 1 deletion

File tree

lib/jsonapi/plugs/query_parser.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ defmodule JSONAPI.QueryParser do
182182
|> Enum.map(fn field ->
183183
valid_sort = Keyword.get(opts, :sort, [])
184184
[_, direction, field] = Regex.run(~r/(-?)(\S*)/, field)
185+
field = underscore(field)
185186

186187
unless field in valid_sort do
187188
raise InvalidQuery, resource: config.view.type(), param: field, param_type: :sort

test/jsonapi/plugs/query_parser_test.exs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@ defmodule JSONAPI.QueryParserTest do
4949
end
5050

5151
test "parse_sort/2 turns sorts into valid ecto sorts" do
52-
config = struct(Config, opts: [sort: ~w(name title)], view: MyView)
52+
config = struct(Config, opts: [sort: ~w(name title updated_at)], view: MyView)
5353
assert parse_sort(config, "name,title").sort == [asc: :name, asc: :title]
5454
assert parse_sort(config, "name").sort == [asc: :name]
5555
assert parse_sort(config, "-name").sort == [desc: :name]
5656
assert parse_sort(config, "name,-title").sort == [asc: :name, desc: :title]
57+
assert parse_sort(config, "updatedAt").sort == [asc: :updated_at]
58+
assert parse_sort(config, "-updatedAt").sort == [desc: :updated_at]
5759
end
5860

5961
test "parse_sort/2 raises on invalid sorts" do

0 commit comments

Comments
 (0)