diff --git a/farmbot_core/lib/farmbot_core/asset_workers/device_worker.ex b/farmbot_core/lib/farmbot_core/asset_workers/device_worker.ex index 3eb1e5c0..fe643794 100644 --- a/farmbot_core/lib/farmbot_core/asset_workers/device_worker.ex +++ b/farmbot_core/lib/farmbot_core/asset_workers/device_worker.ex @@ -27,13 +27,7 @@ defimpl FarmbotCore.AssetWorker, for: FarmbotCore.Asset.Device do |> AST.Factory.rpc_request("RESET_DEVICE_NOW") |> AST.Factory.factory_reset("farmbot_os") - case FarmbotCeleryScript.execute(ast, make_ref()) do - :ok -> - :ok - - {:error, reason} -> - FarmbotCore.Logger.error(1, "error executing #{state.pin_binding}: #{reason}") - end + :ok = FarmbotCeleryScript.execute(ast, make_ref()) {:noreply, state} end @@ -42,6 +36,10 @@ defimpl FarmbotCore.AssetWorker, for: FarmbotCore.Asset.Device do {:noreply, state} end + def handle_info({:step_complete, _ref, _}, state) do + {:noreply, state} + end + def handle_cast({:new_data, new_device}, old_device) do _ = log_changes(new_device, old_device) send(self(), :check_factory_reset) diff --git a/farmbot_core/test/asset_workers/device_worker_test.exs b/farmbot_core/test/asset_workers/device_worker_test.exs new file mode 100644 index 00000000..3864399c --- /dev/null +++ b/farmbot_core/test/asset_workers/device_worker_test.exs @@ -0,0 +1,26 @@ +defmodule FarmbotCore.DeviceWorkerTest do + use ExUnit.Case, async: false + alias Farmbot.TestSupport.AssetFixtures + alias FarmbotCore.Asset.Device + alias FarmbotCore.AssetWorker + alias Farmbot.TestSupport.CeleryScript.TestSysCalls + + describe "devices" do + test "updates device triggering " do + {:ok, _} = TestSysCalls.checkout() + test_pid = self() + params = %{needs_reset: true} + assert %Device{} = dev = AssetFixtures.device(params) + + :ok = + TestSysCalls.handle(TestSysCalls, fn + kind, args -> + send(test_pid, {kind, args}) + :ok + end) + + {:ok, _pid} = AssetWorker.start_link(dev, []) + assert_receive {:factory_reset, ["farmbot_os"]} + end + end +end diff --git a/test/support/asset_fixtures.ex b/test/support/asset_fixtures.ex index 15c2ce5e..09fc6aa0 100644 --- a/test/support/asset_fixtures.ex +++ b/test/support/asset_fixtures.ex @@ -1,6 +1,14 @@ defmodule Farmbot.TestSupport.AssetFixtures do alias FarmbotCore.Asset - alias FarmbotCore.Asset.{Repo, FarmEvent, FbosConfig, Regimen, Sequence} + + alias FarmbotCore.Asset.{ + Device, + FarmEvent, + FbosConfig, + Regimen, + Repo, + Sequence + } def regimen_instance(regimen_params, farm_event_params, params \\ %{}) do regimen = regimen(regimen_params) @@ -92,4 +100,14 @@ defmodule Farmbot.TestSupport.AssetFixtures do |> FarmEvent.changeset(params) |> Repo.insert!() end + + def device(params \\ %{}) do + defaults = %{id: :rand.uniform(1_000_000), monitor: false} + params = Map.merge(defaults, params) + + Device + |> struct() + |> Device.changeset(params) + |> Ecto.Changeset.apply_changes() + end end