From 9ad2e84e8165767506c6ddb7dbc3b8278181ad3d Mon Sep 17 00:00:00 2001 From: Ivan Sokolov Date: Tue, 22 Aug 2023 21:52:33 +0300 Subject: [PATCH] Fix explosion of empty lists in queries --- lib/yuri_template/query_expander.ex | 3 +++ test/yuri_template/query_expander_test.exs | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/lib/yuri_template/query_expander.ex b/lib/yuri_template/query_expander.ex index c1f1efa..a7d451f 100644 --- a/lib/yuri_template/query_expander.ex +++ b/lib/yuri_template/query_expander.ex @@ -28,6 +28,9 @@ defmodule YuriTemplate.QueryExpander do value = if is_map(value), do: Enum.to_list(value), else: value case value do + [] -> + acc + [{k1, v1} | kvs] -> Enum.reduce( kvs, diff --git a/test/yuri_template/query_expander_test.exs b/test/yuri_template/query_expander_test.exs index f2263a5..66436b5 100644 --- a/test/yuri_template/query_expander_test.exs +++ b/test/yuri_template/query_expander_test.exs @@ -21,4 +21,11 @@ defmodule YuriTemplate.QueryExpanderTest do {"{?keys,who}", "?keys=semi,%3B,dot,.,comma,%2C&who=fred"}, {"{?list,half}", "?list=red,green,blue&half=50%25"} ] + + test "empty keys explode" do + YuriTemplate.expand!( + "/category/{category_id}/{category_transliterate}/{page}{?specs*,per_page,sort,order}", + %{category_id: "1", category_transliterate: "x", page: "2", specs: []} + ) == "/category/1/x/2" + end end