analytics / test /plausible /stats /json-schema /utils_test.exs
Leon4gr45's picture
Upload folder using huggingface_hub (part 5)
c9c49ab verified
Raw
History Blame Contribute Delete
1.4 kB
defmodule Plausible.Stats.JSONSchema.UtilsTest do
use ExUnit.Case, async: true
alias Plausible.Stats.JSONSchema
describe "traversing" do
test "transform 'fn value -> value end' does not drop anything" do
json = %{foo: %{bar: [0, ""], baz: nil, pax: %{}}}
assert JSONSchema.Utils.traverse(json, fn value -> value end) == json
end
test "can remove specific items, keeping the original order of lists" do
assert JSONSchema.Utils.traverse(
%{
foo: [
"a",
%{type: "string", "$comment": "only :internal"},
%{type: "number"}
]
},
fn
%{"$comment": "only :internal"} -> :remove
value -> value
end
) == %{foo: ["a", %{type: "number"}]}
end
test "can transform specific items" do
assert JSONSchema.Utils.traverse(
%{
foo: [
%{type: "string", "$comment": "anything"},
%{type: "number"}
]
},
fn
%{"$comment": "anything"} -> %{type: "number", "$comment": "transformed"}
value -> value
end
) == %{foo: [%{type: "number", "$comment": "transformed"}, %{type: "number"}]}
end
end
end