diff --git a/lib/statifier/actions/assign_action.ex b/lib/statifier/actions/assign_action.ex index 6a04886..24e18bc 100644 --- a/lib/statifier/actions/assign_action.ex +++ b/lib/statifier/actions/assign_action.ex @@ -94,16 +94,13 @@ defmodule Statifier.Actions.AssignAction do {:error, reason} -> # Create error.execution event per SCXML specification - error_event = %Event{ - name: "error.execution", - data: %{ + error_event = + Event.internal("error.execution", %{ "reason" => inspect(reason), "type" => "assign.execution", "location" => assign_action.location, "expr" => assign_action.expr - }, - origin: :internal - } + }) # Log the error and generate error.execution event per SCXML spec state_chart diff --git a/lib/statifier/datamodel.ex b/lib/statifier/datamodel.ex index acfde52..5059c3f 100644 --- a/lib/statifier/datamodel.ex +++ b/lib/statifier/datamodel.ex @@ -102,13 +102,13 @@ defmodule Statifier.Datamodel do Set a value at a nested path in the datamodel. Takes a datamodel, a list of path components (keys), and a value. - Creates intermediate maps as needed for nested assignment. + Does not create intermediate maps as needed for nested assignment. ## Examples iex> datamodel = %{} iex> Statifier.Datamodel.put_in_path(datamodel, ["user", "name"], "John") - {:ok, %{"user" => %{"name" => "John"}}} + {:error, "Cannot assign to nested path: 'user' does not exist"} iex> datamodel = %{"user" => %{"age" => 30}} iex> Statifier.Datamodel.put_in_path(datamodel, ["user", "name"], "Jane") diff --git a/test/statifier/datamodel_test.exs b/test/statifier/datamodel_test.exs index 9e8041b..7f5f880 100644 --- a/test/statifier/datamodel_test.exs +++ b/test/statifier/datamodel_test.exs @@ -10,6 +10,8 @@ defmodule Statifier.DatamodelTest do StateChart } + doctest Statifier.Datamodel + # Helper function to initialize a state chart from XML defp initialize_from_xml(xml) do {:ok, document, _warnings} = Statifier.parse(xml)