Tests for needs_reset base case

pull/1093/head
Rick Carlino 2019-12-19 14:13:52 -06:00 committed by Connor Rigby
parent d9fddde3e7
commit 27fb2d210c
3 changed files with 50 additions and 8 deletions

View File

@ -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)

View File

@ -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

View File

@ -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