From 6810583771401520df250c1a1a057ce9bdf22c3c Mon Sep 17 00:00:00 2001 From: hswick Date: Tue, 25 Sep 2018 15:38:19 -0500 Subject: [PATCH] Properly returning/formatting the event log --- lib/exw3.ex | 15 ++++++++++++--- test/exw3_test.exs | 17 ++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/exw3.ex b/lib/exw3.ex index fe7b262..5c66e81 100644 --- a/lib/exw3.ex +++ b/lib/exw3.ex @@ -443,7 +443,7 @@ defmodule ExW3 do Enum.zip(names, ExW3.decode_event(data, signature)) |> Enum.into(%{}) end - defp format_log(log, event_attributes) do + defp format_log_data(log, event_attributes) do non_indexed_fields = extract_non_indexed_fields( Map.get(log, "data"), @@ -468,7 +468,9 @@ defmodule ExW3 do %{} end - Map.merge(indexed_fields, non_indexed_fields) + new_data = Map.merge(indexed_fields, non_indexed_fields) + + Map.put(log, "data", new_data) end defp loop(state) do @@ -481,7 +483,14 @@ defmodule ExW3 do unless logs == [] do Enum.each(logs, fn log -> - send filter_attributes[:pid], {:event, {filter_id, format_log(log, event_attributes)}} + formatted_log = + Enum.reduce([ + ExW3.keys_to_decimal(log, ["blockNumber", "logIndex", "transactionIndex", "transactionLogIndex"]), + format_log_data(log, event_attributes) + ], + &Map.merge/2) + + send filter_attributes[:pid], {:event, {filter_id, formatted_log}} end) end loop(state) diff --git a/test/exw3_test.exs b/test/exw3_test.exs index 5d93cc7..6bc542e 100644 --- a/test/exw3_test.exs +++ b/test/exw3_test.exs @@ -224,10 +224,12 @@ defmodule EXW3Test do state = Agent.get(agent, fn list -> list end) event_log = Enum.at(state, 0) + assert event_log |> is_map - - assert Map.get(event_log, "num") == 42 - assert ExW3.bytes_to_string(Map.get(event_log, "data")) == "Hello, World!" + log_data = Map.get(event_log, "data") + assert log_data |> is_map + assert Map.get(log_data, "num") == 42 + assert ExW3.bytes_to_string(Map.get(log_data, "data")) == "Hello, World!" ExW3.uninstall_filter(filter_id) @@ -255,10 +257,11 @@ defmodule EXW3Test do state = Agent.get(agent, fn list -> list end) event_log = Enum.at(state, 0) assert event_log |> is_map - - assert Map.get(event_log, "num") == 46 - assert ExW3.bytes_to_string(Map.get(event_log, "data")) == "Hello, World!" - assert Map.get(event_log, "otherNum") == 42 + log_data = Map.get(event_log, "data") + assert log_data |> is_map + assert Map.get(log_data, "num") == 46 + assert ExW3.bytes_to_string(Map.get(log_data, "data")) == "Hello, World!" + assert Map.get(log_data, "otherNum") == 42 ExW3.uninstall_filter(indexed_filter_id) end