Skip to content

Commit 2cdc6f5

Browse files
Merge pull request #32 from infinitis/master
2 parents 05c44d3 + 952550e commit 2cdc6f5

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

lib/posthog/event.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ defmodule Posthog.Event do
149149
end
150150

151151
@doc false
152+
defp deep_stringify_keys(term) when is_struct(term) do
153+
term |> Map.from_struct |> deep_stringify_keys
154+
end
155+
152156
defp deep_stringify_keys(term) when is_map(term) do
153157
term
154158
|> Enum.map(fn {k, v} -> {to_string(k), deep_stringify_keys(v)} end)

test/posthog/event_test.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ defmodule Posthog.EventTest do
44

55
alias Posthog.Event
66

7+
defstruct [:name]
8+
79
describe "new/4" do
810
test "creates an event with default values" do
911
event = Event.new("test_event", "user_123")
@@ -91,6 +93,15 @@ defmodule Posthog.EventTest do
9193

9294
assert payload.properties["tags"] == ["elixir", "posthog"]
9395
end
96+
97+
test "handles structs in properties" do
98+
event = Event.new("test", "user_123", %{tags: ["elixir", "posthog"], event: %__MODULE__{name: "test"}})
99+
100+
payload = Event.to_api_payload(event)
101+
102+
assert payload.properties["tags"] == ["elixir", "posthog"]
103+
assert payload.properties["event"]["name"] == "test"
104+
end
94105
end
95106

96107
describe "batch_payload/1" do

0 commit comments

Comments
 (0)